-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPiece.h
81 lines (75 loc) · 2.33 KB
/
Piece.h
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
#include <cstdint>
#include <string>
#include <cmath>
#include <stdexcept>
enum ChessPieceValue{
Pawn = 100,
Knight = 320,
Bishop = 325,
Rook = 500,
Queen = 950,
King = 10000,
Empty = 0
};
int16_t get_piece_index(int piece_value) {
int absolute_piece_value = std::abs(piece_value);
switch (absolute_piece_value) {
case Pawn: return 5;
case Knight: return 4;
case Bishop: return 3;
case Rook: return 2;
case Queen: return 1;
case King: return 0;
}
return 0;
}
std::string get_piece_unicode_symbol(int16_t piece_value) {
int absolute_piece_value = std::abs(piece_value);
switch (absolute_piece_value) {
case King: return "♚";
case Queen: return "♛";
case Rook: return "♜";
case Knight: return "♞";
case Bishop: return "♝";
case Pawn: return "♟";
case Empty: return "♢ ";
default:
throw std::invalid_argument("Unsupported piece value");
}
}
std::string get_piece_symbol(int piece_value) {
switch (piece_value) {
case Pawn: return "P";
case -Pawn: return "p";
case Knight: return "N";
case -Knight:return "n";
case Bishop: return "B";
case -Bishop:return "b";
case Rook: return "R";
case -Rook: return "r";
case Queen: return "Q";
case -Queen: return "q";
case King: return "K";
case -King: return "k";
default:
throw std::invalid_argument("Unsupported piece value");
}
}
int16_t get_piece_value_by_symbol(char piece_symbol) {
switch (piece_symbol) {
case 'P': return Pawn;
case 'p': return -Pawn;
case 'N': return Knight;
case 'n': return -Knight;
case 'B': return Bishop;
case 'b': return -Bishop;
case 'R': return Rook;
case 'r': return -Rook;
case 'Q': return Queen;
case 'q': return -Queen;
case 'K': return King;
case 'k': return -King;
default:
throw std::invalid_argument("Unsupported piece symbol");
}
}