From 25f4f9302ebf442544346d123eab4d8c8ed26044 Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Mon, 12 Oct 2020 13:01:38 +0200 Subject: [PATCH] added random agent --- .gitignore | 2 ++ src/game.py | 21 ++++++++++++++------- src/random-agent.py | 23 +++++++++++++++++++++++ 3 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 .gitignore create mode 100755 src/random-agent.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b5e2e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +__pycache__ diff --git a/src/game.py b/src/game.py index 50d83c0..5e2fe70 100644 --- a/src/game.py +++ b/src/game.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - import random class Game: @@ -7,30 +5,38 @@ class Game: self._shutable = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] self._diced = None self._options = [] + self._score = 0 def dice(self): if not self._diced: - self._diced = [random.randint(0, 6), random.randint(0, 6)] - for rods in [ self._dice, - [ abs(self._dice[0] - self._dice[1]) ], - [ self._dice[0] + self._dice[1] ] ]: + self._diced = [random.randint(1, 6), random.randint(1, 6)] + for rods in [ self._diced, + [ abs(self._diced[0] - self._diced[1]) ], + [ self._diced[0] + self._diced[1] ] ]: if self._can_be_shut(rods): self._options.append(rods) def get_dice(self): return self._diced + def get_options(self): + return self._options + def shut(self, rods): if self._is_valid_option(rods): for rod in rods: + self._score += rod self._shutable.remove(rod) self._diced = None self._options = [] - def is_game_over(self): + def is_over(self): return len(self._shutable) == 0 or \ ( self._diced and len(self._options) == 0 ) + def get_score(self): + return self._score + def _can_be_shut(self, rods): shutable = self._shutable.copy() for rod in rods: @@ -38,6 +44,7 @@ class Game: shutable.remove(rod) else: return False + return True def _is_valid_option(self, rods): for option in self._options: diff --git a/src/random-agent.py b/src/random-agent.py new file mode 100755 index 0000000..d9354a1 --- /dev/null +++ b/src/random-agent.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +from game import Game +import random + +def play_game(): + g = Game() + while not g.is_over(): + g.dice() + options = g.get_options() + if len(options) > 0: + choice = random.randint(0, len(options) - 1) + g.shut(options[choice]) + return g.get_score() + +avg_score = 0.0 + +for i in range(0, 10000): + avg_score += play_game() + +avg_score /= 10000 + +print(avg_score) -- 2.39.5