Changes

Jump to navigation Jump to search
Line 104: Line 104:  
</pre>
 
</pre>
   −
In the '''default strategy''', it looks for a path to the edge in the direction it was already heading.
+
In this version, it looks for a path to the edge in the direction it was already heading.
    
<pre>
 
<pre>
Line 123: Line 123:  
             self._orientation = (i + n) % 6
 
             self._orientation = (i + n) % 6
 
             return self._dot_to_grid(dots[(i + n) % 6])
 
             return self._dot_to_grid(dots[(i + n) % 6])
 +
    return turtle
 +
</pre>
 +
 +
In the '''default strategy''', a weighting function is used: preference is given to dots closer to the edges.
 +
<pre>
 +
def _turtle_strategy(self, turtle):
 +
    dots = self._surrounding_dots(turtle)
 +
    for i in range(6):\n\
 +
        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
 
     return turtle
 
</pre>
 
</pre>
Line 142: Line 166:  
;self._surrounding_dots((column, row)): returns an array of dots surrounding a given position in the grid
 
;self._surrounding_dots((column, row)): returns an array of dots surrounding a given position in the grid
 
;self._daylight_ahead((column, row)): returns True if there is a clear path to the edge heading in the current direction
 
;self._daylight_ahead((column, row)): returns True if there is a clear path to the edge heading in the current direction
 +
:self._ordered_weights((column, row)): returns an array of surrounding dots ordered by their distance from the edge
 
;self._dots: the array of dots from which you can test the type attribute (self._dots[i].type==None → edge; self._dots[i].type==False → open; self._dots[i].type==True → blocked)
 
;self._dots: the array of dots from which you can test the type attribute (self._dots[i].type==None → edge; self._dots[i].type==False → open; self._dots[i].type==True → blocked)
 
;self._orientation:you can set the orientation of your turtle by assigning a number from 0-5 (clockwise beginning with 30 degrees from north)
 
;self._orientation:you can set the orientation of your turtle by assigning a number from 0-5 (clockwise beginning with 30 degrees from north)

Navigation menu