summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtroll41
1 files 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()