changeset 145:20b2cedf0f1d

Snake movement now turn
author Gideon Visser <gideon@gideonvisser.com>
date Mon, 12 Sep 2011 23:53:03 -0700
parents b292370c4548
children 5bade7867d04
files mamba/snake.py
diffstat 1 files changed, 20 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/snake.py	Mon Sep 12 21:14:15 2011 +0200
+++ b/mamba/snake.py	Mon Sep 12 23:53:03 2011 -0700
@@ -2,7 +2,8 @@
 
 from pygame.sprite import Group
 from pygame.locals import BLEND_MULT
-from pygame.draw import lines
+#from pygame.draw import lines
+from pygame.draw import rect
 
 from mamba.sprites import BaseSprite, tile_sizify
 from mamba import mutators
@@ -19,11 +20,19 @@
         self.segment_group.add(*self.segments)
         self.set_orientation(orientation)
         self.pos = tile_sizify(tile_pos)
-        self.length = 60.0
+        self.length = 80
+        self.xs = self.snake_length(self.length)
+        self.ys = self.snake_length(self.length)
 
     head = property(fget=lambda self: self.segments[0])
     tail = property(fget=lambda self: self.segments[-1])
 
+    def snake_length(self, size=10):
+        result = []
+        for i in range(size):
+            result.append(0)
+        return result
+
     def create_segments(self, tile_pos, orientation):
         x, y = tile_pos
         dx, dy = orientation
@@ -35,7 +44,9 @@
     def draw(self, surface):
         # self.segment_group.draw(surface)
         (x, y), l = self.pos, self.length
-        lines(surface, (0, 0, 255), False, [(x, y), (x + l, y)], 20)
+        #lines(surface, (0, 0, 255), False, [(x, y), (x + l, y)], 20)
+        for i in range(0, len(self.xs)):
+            rect(surface, (0, 0, 255), [(self.xs[i], self.ys[i]), (20, 20)])
 
     def update(self, dt):
         x, y = self.pos
@@ -43,6 +54,12 @@
         ds = self.SPEED * dt
         self.pos = (x + ox * ds, y + oy * ds)
 
+        for i in reversed(xrange(1, len(self.xs))):
+            self.xs[i] = self.xs[i - 1]
+            self.ys[i] = self.ys[i - 1]
+        self.xs[0] = self.pos[0]
+        self.ys[0] = self.pos[1]
+
     def set_orientation(self, orientation):
         self.orientation = orientation
         #self.orientation = orientation