-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrandom-agent.py
58 lines (49 loc) · 1.75 KB
/
random-agent.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
import board as b
from random import randrange
class Player(object):
"""
An agent that can play Watch Your Back.
This agent makes random valid actions on its turn
"""
def __init__(self, colour):
"""
:param colour: either 'white' or 'black'
"""
# set up a new board
self.board = b.Board()
# set up team allegiances
self.team = b.BLACK
if colour == 'white':
self.team = b.WHITE
elif colour == 'black':
self.team = b.BLACK
else:
raise ValueError("colour must be 'white' or 'black'")
self.enemy_team = b.Board.get_opponent_team(self.team)
def action(self, turns):
"""
called by the referee to request an action from the player
:param turns: number of turns that have taken place
since start of current game phase
:return: next action
"""
assert turns == self.board.turn_count
# gets list of all actions
actions = self.board.get_all_actions(self.team)
# print(self.team, "can choose one of ", actions)
our_action = None # will forfeit turn if no actions
if len(actions) > 0:
# our_action = actions[0] # choose first action
# choose random action
our_action = actions[randrange(0, len(actions))]
# Update the board with our action
self.board.do_action(our_action, self.team)
return our_action
def update(self, action):
"""
Inform player about opponent's most recent move
:param action: opponent's action
:return: Nothing
"""
# Update our board with the opponent's action
self.board.do_action(action, self.enemy_team)