From 57ac0b5317c254ec40b7718bbbb06fa7165663d2 Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Tue, 6 Oct 2020 11:40:07 +0200 Subject: [PATCH] added game logic --- src/game.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/game.py diff --git a/src/game.py b/src/game.py new file mode 100644 index 0000000..04a32e2 --- /dev/null +++ b/src/game.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +import random + +class Game: + def __init__(self): + self._shutable = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + self._diced = None + self._options = [] + + 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] ] ]: + if self._can_be_shut(rods): + self._options.append(rods) + + def shut(self, rods): + if self._is_valid_option(rods): + for rod in rods: + self._shutable.remove(rod) + self._diced = None + self._options = [] + + def is_game_over(self): + return len(self._shutable) == 0 or \ + ( self._diced and len(self._options) == 0 ) + + def _can_be_shut(self, rods): + shutable = self._shutable.copy() + for rod in rods: + if rod in shutable: + shutable.remove(rod) + else: + return False + + def _is_valid_option(self, rods): + for option in self._options: + if set(option) == set(rods): + return True + return False -- 2.39.5