# HG changeset patch # User Simon Cross # Date 1315765073 -7200 # Node ID e6299eb296ce905ba5809550991b73d5b50d3100 # Parent dc0b0be7e2f65da11b6151dbf266e0cb95de5eb8 Draw the world! diff -r dc0b0be7e2f6 -r e6299eb296ce mamba/level.py --- a/mamba/level.py Sun Sep 11 20:15:32 2011 +0200 +++ b/mamba/level.py Sun Sep 11 20:17:53 2011 +0200 @@ -121,3 +121,7 @@ def get_entry(self): return (self.entry.tile_pos, self.entry.direction) + + def draw(self, surface): + self.background.blit(surface, (0, 0)) + self.sprites.draw(surface) diff -r dc0b0be7e2f6 -r e6299eb296ce mamba/snake.py --- a/mamba/snake.py Sun Sep 11 20:15:32 2011 +0200 +++ b/mamba/snake.py Sun Sep 11 20:17:53 2011 +0200 @@ -1,28 +1,72 @@ """The player snake object.""" +from pygame.sprite import Group + from mamba.sprites import BaseSprite from mamba import mutators -class Snake(BaseSprite): +class Snake(object): - UP, DOWN, LEFT, RIGHT = range(4) + UP, DOWN, LEFT, RIGHT = [(0, -1), (0, 1), (-1, 0), (1, 0)] def __init__(self, tile_pos, orientation): - super(Snake, self).__init__(image_name="snake/" - "snake-head-mouth-open-r") - self.load_images() - self.set_tile_pos(tile_pos) + self.segments = self.create_segments(tile_pos, orientation) + self.segment_group = Group() + self.segment_group.add(*self.segments) self.set_orientation(orientation) - def load_images(self): - pass + head = property(fget=lambda self: self.segments[0]) + tail = property(fget=lambda self: self.segments[-1]) + + def create_segments(self, tile_pos, orientation): + x, y = tile_pos + dx, dy = orientation + return [Head((x, y)), + Body((x + dx, y + dy)), + Tail((x + 2 * dx, y + 2 * dy)), + ] + + def draw(self, surface): + self.segment_sprites.draw(surface) def set_orientation(self, orientation): - self._orientation = orientation - print ["UP", "DOWN", "LEFT", "RIGHT"][orientation] - # TODO: update image + #self.orientation = orientation + #for segment in self.segments: + # segment.set_orientation(self) + print orientation -class Head(object): - pass +class Segment(BaseSprite): + + def __init__(self, image_name, tile_pos): + super(Segment, self).__init__() + image_name = "/".join(["snake", image_name]) + self._images = {} + for orientation, muts in [ + (Snake.RIGHT, (mutators.RIGHT,)), + (Snake.LEFT, (mutators.LEFT,)), + (Snake.UP, (mutators.UP,)), + (Snake.DOWN, (mutators.DOWN,)), + ]: + self._images[orientation] = self.load_image(image_name, muts) + self.set_orientation(Snake.RIGHT) + self.set_tile_pos(tile_pos) + + def set_orientation(self, orientation): + self.image = self._images[orientation] + + +class Head(Segment): + def __init__(self, tile_pos): + super(Head, self).__init__("snake-head-mouth-open-r", tile_pos) + + +class Body(Segment): + def __init__(self, tile_pos): + super(Body, self).__init__("snake-body-r", tile_pos) + + +class Tail(Segment): + def __init__(self, tile_pos): + super(Tail, self).__init__("snake-tail-r", tile_pos) diff -r dc0b0be7e2f6 -r e6299eb296ce mamba/widgets/level.py --- a/mamba/widgets/level.py Sun Sep 11 20:15:32 2011 +0200 +++ b/mamba/widgets/level.py Sun Sep 11 20:17:53 2011 +0200 @@ -10,9 +10,24 @@ super(LevelWidget, self).__init__(level_rect) def draw(self, surface): - surface.blit(self.level.background, (0, 0)) - self.level.sprites.draw(surface) + self.level.draw(surface) def event(self, event): # TODO: Implement pass + + +class GameWidget(Widget): + def __init__(self, world, level, offset=(0, 0)): + self.world = world + self.level = level + rect = Rect(offset, level.get_size()) + super(GameWidget, self).__init__(rect) + + def draw(self, surface): + self.level.draw(surface) + self.world.draw(surface) + + def event(self, ev): + # TODO: Implement + pass diff -r dc0b0be7e2f6 -r e6299eb296ce mamba/world.py --- a/mamba/world.py Sun Sep 11 20:15:32 2011 +0200 +++ b/mamba/world.py Sun Sep 11 20:17:53 2011 +0200 @@ -8,3 +8,6 @@ self.level = level tile_pos, orientation = level.get_entry() self.snake = Snake(tile_pos, orientation) + + def draw(self, surface): + self.snake.draw(surface)