From c3ac347364cd55e80c63b7fd7b2908ec8b5262de Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Fri, 15 Dec 2023 00:46:42 +0100 Subject: [PATCH] Rework options, now can be defined per player --- src/classes/Engines.py | 6 ++++-- src/game.py | 40 +++++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/classes/Engines.py b/src/classes/Engines.py index 8e96283..1c9afed 100644 --- a/src/classes/Engines.py +++ b/src/classes/Engines.py @@ -6,7 +6,10 @@ class PlayerEngine: # init logger do display informations self.logger = logger self.options = options - self.logger.info("Init engine {}".format(self.__class__.__name__)) + self.logger.info("Init engine {}, options:{}".format( + self.__class__.__name__, + self.options + )) def get_move(self, board): self.logger.info("engine: {} - player:{}".format( @@ -155,7 +158,6 @@ class AlphabetaPlayerEngine(PlayerEngine): leafs = 0 if depth == 0 : leafs +=1 - self.logger.debug("option: {}".format(self.options)) if self.options['heuristic'] == 'weight': score = ReversiHeuristic(self.logger).get(board) else: diff --git a/src/game.py b/src/game.py index f503be9..7db3514 100755 --- a/src/game.py +++ b/src/game.py @@ -12,28 +12,41 @@ Function to parse command line arguments """ def parse_aguments(): engines_choices=['random', 'human', 'minmax', 'alphabeta'] + heuristic_choices=['weight',] parser = arg.ArgumentParser('Playing Reversi with (virtual) friend') - parser.add_argument('-w', '--white-engine', + parser.add_argument('-we', '--white-engine', choices=engines_choices, help='white player engine (random)', default='random' ) - parser.add_argument('-b', '--black-engine', + parser.add_argument('-be', '--black-engine', choices=engines_choices, help='black player engine (random)', default='random' ) - parser.add_argument('-D', '--depth', - help='Minmax exploration depth', + parser.add_argument('-bd', '--black-depth-exploration', + help='Black player exploration depth (minmax or alphabeta engine)', type=int, default=3, ) - parser.add_argument('-H', '--heuristic', - help='Define heutistic engine', + parser.add_argument('-wd', '--white-depth-exploration', + help='White player exploration depth (minmax or alphabeta engine)', + type=int, + default=3, + ) + + parser.add_argument('-bh', '--black-heuristic-engine', + help='Black player heutistic engine', + choices=['board', 'weight'], + default='board', + ) + + parser.add_argument('-wh', '--white-heuristic-engine', + help='White player heutistic engine', choices=['board', 'weight'], default='board', ) @@ -61,7 +74,6 @@ if __name__ == '__main__': print("Stating PyReverso...") args = parse_aguments() logger = log.getLogger() - print(args) # Create handler for streaming to tty (stderr / stdout) tty_handler = log.StreamHandler() tty_handler.setFormatter(CustomFormatter()) @@ -81,12 +93,14 @@ if __name__ == '__main__': args.black_engine, args.white_engine )) - options = { - 'depth': args.depth, - 'heuristic': args.heuristic - } - wplayer = engines[args.white_engine](logger, options) - bplayer = engines[args.black_engine](logger, options) + wplayer = engines[args.white_engine](logger, { + 'depth': args.white_depth_exploration, + 'heuristic': args.white_heuristic_engine + }) + bplayer = engines[args.black_engine](logger, { + 'depth': args.black_depth_exploration, + 'heuristic': args.black_heuristic_engine + }) while ( not game.is_game_over()): if game._nextPlayer == 1: move = bplayer.get_move(game)