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
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)
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
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
# -*- 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()