From faf7bc07127beecf97d09293e580ef18c955bfee Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 11 Oct 2013 22:48:45 -0700 Subject: rotate person --- troll | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/troll b/troll index 7745746..e282a09 100755 --- a/troll +++ b/troll @@ -5,16 +5,40 @@ import sys class Tileset(object): tilesize = 16 + RIGHT = 0 + DOWN = 1 + LEFT = 2 + UP = 3 def __init__(self, screen): self.screen = screen - self.tileset = pygame.image.load('tileset.png').convert() + image = pygame.image.load('tileset.png').convert() + self.tileset = { + self.RIGHT: image, + self.UP: pygame.transform.rotate(image, 90), + self.LEFT: pygame.transform.rotate(image, 180), + self.DOWN: pygame.transform.rotate(image, 270), + } + self.tile_width, self.tile_height = image.get_size() + self.tile_width /= self.tilesize + self.tile_height /= self.tilesize - def _render(self, tile_x, tile_y, pos): - self.screen.blit(self.tileset, pos, (tile_x, tile_y*self.tilesize, self.tilesize, self.tilesize)) + def _render(self, tile_x, tile_y, pos, direction=RIGHT): + tileset = self.tileset[direction] + if direction == self.RIGHT: + x, y = tile_x, tile_y + elif direction == self.UP: + x, y = tile_y, self.tile_width - tile_x - 1 + elif direction == self.LEFT: + x, y = self.tile_width - tile_x - 1, self.tile_height - tile_y - 1 + elif direction == self.DOWN: + x, y = self.tile_height -tile_y - 1, tile_x + x *= self.tilesize + y *= self.tilesize + self.screen.blit(tileset, pos, (x, y, self.tilesize, self.tilesize)) - def render_person(self, pos): - self._render(0, 13, pos) + def render_person(self, pos, direction): + self._render(0, 13, pos, direction) size = width, height = 640, 480 black = (0, 0, 0) @@ -42,6 +66,7 @@ def handle_event(event): elif event.type == pygame.QUIT: sys.exit() +direction = Tileset.RIGHT while True: clock.tick(60) for event in pygame.event.get(): @@ -50,13 +75,17 @@ while True: SPEED = 4 if keys[pygame.K_RIGHT]: render_x += SPEED + direction = Tileset.RIGHT if keys[pygame.K_LEFT]: render_x -= SPEED + direction = Tileset.LEFT if keys[pygame.K_DOWN]: render_y += SPEED + direction = Tileset.DOWN if keys[pygame.K_UP]: render_y -= SPEED + direction = Tileset.UP screen.fill(black) - tileset.render_person((render_x, render_y)) + tileset.render_person((render_x, render_y), direction) pygame.display.flip() -- cgit v1.2.3