-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplayers.py
67 lines (48 loc) · 1.81 KB
/
players.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
# -*- coding: utf-8 -*-
import rules
import random
import config
VALS = (1, 1, 1, 1, 1, 1, 1, 1, 1, 2)
def cases_possibles(board):
return [(i, j) for i, line in enumerate(board) for j, col in enumerate(line) if col == 0] #Liste les cases sur lesquelles on pourra placer une tuile
def random_direction(board):
l = [d for d in rules.DIRECTIONS if rules.move_dir_possible(d, board)]
if l:
return random.choice(l)
def random_tile(board):
possible = cases_possibles(board)
if possible:
coup = random.choice(VALS)
case = random.choice(possible)
return (case[0], case[1], coup)
def first_direction(board):
for d in rules.DIRECTIONS:
if rules.move_dir_possible(d, board):
return d
def first_tile(board):
for i in range(rules.LAST, -1, -1):
for j in range(rules.LAST, -1, -1):
if board[i][j] == 0:
return (i, j, 2)
#----------------------------basic------------------------------
def basic_coop_direction(board):
possibles = [d for d in rules.DIRECTIONS if rules.move_dir_possible(d, board)]
if possibles != [3] and 3 in possibles:
possibles.remove(3) #Ne jamais jouer haut quand on peut l'éviter
score = {basic_coop_score(rules.move_dir(d, board)): d for d in possibles}
return score[max(score)]
def basic_coop_tile(board):
top_score = 0
i_max, j_max = 0, 0
for i, line in enumerate(board):
for j, valeur in enumerate(line):
if valeur == 0:
board[i][j] = 2
test = basic_coop_score(board)
board[i][j] = 0
if top_score < test:
top_score = test
i_max, j_max = i, j
return (i_max, j_max, 2)
def basic_coop_score(board):
return rules.level(board)