Example #1
0
def replay(steps_list):
    for steps in steps_list:
        position_nums = [
            int(step['position_num']) for step in json.loads(steps)
        ]
        choice1 = ChoiceReplaySteps(
            np.array(position_nums, dtype=np.int32)[::2])
        choice2 = ChoiceReplaySteps(
            np.array(position_nums, dtype=np.int32)[1::2])
        Reversi.game(choice1, choice2)
Example #2
0
    def start_game(self, reversi):
        """
		start_game starts the reversi game and initializes a new game whenever user wants to continue to play
		"""
        restart = self.run_game(reversi)
        while restart:
            print("here?")
            newReversi = Reversi()  # initialize reversi object
            newReversi.initiateboard()  # initialize the game board
            restart = self.run_game(newReversi)
        print("goodbye!")
Example #3
0
	def start_game(self,reversi):
		"""
		start_game starts the reversi game and initializes a new game whenever user wants to continue to play
		"""
		restart = self.run_game(reversi)  
		while restart:
			print("here?")
			newReversi = Reversi()  # initialize reversi object    
			newReversi.initiateboard() # initialize the game board
			restart = self.run_game(newReversi)
		print("goodbye!")
Example #4
0
def play(choice_computer):
    choice1 = {'name': "You", 'choice': choice_human}
    choice2 = {'name': "Computer", 'choice': choice_computer}
    while True:
        print("start: {} vs {}".format(choice1['name'], choice2['name']))

        steps = Reversi.game(choice1['choice'], choice2['choice'])

        is_black_win = Reversi.is_win_game(steps, is_black=True)
        is_white_win = Reversi.is_win_game(steps, is_black=False)
        if is_black_win:
            print("{} is win".format(choice1['name']))
        elif is_white_win:
            print("{} is win".format(choice2['name']))
        else:
            print("draw")
        save_playdata(steps)
        if not yes_no_input("Do you want to continue? [y/N]: "):
            break
        choice1, choice2 = choice2, choice1
Example #5
0
				end = self.drawBoard(reversi,yield_)
			pygame.display.flip()
			if yield_ != 0:
				pygame.time.wait(1000)
			else: 
				pygame.time.wait(200)
		print("out of the loop")
		return restart

	def start_game(self,reversi):
		"""
		start_game starts the reversi game and initializes a new game whenever user wants to continue to play
		"""
		restart = self.run_game(reversi)  
		while restart:
			print("here?")
			newReversi = Reversi()  # initialize reversi object    
			newReversi.initiateboard() # initialize the game board
			restart = self.run_game(newReversi)
		print("goodbye!")

if __name__ == "__main__":
	
    reversi = Reversi()  # initialize reversi object    
    computertile = reversi.assigntile('X') # assign string 'X' to be computer's tile
    reversi.initiateboard() # initialize the game board
    game = Reversi_GUI() # initialize the GUI for Reversi
    game.start_game(reversi) # start the game
    

Example #6
0
import copy

from Reversi import Reversi
from dqn_agent import DQNAgent

if __name__ == "__main__":

    # parameters
    n_epochs = 1000
    # environment, agent
    env = Reversi()

    # playerID
    playerID = [env.Black, env.White, env.Black]

    # player agent
    players = []
    # player[0]= env.Black
    players.append(
        DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                 env.screen_n_cols))
    # player[1]= env.White
    players.append(
        DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                 env.screen_n_cols))

    for e in range(n_epochs):
        # reset
        env.reset()
        terminal = False
        while terminal == False:  # 1エピソードが終わるまでループ
Example #7
0
def next(url, choice, algorithm):
    board = Reversi.get_init_board()
    query = request.args.get('query')
    if query:
        params = json.loads(base64.urlsafe_b64decode(query).decode())
        player = Reversi.get_player(np.array(params['board']))
        board = Reversi.put(player, params['num'])
        while True:
            player = Reversi.get_player(board, False)
            if Reversi.is_putable(player):
                choice_data = choice(player)
                board = Reversi.put(player, choice_data['position_num'])
                player = Reversi.get_player(board)
                if Reversi.is_putable(player):
                    break
            else:
                break

    board, is_black, putable_position_nums = Reversi.get_player(board)
    black_num, white_num = Reversi.get_stone_num(board)
    return render_template('index.html',
                           url=url,
                           algorithm=algorithm,
                           is_end_board=Reversi.is_end_board(board),
                           black_num=black_num,
                           white_num=white_num,
                           board=board,
                           is_black=is_black,
                           putable_position_nums=putable_position_nums)
Example #8
0
import argparse

from Reversi import Reversi
from dqn_agent import DQNAgent

if __name__ == "__main__":
    # args
    parser = argparse.ArgumentParser()
    parser.add_argument("-m", "--model_path")
    parser.add_argument("-s", "--save", dest="save", action="store_true")
    parser.set_defaults(save=False)
    args = parser.parse_args()

    # environmet, agent
    env = Reversi()
    agent = DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                     env.screen_n_cols)
    agent.load_model("models1/Reversi.ckpt")

    # game
    print("------------- GAME START ---------------")
    while not env.isEnd():
        print("*** userターン○ ***")
        env.print_screen()
        enables = env.get_enables(1)
        if len(enables) > 0:
            flg = False
            while not flg:
                print("番号を入力してください")
                print(enables)
                inp = input('>>>  ')
Example #9
0
    # args
    parser = argparse.ArgumentParser()
    parser.add_argument("-m", "--model_path")
    parser.add_argument("-s", "--save", dest="save", action="store_true")
    parser.set_defaults(save=False)
    args = parser.parse_args()
    '''
    # environmet, agent
    env = Reversi ()
    agent = DQNAgent (env.enable_actions, env.name, env.screen_n_rows, env.screen_n_cols)
    agent.load_model (args.model_path)
    '''
    ranagent = randomAgent()

    for episode in range(max_episodes):
        env = Reversi()
        #agent 생성
        agent = DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                         env.screen_n_cols)
        agent.load_model()

        # game
        print(" ------------- GAME START --------------- ", episode)
        while not env.isEnd():
            print(" *** user 턴 ● *** ")  #black : 1
            env.print_screen()
            enables = env.get_enables(1)
            if len(enables) > 0:
                if (randomAI == False):
                    flg = False
                    while not flg:  #입력가능한 값들중 이상한 값을 집어넣는것 방지
Example #10
0
                end = self.drawBoard(reversi, yield_)
            pygame.display.flip()
            if yield_ != 0:
                pygame.time.wait(1000)
            else:
                pygame.time.wait(200)
        print("out of the loop")
        return restart

    def start_game(self, reversi):
        """
		start_game starts the reversi game and initializes a new game whenever user wants to continue to play
		"""
        restart = self.run_game(reversi)
        while restart:
            print("here?")
            newReversi = Reversi()  # initialize reversi object
            newReversi.initiateboard()  # initialize the game board
            restart = self.run_game(newReversi)
        print("goodbye!")


if __name__ == "__main__":

    reversi = Reversi()  # initialize reversi object
    computertile = reversi.assigntile(
        'X')  # assign string 'X' to be computer's tile
    reversi.initiateboard()  # initialize the game board
    game = Reversi_GUI()  # initialize the GUI for Reversi
    game.start_game(reversi)  # start the game
Example #11
0
    src_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                 scope=src_scope_name)
    dest_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                  scope=dest_scope_name)

    for src_var, dest_var in zip(src_vars, dest_vars):
        op_holder.append(dest_var.assign(src_var.value()))

    return op_holder


if __name__ == "__main__":
    # 반복횟수
    n_epochs = 1000
    # Reversi.py 파일의 변수들을 사용하기 위한 env객체를 선언
    env = Reversi()

    # playerID
    playerID = [env.black, env.white, env.black]  #black-> white -> black순이므로

    # player agent. player[0]과 player[1]은 각각 ([0, 1, ... , 63], 'Reversi', 8, 8) 의 값을 가지게 됨
    players = []
    # player [0] = env.Black
    players.append(DQNAgent(env.name, env.rows, env.cols, name="main0"))
    # player [1] = env.White
    players.append(DQNAgent(env.name, env.rows, env.cols, name="main1"))

    players.append(DQNAgent(env.name, env.rows, env.cols, name="target0"))

    players.append(DQNAgent(env.name, env.rows, env.cols, name="target1"))
Example #12
0
import argparse

from Reversi import Reversi
from dqn_agent import DQNAgent

if __name__ == "__main__":
    # args
    parser = argparse.ArgumentParser()
    parser.add_argument("-m", "--model_path")
    parser.add_argument("-s", "--save", dest="save", action="store_true")
    parser.set_defaults(save=False)
    args = parser.parse_args()

    # environmet, agent
    env = Reversi()
    agent1 = DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                      env.screen_n_cols)
    agent1.load_model("models1/Reversi.ckpt")

    agent2 = DQNAgent(env.enable_actions, env.name, env.screen_n_rows,
                      env.screen_n_cols)
    agent2.load_model("models2/Reversi.ckpt")

    # game
    print("------------- GAME START ---------------")
    while not env.isEnd():
        # print("*** userターン○ ***")
        # env.print_screen()
        # enables = env.get_enables(1)
        # if len(enables) > 0:
        #     flg = False
Example #13
0
from Reversi import Reversi
game = Reversi(size=800, gameName='Toby\'s Game')

while True:
    if (not game.update()):
        break