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 game_direction_first(dir_player, tile_player, board): i = 0 while not rules.game_over(board): direction = dir_player(board) assert (direction is not None) #On peut jouer assert (0 <= direction < 4) #On ne peut jouer que 4 directions assert (rules.move_dir_possible(direction, board)) board = rules.move_dir(direction, board) tuile = tile_player(board) assert (tuile is not None) rules.move_tile(tuile, board) i += 1 return (1 << rules.max_tile(board), i) #1 << a is 2 ** a
def test_move_dir_possible(direction, board, expected): if not STAGE_SLIDE_IS_OVER: assert_equal(rules.move_dir_possible(direction, board), expected) if expected: start_test("game not over", INDENT) assert not rules.game_over(board) return start_test("mimicking with rules.move_dir", INDENT) xboard = [board[i].copy() for i in range(rules.SIZE)] res = rules.move_dir(direction, xboard) if expected: if res == xboard: print("Error of rules.slide on input", xboard) print("Output is the same while it should be different") assert res != xboard elif res is not xboard: print("Error of rules.slide on input", xboard) print("Output is ", xboard) assert xboard is board start_test("purity", INDENT) assert_equal(board, xboard)
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 first_direction(board): for d in rules.DIRECTIONS: if rules.move_dir_possible(d, board): return d