def random_v_random(nothing, nobody,width,height):
    game = ConnectFour(width,height,True)
    while(not game.gameTie()):
        game = random_move(game)
        if game.gameWinner():
            return game.gameWinner()
    return 0
Ejemplo n.º 2
0
def testforward():
    width = 5
    height = 5
    net = policyValueNet.PolicyValueNet(width, height)

    print("Start game")
    game = ConnectFour(5, 5, True, True, "testMCTS")
    play_game(game, net, False, 1)
    print("end game")
    shutil.rmtree("testMCTS")

    net_in = historyToImage(game.history, width, height, 5)
    net_in = net_in.cpu()
    #what if I just took 10 channels
    onlyTen = net_in[0:10, :, :]
    # start with batchsize of 1
    #net_in = torch.unsqueeze(onlyTen, 0)
    print(net_in)
    #import pdb
    #pdb.set_trace()
    out = net(net_in)
    print(out)
    device = torch.device('cuda')
    net.load_state_dict(torch.load("test.pth", map_location=device))

    net.eval()

    x = net(net_in)
Ejemplo n.º 3
0
def test_run_sim():
    
    mcts = MCTS()
    game = ConnectFour(4,4, True,True, "testMCTS")
    root = mcts.run_sim(game )
    print("tree after sim")
    mcts.print_tree(root)
    shutil.rmtree("testMCTS")
def test_connectedSets():
    c = ConnectFour(5, 5, True, True, "test1")
    c.move(0)
    c.move(4)
    c.move(4)
    c.move(3)
    shutil.rmtree("test1")
def test_case2():
    c = ConnectFour(5, 5, True, True, "test3")
    c.move(2)
    c.move(4)
    c.move(1)
    c.move(0)
    shutil.rmtree("test3")
def test_case1():
    c = ConnectFour(5, 5, True, True, "test2")
    c.move(0)
    c.move(3)
    c.move(4)
    c.move(0)
    shutil.rmtree("test2")
def network_v_random(network,T, width, height,doDraw=False):
    game = ConnectFour(width,height,True,doDraw,"testGame1")
    while(not game.gameTie()):
        if game.player() == 2:
           game = random_move(game)
        elif game.player() == 1:
            game = model_move(network, game, T)
        if game.gameWinner():
            return game.gameWinner()

    return 0
def network_v_mcts(model, T, width, height, doDraw=False):
    game = ConnectFour(width, height,True, doDraw, "testGame1")
    while not game.gameTie():
        if game.player() == 2:
            game = mcts_move(game,T)  
        else:
            game = model_move(model, game, T)
        if game.gameWinner():
            return game.gameWinner()
    return 0
def random_v_mcts(nowork,T,width,height,doDraw=False):
    game = ConnectFour(width, height,True, doDraw, "testGame1")
    while not game.gameTie():
        if game.player() == 1:
            game = mcts_move(game,T)  
        else:
            game = random_move(game)
        if game.gameWinner():
            return game.gameWinner()
    return 0    
Ejemplo n.º 10
0
class TestConnectFour(unittest.TestCase):

    # create three connectFour objects to test and
    # interact with throughout the file
    game1 = ConnectFour()
    game2 = ConnectFour()
    game2.height = 45
    game2.width = 35
    game3 = ConnectFour()
    game3.height = 250
    game3.width = 400

    def test_create_board(self):
        self.game1.create_board()
        self.game2.create_board()
        self.game3.create_board()
        self.assertEqual(len(self.game1.board[0]), 7)
        self.assertEqual(len(self.game1.board), 7)
        self.assertEqual(len(self.game2.board[44]), 35)
        self.assertEqual(len(self.game2.board), 45)
        self.assertEqual(len(self.game3.board[249]), 400)
        self.assertEqual(len(self.game3.board), 250)

    def test_newboard(self):
        self.game1.new_board()
        self.game2.new_board()
        self.game3.new_board()
        self.assertTrue(self.game1.board[0][0] == '*')
        self.assertTrue(self.game1.board[6][6] == '*')
        self.assertTrue(self.game2.board[3][15] == '*')
        self.assertTrue(self.game2.board[42][25] == '*')
        self.assertTrue(self.game3.board[112][0] == '*')
        self.assertTrue(self.game3.board[249][399] == '*')
        return

    def test_switch_player(self):
        self.game1.player = 0
        self.game1.switch_player()
        self.assertTrue(self.game1.player == 1)
        self.game1.switch_player()
        self.assertTrue(self.game1.player == 0)
        return

    def test_add_chip1(self):
        self.game1.create_board()
        self.game1.new_board()
        for i in range(self.game1.height):
            self.assertTrue(self.game1.add_chip(2))
        self.assertFalse(self.game1.add_chip(2))
        return

    def test_add_chip2(self):
        self.game2.create_board()
        self.game2.new_board()
        for i in range(self.game2.height):
            self.assertTrue(self.game2.add_chip(0))
        self.assertFalse(self.game2.add_chip(0))
        return

    def test_add_chip3(self):
        self.game3.create_board()
        self.game3.new_board()
        for i in range(self.game3.height):
            self.assertTrue(self.game3.add_chip(399))
        self.assertFalse(self.game3.add_chip(399))
        return

    def test_check_for_winner1(self):
        self.game1.create_board()
        self.game1.new_board()
        self.game1.player = 0
        for i in range(4):
            self.assertFalse(self.game1.check_for_winner())
            self.game1.board[6][i] = 'X'
        self.assertTrue(self.game1.check_for_winner())
        return

    def test_check_for_winner2(self):
        self.game1.create_board()
        self.game1.new_board()
        self.game1.player = 0
        for i in range(3, 7):
            self.assertFalse(self.game1.check_for_winner())
            self.game1.board[0][i] = 'X'
        self.assertTrue(self.game1.check_for_winner())
        return

    def test_check_for_winner3(self):
        self.game2.create_board()
        self.game2.new_board()
        self.game2.player = 1
        self.game2.connect = 7
        for i in range(7):
            self.assertFalse(self.game2.check_for_winner())
            self.game2.board[i][34] = 'O'
        self.assertTrue(self.game2.check_for_winner())
        return

    def test_check_for_winner4(self):
        self.game2.create_board()
        self.game2.new_board()
        self.game2.player = 1
        self.game2.connect = 7
        for i in range(7):
            self.assertFalse(self.game2.check_for_winner())
            self.game2.board[i][0] = 'O'
        self.assertTrue(self.game2.check_for_winner())
        return

    def test_check_for_winner5(self):
        self.game3.create_board()
        self.game3.new_board()
        self.game3.player = 1
        self.game3.connect = 15
        for i in range(235, 250):
            self.assertFalse(self.game3.check_for_winner())
            self.game3.board[i][0] = 'O'
        self.assertTrue(self.game3.check_for_winner())
        return

    def test_check_for_winner6(self):
        self.game3.create_board()
        self.game3.new_board()
        self.game3.player = 0
        self.game3.connect = 15
        for i in range(235, 250):
            self.assertFalse(self.game3.check_for_winner())
            self.game3.board[i][399] = 'X'
        self.assertTrue(self.game3.check_for_winner())
        return

    def test_check_for_winner7(self):
        self.game2.create_board()
        self.game2.new_board()
        self.game2.connect = 7
        self.game2.player = 1
        for i in range(28, 35):
            self.assertFalse(self.game2.check_for_winner())
            self.game2.board[44][i] = 'O'
        self.assertTrue(self.game2.check_for_winner())
        return

    def test_check_for_winner8(self):
        self.game2.create_board()
        self.game2.new_board()
        self.game2.connect = 7
        self.game2.player = 1
        for i in range(7):
            self.assertFalse(self.game2.check_for_winner())
            self.game2.board[i][0] = 'O'
        self.assertTrue(self.game2.check_for_winner())
        return

    def test_check_for_winner9(self):
        self.game3.create_board()
        self.game3.new_board()
        self.game3.player = 0
        self.game3.connect = 15
        for i in range(15):
            self.assertFalse(self.game3.check_for_winner())
            self.game3.board[i][i] = 'X'
        self.assertTrue(self.game3.check_for_winner())
        return

    def test_check_for_winner10(self):
        self.game3.create_board()
        self.game3.new_board()
        self.game3.player = 1
        self.game3.connect = 15
        for i in range(15):
            self.assertFalse(self.game3.check_for_winner())
            self.game3.board[249 - i][i] = 'O'
        self.assertTrue(self.game3.check_for_winner())
        return

    def test_check_for_winner11(self):
        self.game1.create_board()
        self.game1.new_board()
        self.game1.player = 1
        for i in range(4):
            self.assertFalse(self.game1.check_for_winner())
            self.game1.board[6 - i][6 - i] = 'O'
        self.assertTrue(self.game1.check_for_winner())
        return

    def test_check_for_winner12(self):
        self.game1.create_board()
        self.game1.new_board()
        self.game1.player = 0
        for i in range(4):
            self.assertFalse(self.game1.check_for_winner())
            self.game1.board[i][6 - i] = 'X'
        self.assertTrue(self.game1.check_for_winner())
        return

    def test_save_load_game1(self):
        self.game1.create_board()
        self.game1.new_board()
        self.game1.player = 0
        self.game1.connect = 4
        for i in range(self.game1.height):
            for j in range(self.game1.width):
                if i % 2 == 0 and j % 2 == 0:
                    self.game1.board[i][j] = 'X'
                else:
                    self.game1.board[i][j] = 'O'
        self.game1.save_game("test_save1", self.game1)

        game = self.game1.load_game("test_save1")
        self.assertTrue(game.height == 7)
        self.assertTrue(game.width == 7)
        self.assertTrue(game.player == 0)
        self.assertTrue(game.connect == 4)
        for i in range(game.height):
            for j in range(game.width):
                if i % 2 == 0 and j % 2 == 0:
                    self.assertTrue(game.board[i][j] == 'X')
                else:
                    self.assertTrue(game.board[i][j] == 'O')
        return

    def test_save_load_game2(self):
        self.game2.create_board()
        self.game2.new_board()
        self.game2.player = 1
        self.game2.connect = 7
        for i in range(self.game2.height / 2):
            for j in range(self.game2.width):
                if j % 2 == 0:
                    self.game2.board[i][j] = 'X'
                else:
                    self.game2.board[i][j] = 'O'
        self.game2.save_game("test_save2", self.game2)

        game = self.game2.load_game("test_save2")
        self.assertTrue(game.height == 45)
        self.assertTrue(game.width == 35)
        self.assertTrue(game.player == 1)
        self.assertTrue(game.connect == 7)
        for i in range(game.height):
            for j in range(game.width):
                if j % 2 == 0 and i < int(game.height / 2):
                    self.assertTrue(game.board[i][j] == 'X')
                elif i < int(game.height / 2):
                    self.assertTrue(game.board[i][j] == 'O')
                else:
                    self.assertTrue(game.board[i][j] == '*')
        return

    def test_save_load_game3(self):
        self.game3.create_board()
        self.game3.new_board()
        self.game3.player = 0
        self.game3.connect = 26
        for i in range(self.game3.height - 3):
            for j in range(self.game3.width):
                if i % 3 == 0 and j % 2 == 0:
                    self.game3.board[i][j] = 'X'
                elif (j + i) % 4 == 0:
                    self.game3.board[i][j] = 'O'

        self.game3.save_game("test_save3", self.game3)

        game = self.game3.load_game("test_save3")
        self.assertTrue(game.height == 250)
        self.assertTrue(game.width == 400)
        self.assertTrue(game.player == 0)
        self.assertTrue(game.connect == 26)
        for i in range(game.height - 3):
            for j in range(game.width):
                if i % 3 == 0 and j % 2 == 0:
                    self.assertTrue(game.board[i][j] == 'X')
                elif (j + i) % 4 == 0:
                    self.assertTrue(game.board[i][j] == 'O')
                else:
                    self.assertTrue(game.board[i][j] == '*')
        return
Ejemplo n.º 11
0
# -*- coding: cp1252 -*-
# Neurotic
# By Artur Fast [email protected]
# Februar 2018

#use pygame because some other imports assume that pygame is already initialized!
import pygame, sys
pygame.init()

from game import Game
from connectFour import ConnectFour

#our main is very simple and uses the game class to run a game
game = ConnectFour()
game.start()