예제 #1
0
파일: game.py 프로젝트: zb46392/connect4
def guiPlay():
    board = Board()
    bot1 = RandomBot()
    bot2 = MCTS_BOT()
    while (board.checkGameState() == board.STILL_PLAYING):
        if board.turn == 1:
            board.move(bot1.makeMove(board.copy()))
        else:
            board.move(bot2.makeMove(board.copy()))
        if gui is not None:
            gui.show(board)
            
        time.sleep(0.5)
예제 #2
0
    def rollout(self):
        rand_play = RandomBot()
        cur_s = self.s
        turn = self.x

        while (TicTacToeStatic.Status(cur_s) == None):
            move = rand_play.make_a_move(cur_s)
            r = move // len(self.s)
            c = move % len(self.s)
            new_s = cur_s.copy()
            new_s[r, c] = turn
            cur_s = new_s
            turn *= -1

        e = TicTacToeStatic.Status(cur_s)

        return e
    def rollout(self):
        rand_play = RandomBot()
        cur_s = self.s
        turn = self.x
        lst = None
        cnt_now = self.cnt
        while (TicTacToeStatic.Status(cur_s, lst, cnt_now) is None):
            move = rand_play.make_a_move(cur_s)
            r = move // len(self.s)
            c = move % len(self.s)
            lst = r, c
            cnt_now += 1
            new_s = cur_s.copy()
            new_s[r, c] = turn
            cur_s = new_s
            turn *= -1

        e = TicTacToeStatic.Status(cur_s, lst, cnt_now)

        return e
import sys

sys.path.append('./Controller')
from TicTacToe import TicTacToe
from RandomBot import RandomBot
from HumanPlayer import HumanPlayer

if __name__ == '__main__':
    p1 = HumanPlayer('Human')
    p2 = RandomBot('Bot')
    A_TicTacToe = TicTacToe(3, 3, p1, p2)
    A_TicTacToe.run()
예제 #5
0
import sys
import pygame
sys.path.append('./Controller')
sys.path.append('./View')
from MainController import MainController
from RandomBot import RandomBot
from HumanPlayer import HumanPlayer
from MiniMaxPlayer import MiniMaxPlayer
from MonteCarloTreeSearchPlayer import MonteCarloTreeSearchPlayer

if __name__ == '__main__':

    PLAYERS = []
    PLAYERS.append(HumanPlayer())
    PLAYERS.append(MonteCarloTreeSearchPlayer())
    PLAYERS.append(MiniMaxPlayer())
    PLAYERS.append(RandomBot())


    MENU = MainController(3, PLAYERS)
    RESULT = MENU.run()
    print(RESULT)

    for event in pygame.event.get():
        if (event.type == pygame.QUIT):
            sys.exit()
예제 #6
0
import sys
sys.path.append('./Controller')
sys.path.append('./View')
sys.path.append('./Model')
from TicTacToe import TicTacToe
from RandomBot import RandomBot
from HumanPlayer import HumanPlayer

if __name__ == '__main__':
    p1 = RandomBot('Bot1')
    p2 = RandomBot('Bot2')
    A_TicTacToe = TicTacToe(5, 10, p1, p2)
    A_TicTacToe.run()
예제 #7
0
파일: game.py 프로젝트: zb46392/connect4
USER_VS_MCTS = 2
GAME_STYLE = 2
if __name__ == '__main__':
    
    if GAME_STYLE is RANDOM_VS_MCTS_GUI:
        gui = GUI(GUI.BOT_PLAY)
        t = threading.Thread(target=guiPlay)
        t.start()
        gui.root.mainloop()
        gui = None
        thread_stop = True
        t.join()
    elif GAME_STYLE is RANDOM_VS_MCTS_NOGUI:
        nbrOfPlays = 100
        board = Board()
        bot1 = RandomBot()
        bot2 = MCTS_BOT()
        bot1Score = 0
        bot2Score = 0        
        
        for i in range(nbrOfPlays):
            board = Board()
            while (board.checkGameState() == board.STILL_PLAYING):
                if board.turn == 1:
                    board.move(bot1.makeMove(board.copy()))
                else:
                    board.move(bot2.makeMove(board.copy()))
            if board.checkGameState() == board.PLAYER_1_WIN:
                bot1Score += 1
            elif  board.checkGameState() == board.PLAYER_2_WIN:
                bot2Score += 1
    def run(self):
        players = []
        players.append(HumanPlayer())
        players.append(MonteCarloTreeSearchPlayer())
        players.append(MiniMaxPlayer())
        players.append(RandomBot())

        self.players = players
        while (True):
            self.View.__init__(3, self.players)
            buttons1, buttons2, PlayButton, GRID3, GRID10 = self.View.draw_Menu(
                self.players)

            flag = 0
            p1 = None
            p2 = None
            p3 = None

            while (flag == 0):
                for event in pygame.event.get():
                    if (event.type == pygame.QUIT):
                        sys.exit()
                    if (event.type == pygame.MOUSEBUTTONDOWN):
                        if (p1 != None and p2 != None and p3 != None):
                            if (PlayButton.isClicked(event) == 1):
                                flag = 1
                                p3 = 2

                        if (GRID3.isClicked(event) == 1 and p3 != 2):
                            GRID3.Toggle()
                            GRID10.UnToggle()
                            GRID_SIZE = 3
                            p3 = 1

                        if (GRID10.isClicked(event) == 1 and p3 != 2):
                            GRID10.Toggle()
                            GRID3.UnToggle()
                            GRID_SIZE = 10
                            p3 = 1

                        for i, b in enumerate(buttons1):
                            if (b.isClicked(event) > 0):
                                p1 = deepcopy(self.players[i])
                                for bb in buttons1:
                                    bb.UnToggle()
                                b.Toggle()
                        for i, b in enumerate(buttons2):
                            if (b.isClicked(event) > 0):
                                p2 = deepcopy(self.players[i])
                                for bb in buttons2:
                                    bb.UnToggle()
                                b.Toggle()

            print("!!!")

            #             TicTacToe(needToWin, GRID_SIZE,player1,player2)
            A_TicTacToe = TicTacToe(needToWinDict[GRID_SIZE], GRID_SIZE, p1,
                                    p2, False)
            A_TicTacToe.run()

        pygame.time.wait(30000)