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()
Esempio n. 3
0
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
Esempio n. 4
0
from bot import Bot

bot = Bot()

bot.act()

bot.end()
Esempio n. 5
0
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
Esempio n. 6
0
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()
Esempio n. 7
0
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()