-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGame.py
164 lines (138 loc) · 4.9 KB
/
Game.py
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
class Game():
"""
This class specifies the base Game class. To define your own game, subclass
this class and implement the functions below. This works when the game is
two-player, adversarial and turn-based.
Use 1 for player1 and -1 for player2.
See othello/OthelloGame.py for an example implementation.
"""
def __init__(self):
pass
def getInitBoard(self):
"""
Returns:
startBoard: a representation of the board (ideally this is the form
that will be the input to your neural network)
"""
pass
def getBoardSize(self):
"""
Returns:
(x,y): a tuple of board dimensions
"""
pass
def getActionSize(self):
"""
Returns:
actionSize: number of all possible actions
"""
pass
# def getNextState(self, board, player, action):
# """
# Input:
# board: current board
# player: current player (1 or -1)
# action: action taken by current player
# Returns:
# nextBoard: board after applying action
# nextPlayer: player who plays in the next turn (should be -player)
# """
# pass
def getNextState(self, board, action):
"""
Input:
board: current board
player: current player (1 or -1)
action: action taken by current player
Returns:
nextBoard: board after applying action
nextPlayer: player who plays in the next turn (should be -player)
"""
pass
# def getValidMoves(self, board, player):
# """
# Input:
# board: current board
# player: current player
# Returns:
# validMoves: a binary vector of length self.getActionSize(), 1 for
# moves that are valid from the current board and player,
# 0 for invalid moves
# """
# pass
def getValidMoves(self, board):
"""
Input:
board: current board
Returns:
validMoves: a binary vector of length self.getActionSize(), 1 for
moves that are valid from the current board,
0 for invalid moves
"""
pass
# def getGameEnded(self, board, player):
# """
# Input:
# board: current board
# player: current player (1 or -1)
# Returns:
# r: 0 if game has not ended. 1 if player won, -1 if player lost,
# small non-zero value for draw.
# """
# pass
def getGameEnded(self, board):
"""
Input:
board: current board
Returns:
r: 0 if game has not ended. 1 if player won, -1 if player lost,
small non-zero value for draw.
"""
pass
# def getCanonicalForm(self, board, player):
# """
# Input:
# board: current board
# player: current player (1 or -1)
# Returns:
# canonicalBoard: returns canonical form of board. The canonical form
# should be independent of player. For e.g. in chess,
# the canonical form can be chosen to be from the pov
# of white. When the player is white, we can return
# board as is. When the player is black, we can invert
# the colors and return the board.
# """
# pass
def getCanonicalForm(self, board):
"""
Input:
board: current board
Returns:
canonicalBoard: returns canonical form of board. The canonical form
should be independent of player. For e.g. in chess,
the canonical form can be chosen to be from the pov
of white. When the player is white, we can return
board as is. When the player is black, we can invert
the colors and return the board.
"""
pass
def getSymmetries(self, board, pi):
"""
Input:
board: current board
pi: policy vector of size self.getActionSize()
Returns:
symmForms: a list of [(board,pi)] where each tuple is a symmetrical
form of the board and the corresponding pi vector. This
is used when training the neural network from examples.
"""
pass
def stringRepresentation(self, board):
"""
Input:
board: current board
Returns:
boardString: a quick conversion of board to a string format.
Required by MCTS for hashing.
"""
pass