コード例 #1
0
 def test_game_get_true_mouthe_pos(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 2 - 1, game.ky - 1)),
         (game.kx * 2, game.ky))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 2 + 1, game.ky - 1)),
         (game.kx * 2, game.ky))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 2 - 1, game.ky + 1)),
         (game.kx * 2, game.ky))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 2 + 1, game.ky + 1)),
         (game.kx * 2, game.ky))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 5 - 1, game.ky * 2 - 1)),
         (game.kx * 5, game.ky * 2))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 5 + 1, game.ky * 2 - 1)),
         (game.kx * 5, game.ky * 2))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 5 - 1, game.ky * 2 + 1)),
         (game.kx * 5, game.ky * 2))
     self.assertEqual(
         game.get_true_mouthe_pos((game.kx * 5 + 1, game.ky * 2 + 1)),
         (game.kx * 5, game.ky * 2))
コード例 #2
0
 def test_game_computer_turn_cant_move(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 2, game.ky)] = Computer_checkers(game.kx * 2,
                                                              game.ky,
                                                              game.kx,
                                                              (255, 0, 0))
     game.objects[(game.kx * 2, game.ky * 3)] = Player_checkers(game.kx * 2,
                                                                game.ky * 3,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 2, game.ky * 5)] = Player_checkers(game.kx * 2,
                                                                game.ky * 5,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 5, game.ky * 2)] = Player_checkers(game.kx * 5,
                                                                game.ky * 2,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 8, game.ky * 3)] = Player_checkers(game.kx * 8,
                                                                game.ky * 3,
                                                                game.kx,
                                                                (0, 0, 0))
     game.computer_turn()
     self.assertTrue(game.objects[(game.kx * 2, game.ky)] is not None)
コード例 #3
0
 def test_game_handle_mouse_down_get_active_checker(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 2, game.ky)] = Player_checkers(game.kx * 2,
                                                            game.ky,
                                                            game.kx,
                                                            (0, 0, 0))
     game.handle_mouse_down((game.kx * 2, game.ky))
     self.assertEqual(game.active_checker,
                      game.objects.get((game.kx * 2, game.ky)))
コード例 #4
0
 def test_game_computer_turn_move_and_eat_checker_up_right(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 2, game.ky * 5)] = Computer_checkers(
         game.kx * 2, game.ky * 5, game.kx, (255, 0, 0))
     game.objects[(game.kx * 5, game.ky * 4)] = Player_checkers(game.kx * 5,
                                                                game.ky * 4,
                                                                game.kx,
                                                                (0, 0, 0))
     game.computer_turn()
     self.assertTrue(game.objects[(game.kx * 5, game.ky * 4)] is None)
コード例 #5
0
 def test_game_computer_turn_move_and_eat_checker_down_left_king(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 8, game.ky * 3)] = Computer_checkers(
         game.kx * 8, game.ky * 3, game.kx, (255, 0, 0))
     game.objects[(game.kx * 8, game.ky * 3)].checkers_type = "king"
     game.objects[(game.kx * 5, game.ky * 4)] = Player_checkers(game.kx * 5,
                                                                game.ky * 4,
                                                                game.kx,
                                                                (0, 0, 0))
     game.computer_turn()
     self.assertTrue(game.objects[(game.kx * 5, game.ky * 4)] is None)
コード例 #6
0
 def test_game_computer_turn_move_checker(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 5, game.ky * 2)] = Computer_checkers(
         game.kx * 5, game.ky * 2, game.kx, (255, 0, 0))
     game.objects[(game.kx * 5, game.ky * 6)] = Player_checkers(game.kx * 5,
                                                                game.ky * 6,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 5, game.ky * 8)] = Player_checkers(game.kx * 5,
                                                                game.ky * 8,
                                                                game.kx,
                                                                (0, 0, 0))
     game.computer_turn()
     game.computer_turn()
     self.assertEqual(None, game.objects.get((game.kx * 5, game.ky * 4)))
コード例 #7
0
 def test_game_computer_turn_move_checker_become_king(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 5, game.ky * 18)] = Computer_checkers(
         game.kx * 5, game.ky * 18, game.kx, (255, 0, 0))
     game.computer_turn()
     game.computer_turn()
     game.computer_turn()
     self.assertTrue(True)
コード例 #8
0
 def test_game_run_computer(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.player_c = 1
     game.computer_c = 1
     game.objects[(game.kx * 5, game.ky * 2)] = Computer_checkers(
         game.kx * 5, game.ky * 2, game.kx, (255, 0, 0))
     game.objects[(game.kx * 5, game.ky * 4)] = Player_checkers(game.kx * 5,
                                                                game.ky * 4,
                                                                game.kx,
                                                                (0, 0, 0))
     game.turn = "Computer"
     game.run_computer()
     self.assertTrue(True)
コード例 #9
0
 def test_game_handle_mouse_down_move_checker_up_right(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 5, game.ky * 4)] = Player_checkers(game.kx * 5,
                                                                game.ky * 4,
                                                                game.kx,
                                                                (0, 0, 0))
     game.handle_mouse_down((game.kx * 5, game.ky * 4))
     game.handle_mouse_down((game.kx * 8, game.ky * 3))
     self.assertEqual(game.active_checker, None)
     game.handle_mouse_down((game.kx * 8, game.ky * 3))
     self.assertEqual(game.active_checker,
                      game.objects.get((game.kx * 8, game.ky * 3)))
コード例 #10
0
ファイル: TicTacToe.py プロジェクト: karsta26/Tic-Tac-Toe
    def __init__(self):
        self.game = Game()
        self.size = self.game.size

        low = np.array([[0 for _ in range(self.size)] for _ in range(self.size)])
        low = np.array([low, low])

        high = np.array([[1 for _ in range(self.size)] for _ in range(self.size)])
        high = np.array([high, high])

        self.action_space = spaces.Discrete(self.size * self.size)
        self.observation_space = spaces.Box(low, high)

        self.seed()
        self.state = low

        self.rewards = {'win': 10, 'lost': -10, 'normal': 0, 'advantage': 5, 'tie': 0}
        self.model = ModelSource()
コード例 #11
0
 def test_game_handle_mouse_down_move_and_eat_checker_up_right_king(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.objects[(game.kx * 2, game.ky * 5)] = Player_checkers(game.kx * 2,
                                                                game.ky * 5,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 2, game.ky * 5)].checkers_type = "king"
     game.objects[(game.kx * 5, game.ky * 4)] = Computer_checkers(
         game.kx * 5, game.ky * 4, game.kx, (255, 0, 0))
     game.handle_mouse_down((game.kx * 2, game.ky * 5))
     game.handle_mouse_down((game.kx * 8, game.ky * 3))
     self.assertEqual(game.active_checker, None)
     game.handle_mouse_down((game.kx * 8, game.ky * 3))
     self.assertEqual(game.active_checker,
                      game.objects.get((game.kx * 8, game.ky * 3)))
コード例 #12
0
 def test_game_handle_mouse_event(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.handle_mouse_event(pygame.MOUSEBUTTONDOWN, (0, 0))
     self.assertTrue(True)
コード例 #13
0
 def test_game_handle_events(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.handle_events()
     self.assertTrue(True)
コード例 #14
0
 def test_game_run_heroku(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.objects = dict()
     game.player_c = 1
     game.computer_c = 1
     game.objects[(game.kx * 5, game.ky * 4)] = Player_checkers(game.kx * 5,
                                                                game.ky * 4,
                                                                game.kx,
                                                                (0, 0, 0))
     game.objects[(game.kx * 8, game.ky)] = Computer_checkers(game.kx * 8,
                                                              game.ky,
                                                              game.kx,
                                                              (255, 0, 0))
     game.handle_mouse_down((game.kx * 5, game.ky * 4))
     game.handle_events = MagicMock(
         return_value=game.handle_mouse_down((game.kx * 5, game.ky * 2)))
     conf = dict()
     conf['0'] = str(775 - game.kx * 8) + '-' + str(
         800 - game.ky) + '-' + str(
         775 - game.kx * 2) + '-' + str(800 - game.ky * 3) + '-0'
     game.get_config = MagicMock(return_value=conf)
     game.run_heroku()
     self.assertTrue(True)
コード例 #15
0
 def test_game_draw(self):
     x_size = 775
     y_size = 800
     game = Game("Checkers 100", x_size, y_size, "1.png", 120)
     game.draw()
     self.assertTrue(True)
コード例 #16
0
ファイル: TicTacToe.py プロジェクト: karsta26/Tic-Tac-Toe
class TicTacToe(gym.Env):

    def __init__(self):
        self.game = Game()
        self.size = self.game.size

        low = np.array([[0 for _ in range(self.size)] for _ in range(self.size)])
        low = np.array([low, low])

        high = np.array([[1 for _ in range(self.size)] for _ in range(self.size)])
        high = np.array([high, high])

        self.action_space = spaces.Discrete(self.size * self.size)
        self.observation_space = spaces.Box(low, high)

        self.seed()
        self.state = low

        self.rewards = {'win': 10, 'lost': -10, 'normal': 0, 'advantage': 5, 'tie': 0}
        self.model = ModelSource()

    def seed(self, seed=None):
        self.np_random, seed = seeding.np_random(seed)
        return [seed]

    def get_action_for_opponent(self, x_user, y_user):
        # return self.get_action_for_opponent_random()
        return self.get_action_for_opponent_online_bot(x_user, y_user)
        # return self.get_action_for_opponent_offline_bot()

    def get_action_for_opponent_random(self):
        moves = self.game.available_moves()
        move = np.random.choice(moves)
        return move

    def get_action_for_opponent_online_bot(self, x_user, y_user):
        x_ai, y_ai = self.model.get_ai_move(x_user, y_user)
        return x_ai * self.size + y_ai

    def get_action_for_opponent_offline_bot(self):
        x_ai, y_ai = get_move(self.game.board)
        return x_ai * self.size + y_ai

    def make_move(self, action, sign):
        x = action // self.size
        y = action % self.size

        if sign == 1:
            self.state[0][x][y] = 1
            self.game.board[x][y] = 1
        elif sign == 2:
            self.state[1][x][y] = 1
            self.game.board[x][y] = 2

        return x, y

    def step(self, action):
        assert self.action_space.contains(action), "%r (%s) invalid" % (action, type(action))

        reward = self.rewards['normal']
        done = False

        x_1, y_1 = self.make_move(action, 1)

        if self.game.check_win(x_1, y_1, 1):
            reward = self.rewards['win']
            done = True
        else:
            opponent_action = self.get_action_for_opponent(x_1, y_1)
            x_2, y_2 = self.make_move(opponent_action, 2)

            if self.game.check_win(x_2, y_2, 2):
                reward = self.rewards['lost']
                done = True
            elif self.game.tie():
                reward = self.rewards['tie']
                done = True
            elif self.game.count(1) >= 5:
                reward = self.rewards['advantage']
                done = False

        return self.state, reward, done, {}

    def reset(self):
        self.game.reset()

        low = np.array([[0 for _ in range(self.size)] for _ in range(self.size)])
        low = np.array([low, low])

        self.state = low
        self.model.reset()

        return self.state

    def render(self, mode='human'):
        if not (mode == 'human'):
            print(self.game.board)
        return None

    def close(self):
        pass
コード例 #17
0
ファイル: Main.py プロジェクト: Pkononsky/Checkers
def main():
    x_size = 775  # кратно 155
    y_size = 800  # кратно 40
    Game("Checkers 100", x_size, y_size, "1.png", 120).run_computer()