# Difference between revisions of "Activities/Turtle in a Pond"

## 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:

#### The Toolbars

from left to right
1. the Activity toolbar button
2. the New Game button
3. the Load new strategy button
4. the Reload the default strategy button
5. 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 % 2
n = int(uniform(0, 6))
for i in range(6):
col = turtle + CIRCLE[c][(i + n) % 6]
row = turtle + CIRCLE[c][(i + n) % 6]
if not self._dots[self._grid_to_dot((col, row))].type:
return [col, row]
return turtle
```

In this version, the turtle moves down, regardless of whether the dot is open.

```def _turtle_strategy(self, turtle):
turtle +=1
return turtle
```

In this version, the turtle moves down until it is blocked.

```def _turtle_strategy(self, turtle):
if not self._dots[self._grid_to_dot((turtle, turtle+1))].type:
turtle +=1
return turtle
```

In this version, the turtle will go off the edge if it can.

```def _turtle_strategy(self, turtle):
c = turtle % 2
for i in range(6):
col = turtle + CIRCLE[c][i]
row = turtle + CIRCLE[c][i]
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 + CIRCLE[c][(i + n) % 6]
row = turtle + CIRCLE[c][(i + n) % 6]
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.

```def _turtle_strategy(self, turtle):
```

The turtle argument is a tuple containing the column and row of the current turtle position. That is, turtle is the horizontal position and turtle is the vertical 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
a 2x6x2 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.