-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathXiangqiPiece.cpp
106 lines (97 loc) · 1.98 KB
/
XiangqiPiece.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "XiangqiPiece.h"
XiangqiPiece::XiangqiPiece(PieceType pieceType, PieceColour pieceColour) : KanjiPiece(pieceType, pieceColour)
{
}
XiangqiPiece::~XiangqiPiece()
{
}
void XiangqiPiece::Promote(PieceType pieceType)
{
}
std::string XiangqiPiece::StringCode()
{
switch (_pieceType)
{
case King:
return "K";
case Silver:
return "A";
case Rook:
return "R";
case Cannon:
return "C";
case Knight:
return "H";
case Elephant:
return "E";
case Pawn:
return "P";
default:
return "";
}
}
PieceType XiangqiPiece::FromStringCode(const std::string& code)
{
static const std::unordered_map<std::string, PieceType> codeToPieceType = {
{"K", King},
{"A", Silver},
{"R", Rook},
{"C", Cannon},
{"N", Knight},
{"H", Knight},
{"B", Elephant},
{"E", Elephant},
{"P", Pawn}
};
const auto it = codeToPieceType.find(code);
return it != codeToPieceType.end() ? it->second : None;
}
std::string XiangqiPiece::KanjiStringCode()
{
switch (_pieceType)
{
case King:
return _pieceColour == Black ? "將" : "帥";
case Silver:
return _pieceColour == Black ? "士" : "仕";
case Rook:
return _pieceColour == Black ? "車" : "俥";
case Cannon:
return _pieceColour == Black ? "砲" : "炮";
case Knight:
return _pieceColour == Black ? "馬" : "傌";
case Elephant:
return _pieceColour == Black ? "象" : "相";
case Pawn:
return _pieceColour == Black ? "卒" : "兵";
default:
return "";
}
}
std::string XiangqiPiece::GetKanjiImageFileName()
{
const std::string colour = _pieceColour == White ? "r" : "b";
switch (_pieceType)
{
case King:
return colour + "king.png";
case Rook:
return colour + "chariot.png";
case Cannon:
return colour + "cannon.png";
case Elephant:
return colour + "elephant.png";
case Silver:
return colour + "advisor.png";
case Pawn:
return colour + "pawn.png";
case Knight:
return colour + "horse.png";
default:
return "";
}
}
std::string XiangqiPiece::GetKanjiImageFileName2()
{
return GetKanjiImageFileName();
}