Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/game.py
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2011-12-16 02:18:31 (GMT)
committer Walter Bender <walter.bender@gmail.com>2011-12-16 02:18:31 (GMT)
commit53754e5186c75be8e3b43c69f0c8990f251596af (patch)
tree91a38ec8785402b5592c77925ed71ffdb2e87e1d /game.py
parent681e144e710e67aaf5be9581b7a6752fbfd1d194 (diff)
add levels
Diffstat (limited to 'game.py')
-rw-r--r--game.py54
1 files changed, 48 insertions, 6 deletions
diff --git a/game.py b/game.py
index 90a8c55..e7aa316 100644
--- a/game.py
+++ b/game.py
@@ -40,8 +40,39 @@ CIRCLE = [[(0, -1), (1, 0), (0, 1), (-1, 1), (-1, 0), (-1, -1)],
[(1, -1), (1, 0), (1, 1), (0, 1), (-1, 0), (0, -1)]]
''' Simple strategy: head to daylight or randomly check for an open dot
turtle is the (col, row) of the current turtle position '''
-STRATEGY_MSG = _('turtle is looking for any open dot')
-STRATEGY = 'def _turtle_strategy(self, turtle):\n\
+BEGINNER_MSG = _('random')
+BEGINNER_STRATEGY = 'def _turtle_strategy(self, turtle):\n\
+ self._set_label(self.strategy_msg)\n\
+ dots = self._surrounding_dots(turtle)\n\
+ n = int(uniform(0, 6))\n\
+ for i in range(6):\n\
+ if not self._dots[dots[(i + n) % 6]].type:\n\
+ self._orientation = (i + n) % 6\n\
+ return self._dot_to_grid(dots[(i + n) % 6])\n\
+ self._orientation = (i + n) % 6\n\
+ return turtle\n'
+INTERMEDIATE_MSG = _('turtle is looking for any open dot')
+INTERMEDIATE_STRATEGY = 'def _turtle_strategy(self, turtle):\n\
+ self._set_label(self.strategy_msg)\n\
+ dots = self._surrounding_dots(turtle)\n\
+ for i in range(6):\n\
+ if self._dots[dots[i]].type is None:\n\
+ self._orientation = i\n\
+ return self._dot_to_grid(dots[i])\n\
+ dots_ordered_by_weight = self._ordered_weights(turtle)\n\
+ for i in range(6):\n\
+ self._orientation = dots.index(dots_ordered_by_weight[i])\n\
+ if self._daylight_ahead(turtle):\n\
+ return self._dot_to_grid(dots[self._orientation])\n\
+ n = int(uniform(0, 6))\n\
+ for i in range(6):\n\
+ if not self._dots[dots[(i + n) % 6]].type:\n\
+ self._orientation = (i + n) % 6\n\
+ return self._dot_to_grid(dots[(i + n) % 6])\n\
+ self._orientation = (i + n) % 6\n\
+ return turtle\n'
+EXPERT_MSG = _('turtle is looking for any open dot')
+EXPERT_STRATEGY = 'def _turtle_strategy(self, turtle):\n\
self._set_label(self.strategy_msg)\n\
dots = self._surrounding_dots(turtle)\n\
for i in range(6):\n\
@@ -83,8 +114,14 @@ class Game():
self._turtle_offset = 0
self._space = int(self._dot_size / 5.)
self._orientation = 0
- self.strategy = STRATEGY
- self.strategy_msg = STRATEGY_MSG
+ self.level = 0
+ self.custom_strategy = EXPERT_STRATEGY
+ self.strategies = [BEGINNER_STRATEGY, INTERMEDIATE_STRATEGY,
+ EXPERT_STRATEGY, self.custom_strategy]
+ self.msgs = [BEGINNER_MSG, INTERMEDIATE_MSG,
+ EXPERT_MSG, _('strategy from Journal')]
+ self.strategy = self.strategies[self.level]
+ self.strategy_msg = self.msgs[self.level]
# Generate the sprites we'll need...
self._sprites = Sprites(self._canvas)
@@ -139,16 +176,19 @@ class Game():
self._turtle.move(pos)
self._turtle.move_relative((-self._turtle_offset, -self._turtle_offset))
self._turtle.set_shape(self._turtle_images[0])
+ self._set_label('')
+ '''
self._set_label(
_('Click on the dots to keep the turtle from escaping.'))
+ '''
def _initiating(self):
return self._activity.initiating
def reset_strategy(self):
''' Reload default strategy '''
- self.strategy = STRATEGY
- self.strategy_msg = STRATEGY_MSG
+ self.custom_strategy = self.strategies[2]
+ self.level = 3
def new_game(self, saved_state=None):
''' Start a new game. '''
@@ -163,6 +203,8 @@ class Game():
# Calculate the distances to the edge
self._initialize_weights()
+ self.strategy = self.strategies[self.level]
+ self.strategy_msg = self.msgs[self.level]
def _set_label(self, string):
''' Set the label in the toolbar or the window frame. '''