Mercurial > mamba
annotate mamba/snake.py @ 177:e0573297b17c
Snake that moves (my god that was an epic struggle).
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Wed, 14 Sep 2011 01:45:41 +0200 |
parents | 9c47bf162ea1 |
children | 74f8d8cbc51d |
rev | line source |
---|---|
78 | 1 """The player snake object.""" |
2 | |
110 | 3 from pygame.sprite import Group |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
4 from pygame.locals import BLEND_MULT |
110 | 5 |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
6 from mamba.constants import TILE_SIZE |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
7 from mamba.sprites import BaseSprite |
98 | 8 from mamba import mutators |
78 | 9 |
10 | |
110 | 11 class Snake(object): |
78 | 12 |
110 | 13 UP, DOWN, LEFT, RIGHT = [(0, -1), (0, 1), (-1, 0), (1, 0)] |
78 | 14 |
15 def __init__(self, tile_pos, orientation): | |
110 | 16 self.segments = self.create_segments(tile_pos, orientation) |
17 self.segment_group = Group() | |
18 self.segment_group.add(*self.segments) | |
78 | 19 self.set_orientation(orientation) |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
20 self.speed = 60.0 # pixel / s |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
21 self.frac_ds = 0.0 |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
22 self.segments = self.create_segments(tile_pos, orientation) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
23 self.segment_group = Group(reversed(self.segments)) |
78 | 24 |
110 | 25 head = property(fget=lambda self: self.segments[0]) |
26 tail = property(fget=lambda self: self.segments[-1]) | |
27 | |
28 def create_segments(self, tile_pos, orientation): | |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
29 tx, ty = tile_pos |
110 | 30 dx, dy = orientation |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
31 return [Head((tx, ty)), |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
32 Body((tx + dx, ty + dy)), |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
33 Tail((tx + 2 * dx, ty + 2 * dy)), |
110 | 34 ] |
35 | |
36 def draw(self, surface): | |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
37 self.segment_group.draw(surface) |
98 | 38 |
122
45dd79e9ba1b
Rudimentary FPS and clock ticking.
Simon Cross <hodgestar@gmail.com>
parents:
119
diff
changeset
|
39 def update(self, dt): |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
40 ds = dt * self.speed + self.frac_ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
41 ds, self.frac_ds = divmod(ds, 1) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
42 ds = int(ds) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
43 while True: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
44 tile_state = self.head.get_tile_state() |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
45 shifted, ds = self.head.shift_head(ds) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
46 if not shifted: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
47 break |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
48 self.head.set_orientation(self.orientation) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
49 for segment in self.segments[1:]: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
50 old_tile_state = segment.get_tile_state() |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
51 segment.shift_tile(tile_state) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
52 tile_state = old_tile_state |
119
119c0fb758c2
Move key handling into GameWidget and GameWidget into widgets.game.
Simon Cross <hodgestar@gmail.com>
parents:
118
diff
changeset
|
53 |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
54 for segment in self.segments: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
55 segment.shift_pixels(ds) |
145
20b2cedf0f1d
Snake movement now turn
Gideon Visser <gideon@gideonvisser.com>
parents:
141
diff
changeset
|
56 |
78 | 57 def set_orientation(self, orientation): |
119
119c0fb758c2
Move key handling into GameWidget and GameWidget into widgets.game.
Simon Cross <hodgestar@gmail.com>
parents:
118
diff
changeset
|
58 self.orientation = orientation |
98 | 59 |
60 | |
110 | 61 class Segment(BaseSprite): |
62 | |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
63 GREEN = mutators.Overlay("tiles/common/snake/green.png", BLEND_MULT) |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
64 BLUE = mutators.BLUE |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
65 RED = mutators.RED |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
66 YELLOW = mutators.YELLOW |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
67 |
131 | 68 _detail_mutators = () |
69 | |
110 | 70 def __init__(self, image_name, tile_pos): |
71 super(Segment, self).__init__() | |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
72 self.set_base_image(image_name) |
131 | 73 self._colour_overlay = self.GREEN |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
74 self.orientation = Snake.UP |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
75 |
131 | 76 self.make_images() |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
77 self.update_image() |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
78 self.set_tile_pos(tile_pos) |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
79 |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
80 def set_base_image(self, image_name): |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
81 self._base_image = "/".join(["snake", image_name]) |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
82 |
131 | 83 def make_images(self): |
110 | 84 self._images = {} |
85 for orientation, muts in [ | |
86 (Snake.RIGHT, (mutators.RIGHT,)), | |
87 (Snake.LEFT, (mutators.LEFT,)), | |
88 (Snake.UP, (mutators.UP,)), | |
89 (Snake.DOWN, (mutators.DOWN,)), | |
90 ]: | |
131 | 91 all_muts = (self._colour_overlay,) + self._detail_mutators + muts |
141 | 92 self._images[orientation] = self.load_image(self._base_image, |
93 all_muts) | |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
94 |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
95 def update_image(self): |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
96 self.image = self._images[self.orientation] |
110 | 97 |
98 def set_orientation(self, orientation): | |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
99 self.orientation = orientation |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
100 self.update_image() |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
101 |
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
102 def set_colour(self, colour_overlay): |
131 | 103 self._colour_overlay = colour_overlay |
104 self.make_images() | |
125
625b22f92efa
the snake is green
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
122
diff
changeset
|
105 self.update_image() |
110 | 106 |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
107 def get_tile_state(self): |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
108 return self.tile_pos, self.orientation |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
109 |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
110 def shift_tile(self, tile_state): |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
111 """Shift this segment to the tile the other one was on. |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
112 |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
113 Also reset the position to be the center of the tile. |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
114 """ |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
115 tile_pos, orientation = tile_state |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
116 self.set_tile_pos(tile_pos) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
117 self.orientation = orientation |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
118 |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
119 def shift_pixels(self, distance): |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
120 """Shift this segment a number of pixels.""" |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
121 dx, dy = self.orientation |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
122 dx, dy = distance * dx, distance * dy |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
123 self.rect = self.rect.move(dx, dy) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
124 |
110 | 125 |
126 class Head(Segment): | |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
127 CLOSED = "snake-head" |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
128 OPEN = "snake-head-mouth-open-r" |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
129 EYE = mutators.Overlay("tiles/common/snake/snake-head-eye-r.png") |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
130 TONGUE = mutators.Overlay("tiles/common/snake/snake-head-tongue-r.png") |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
131 |
110 | 132 def __init__(self, tile_pos): |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
133 self._detail_mutators = (self.EYE,) |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
134 super(Head, self).__init__(self.CLOSED, tile_pos) |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
135 |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
136 def mouth_open(self): |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
137 self.set_base_image(self.OPEN) |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
138 self.make_images() |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
139 self.update_image() |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
140 |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
141 def mouth_closed(self): |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
142 self.set_base_image(self.CLOSED) |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
143 self.make_images() |
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
144 self.update_image() |
110 | 145 |
131 | 146 def tongue_out(self): |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
147 self._detail_mutators = (self.EYE, self.TONGUE) |
131 | 148 self.make_images() |
149 self.update_image() | |
150 | |
151 def tongue_in(self): | |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
152 self._detail_mutators = (self.EYE,) |
131 | 153 self.make_images() |
154 self.update_image() | |
155 | |
177
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
156 def shift_head(self, ds): |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
157 """Shift the head a number of pixels in the direction of it |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
158 orientation. |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
159 """ |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
160 dx, dy = self.orientation |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
161 TX, TY = TILE_SIZE |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
162 rx, ry = self.rect.left, self.rect.top |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
163 tx, ty = self.tile_pos |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
164 # WARNING: Tri-state logic ahead |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
165 # (Tri-state logic is the mamba's natural habitat) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
166 if dx != 0: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
167 newdx = rx + ds * dx |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
168 newtx = newdx / TX |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
169 if newtx > tx: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
170 self.set_tile_pos((tx + 1, ty)) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
171 ds = newdx - self.rect.left |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
172 return True, ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
173 elif newtx < tx - 1: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
174 self.set_tile_pos((tx - 1, ty)) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
175 ds = self.rect.left - newdx |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
176 return True, ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
177 else: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
178 newdy = ry + ds * dy |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
179 newty = newdy / TY |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
180 if newty > ty: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
181 self.set_tile_pos((tx, ty + 1)) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
182 ds = newdy - self.rect.top |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
183 return True, ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
184 elif newty < ty - 1: |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
185 self.set_tile_pos((tx, ty - 1)) |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
186 ds = self.rect.top - newdy |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
187 return True, ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
188 return False, ds |
e0573297b17c
Snake that moves (my god that was an epic struggle).
Simon Cross <hodgestar@gmail.com>
parents:
153
diff
changeset
|
189 |
110 | 190 |
191 class Body(Segment): | |
192 def __init__(self, tile_pos): | |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
193 super(Body, self).__init__("snake-body", tile_pos) |
110 | 194 |
195 | |
196 class Tail(Segment): | |
197 def __init__(self, tile_pos): | |
153
9c47bf162ea1
snake has plastic surgery
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
145
diff
changeset
|
198 super(Tail, self).__init__("snake-tail", tile_pos) |