Changes

Jump to navigation Jump to search
Line 73: Line 73:  
</pre>
 
</pre>
   −
The turtle choose a random direction and goes there if the dot is open.
+
The turtle choose a random direction and goes there if the dot is open. (This is the beginner strategy.)
    
<pre>
 
<pre>
Line 86: Line 86:  
</pre>
 
</pre>
   −
In this strategy, the turtle will go off the edge if it can.
+
In this strategy, the turtle will go off the edge if it can. (This is the intermediate strategy.)
    
<pre>
 
<pre>
Line 126: Line 126:  
</pre>
 
</pre>
   −
In the '''default strategy''', a weighing function is used: preference is given to dots closer to the edges.
+
A weighing function is used: preference is given to dots closer to the edges.
 
<pre>
 
<pre>
 
def _turtle_strategy(self, turtle):
 
def _turtle_strategy(self, turtle):
Line 137: Line 137:  
         return turtle
 
         return turtle
 
</pre>
 
</pre>
 +
 +
This is the expert strategy.
 +
 +
<pre>
 +
def _turtle_strategy(self, turtle):
 +
    dots = self._surrounding_dots(turtle)
 +
    for i in range(6):
 +
        if self._dots[dots[i]].type is None:
 +
            self._orientation = i
 +
            return self._dot_to_grid(dots[i])
 +
    dots_ordered_by_weight = self._ordered_weights(turtle)
 +
    for i in range(6):
 +
        self._orientation = dots.index(dots_ordered_by_weight[i])
 +
        if self._daylight_ahead(turtle):
 +
            return self._dot_to_grid(dots[self._orientation])
 +
    n = int(uniform(0, 6))
 +
    for i in range(6):
 +
        if not self._dots[dots[(i + n) % 6]].type:
 +
            self._orientation = (i + n) % 6
 +
            return self._dot_to_grid(dots[(i + n) % 6])
 +
    self._orientation = (i + n) % 6
 +
    return turtle
 +
 +
</pre>
 +
    
The dots are stored in a 13✕13 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 13✕13 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.

Navigation menu