forked from michelleblom/AZUL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnaive_player.py
48 lines (42 loc) · 1.8 KB
/
naive_player.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
# Written by Michelle Blom, 2019
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
from model import *
from utils import *
class NaivePlayer(Player):
def __init__(self, _id):
super().__init__(_id)
def SelectMove(self, moves, game_state):
# Select move that involves placing the most number of tiles
# in a pattern line. Tie break on number placed in floor line.
most_to_line = -1
corr_to_floor = 0
best_move = None
for mid,fid,tgrab in moves:
if most_to_line == -1:
best_move = (mid,fid,tgrab)
most_to_line = tgrab.num_to_pattern_line
corr_to_floor = tgrab.num_to_floor_line
continue
if tgrab.num_to_pattern_line > most_to_line:
best_move = (mid,fid,tgrab)
most_to_line = tgrab.num_to_pattern_line
corr_to_floor = tgrab.num_to_floor_line
elif tgrab.num_to_pattern_line == most_to_line and \
tgrab.num_to_pattern_line < corr_to_floor:
best_move = (mid,fid,tgrab)
most_to_line = tgrab.num_to_pattern_line
corr_to_floor = tgrab.num_to_floor_line
return best_move