Activities/Turtle in a Pond: Difference between revisions
Created page with "==Turtle in a Pond Activity== Turtle in a Pond is a strategy game. The goal is to surround the turtle before it runs of the screen. 300px === How..." |
|||
| Line 24: | Line 24: | ||
The default strategy is simple: choose a random direction and go there if the dot is open. | The default strategy is simple: choose a random direction and go there if the dot is open. | ||
<pre> | <pre> | ||
def _turtle_strategy(self, turtle): | def _turtle_strategy(self, turtle): | ||
| Line 57: | Line 58: | ||
The dots are stored in a 13x13 array. Each dot has an attribute, 'type', that determines it status. The edges have a type=None. Occupied dots have a type=True. Unoccupied dots have a type=False. | The dots are stored in a 13x13 array. Each dot has an attribute, 'type', that determines it status. The edges have a type=None. Occupied dots have a type=True. Unoccupied dots have a type=False. | ||
Your strategy should start with: | |||
def _turtle_strategy(self, turtle): | |||
The turtle argument is a tuple containing the column and row of the current turtle position. | |||
Your strategy should return a tuple containing the column and row of the new turtle position, e.g., | |||
return [col, row] | |||
There are some resources that you can use in your program, including: | |||
;CIRCLE: an array of offsets that can used to find the col and row of the dots surrounding the turtle. | |||
;self._dots: the array of dots. | |||
;self._pressed: the index of the most recent dot pressed by the user | |||
=== Where to get Turtle in a Pond === | === Where to get Turtle in a Pond === | ||
Revision as of 23:00, 29 November 2011
Turtle in a Pond Activity
Turtle in a Pond is a strategy game. The goal is to surround the turtle before it runs of the screen.
How to play Turtle in a Pond
Did you know that:
- You can load your own strategy for the turtle
The Toolbars
- from left to right
- the Activity toolbar button
- the New Game button
- the Load new strategy button
- the Reload the default strategy button
- the Stop button
Strategy
The default strategy is simple: choose a random direction and go there if the dot is open.
def _turtle_strategy(self, turtle):
c = turtle[1] % 2
n = int(uniform(0, 6))
for i in range(6):
col = turtle[0] + CIRCLE[c][(i + n) % 6][0]
row = turtle[1] + CIRCLE[c][(i + n) % 6][1]
if not self._dots[self._grid_to_dot((col, row))].type:
return [col, row]
return turtle
In this version, the turtle will go off the edge if it can.
def _turtle_strategy(self, turtle):
c = turtle[1] % 2
for i in range(6):
col = turtle[0] + CIRCLE[c][i][0]
row = turtle[1] + CIRCLE[c][i][1]
if self._dots[self._grid_to_dot((col, row))].type is None:
return [col, row]
n = int(uniform(0, 6))
for i in range(6):
col = turtle[0] + CIRCLE[c][(i + n) % 6][0]
row = turtle[1] + CIRCLE[c][(i + n) % 6][1]
if not self._dots[self._grid_to_dot((col, row))].type:
return [col, row]
return turtle
The dots are stored in a 13x13 array. Each dot has an attribute, 'type', that determines it status. The edges have a type=None. Occupied dots have a type=True. Unoccupied dots have a type=False.
Your strategy should start with:
def _turtle_strategy(self, turtle):
The turtle argument is a tuple containing the column and row of the current turtle position.
Your strategy should return a tuple containing the column and row of the new turtle position, e.g.,
return [col, row]
There are some resources that you can use in your program, including:
- CIRCLE
- an array of offsets that can used to find the col and row of the dots surrounding the turtle.
- self._dots
- the array of dots.
- self._pressed
- the index of the most recent dot pressed by the user
Where to get Turtle in a Pond
The Turtle in a Pond activity is available for download from the Sugar activity portal: Turtle in a Pond
The source code is available on the Sugar Labs Gitorious server.
