def run_test(): board = Board() bot1 = Bot(1, board) bot2 = Bot(2, board) while not board.get_winner(): print board if not board.can_be_played(): break bot1.act() print board if not board.can_be_played(): break bot2.act() print board bot1.update_strategy() bot2.update_strategy() print 'bot %d wins' % board.get_winner()
def run_test(): board = Board() bot1 = Bot(1, board) bot2 = Bot(2, board) while not board.get_winner(): print board if not board.can_be_played(): break bot1.act() print board if not board.can_be_played(): break bot2.act() print board bot1.update_strategy() bot2.update_strategy() print "bot %d wins" % board.get_winner()
class App(gtk.Window): def __init__(self): super(App, self).__init__() self.set_title('Tic-Tac-Toe') self.connect('destroy', gtk.main_quit) self.set_position(gtk.WIN_POS_CENTER) self.set_default_size(250,250) self.show() self.init_widgets() self.game_count = 0 self.start_new_game() def init_widgets(self): vbox = gtk.VBox() self.add(vbox) self.button_position = {} self.buttons = {} for i in xrange(3): hbox = gtk.HBox() vbox.add(hbox) for j in xrange(3): button = gtk.Button() self.button_position[button] = (i,j) hbox.add(button) button.connect('clicked', self.game_button_clicked) button.show() self.buttons[i, j] = button hbox.show() hbox = gtk.HBox() restart_button = gtk.Button('restart') restart_button.connect('clicked', self.start_new_game) restart_button.show() hbox.add(restart_button) self.score_label= gtk.Label('0 - 0') self.score_label.show() hbox.add(self.score_label) vbox.add(hbox) hbox.show() vbox.show() def draw_board_state(self): for i in xrange(3): for j in xrange(3): button = self.buttons[i,j] if self.board.board[i][j] == 0: label = ' ' elif self.board.board[i][j] == 1: label = 'X' else: label = '0' button.set_label(label) def start_new_game(self, widget=None): for button in self.button_position: button.set_label(' ') self.board = Board() if self.game_count % 2 == 0: self.bot = Bot(1, self.board) self.bot.act() self.draw_board_state() self.player_color = 2 else: self.bot = Bot(2, self.board) self.player_color = 1 self.game_count += 1 def game_button_clicked(self, button): position = self.button_position[button] if position not in self.board.get_possible_actions(): return self.board.move(self.player_color, self.button_position[button]) self.draw_board_state() if not self.board.can_be_played(): return self.bot.act() self.draw_board_state() if not self.board.get_winner() != 0: return
from bot import Bot bot = Bot() bot.act() bot.end()
class App(gtk.Window): def __init__(self): super(App, self).__init__() self.set_title('Tic-Tac-Toe') self.connect('destroy', gtk.main_quit) self.set_position(gtk.WIN_POS_CENTER) self.set_default_size(250, 250) self.show() self.init_widgets() self.game_count = 0 self.start_new_game() def init_widgets(self): vbox = gtk.VBox() self.add(vbox) self.button_position = {} self.buttons = {} for i in xrange(3): hbox = gtk.HBox() vbox.add(hbox) for j in xrange(3): button = gtk.Button() self.button_position[button] = (i, j) hbox.add(button) button.connect('clicked', self.game_button_clicked) button.show() self.buttons[i, j] = button hbox.show() hbox = gtk.HBox() restart_button = gtk.Button('restart') restart_button.connect('clicked', self.start_new_game) restart_button.show() hbox.add(restart_button) self.score_label = gtk.Label('0 - 0') self.score_label.show() hbox.add(self.score_label) vbox.add(hbox) hbox.show() vbox.show() def draw_board_state(self): for i in xrange(3): for j in xrange(3): button = self.buttons[i, j] if self.board.board[i][j] == 0: label = ' ' elif self.board.board[i][j] == 1: label = 'X' else: label = '0' button.set_label(label) def start_new_game(self, widget=None): for button in self.button_position: button.set_label(' ') self.board = Board() if self.game_count % 2 == 0: self.bot = Bot(1, self.board) self.bot.act() self.draw_board_state() self.player_color = 2 else: self.bot = Bot(2, self.board) self.player_color = 1 self.game_count += 1 def game_button_clicked(self, button): position = self.button_position[button] if position not in self.board.get_possible_actions(): return self.board.move(self.player_color, self.button_position[button]) self.draw_board_state() if not self.board.can_be_played(): return self.bot.act() self.draw_board_state() if not self.board.get_winner() != 0: return
def selenium_driver(selenium_url): mobile_emulation = {"deviceName": "iPhone 5"} chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--incognito') chrome_options.add_argument( "start-maximized") # open Browser in maximized mode chrome_options.add_argument("disable-infobars") # disabling infobars chrome_options.add_argument("--disable-extensions") # disabling extensions chrome_options.add_argument("--no-sandbox") chrome_options.add_argument( "--disable-dev-shm-usage") # overcome limited resource problems chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']) chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) selenium_driver = webdriver.Remote( command_executor=selenium_url, desired_capabilities=chrome_options.to_capabilities()) return selenium_driver bot = Bot(selenium_local_session=False) selenium_url = "http://%s:%d/wd/hub" % (os.environ.get('SELENIUM', 'selenium'), 4444) bot.set_selenium_remote_session(selenium_url=selenium_url, selenium_driver=selenium_driver(selenium_url)) bot.act('http://web:5000') # bot.end()
class Test: def __init__(self): self.sample_batch_size = 32 self.episodes = 10 self.env = PivitEnv(6) self.state_size = 6 #self.env.observation_space.shape[0] self.action_size = 6 #self.env.action_space.n self.dqnagent = DQNAgent(self.state_size) self.minimax = Bot() def testDQN(self): """Testar DQN jogando contra si""" dqn_points = 0 for index_episode in range(self.episodes): state = self.env.reset() #state = np.reshape(state, [1, self.state_size]) done = False index = 0 while not done: action = self.dqnagent.act(state, index % 2) if action == None: break next_state, reward, done, _ = self.env.step(action) if reward >= 0: print("DQNAgent made a valid move") reward = 1 self.dqnagent.memorize(change_colors(state), action, reward, change_colors(next_state), done) dqn_points += reward state = next_state index += 1 if index == 100: break self.dqnagent.replay(self.sample_batch_size) return dqn_points def testMinimaxDQN(self): """Testar DQN jogando contra MinMax""" dqn_points = 0 minmax_points = 0 for index_episode in range(self.episodes): state = self.env.reset() #state = np.reshape(state, [1, self.state_size]) done = False index = 0 while not done: action = self.minimax.act(box_to_board(state), 1, 0) if action == None: break next_state, reward, done, _ = self.env.step(action) self.dqnagent.memorize(state, action, reward + 1, next_state, done) minmax_points += reward state = next_state action = self.dqnagent.act(state, 1) if action == None: break next_state, reward, done, _ = self.env.step(action) if reward >= 0: print("DQNAgent made a valid move") reward = 1 self.dqnagent.memorize(change_colors(state), action, reward, change_colors(next_state), done) dqn_points += reward state = next_state index += 1 if index == 100: break self.dqnagent.replay(self.sample_batch_size) return minmax_points, dqn_points def testMinimax(self): try: for index_episode in range(self.episodes): state = self.env.reset() done = False index = 0 while not done: action = self.minimax.act(box_to_board(state), 1, index % 2) if action == None: break next_state, reward, done, _ = self.env.step(action) self.dqnagent.memorize(state, action, reward, next_state, done) state = next_state index += 1 if index == 100: break print("Episode", index_episode, "Number of moves:", index + 1) self.dqnagent.replay(self.sample_batch_size) finally: self.dqnagent.save_model()