Mercurial > pygame-tutorial
view 001/004.py @ 12:9dc97f88e274 default tip
Added CC0 license
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 08 Jul 2012 19:56:38 +0200 |
| parents | 2661d2091f1d |
| children |
line wrap: on
line source
#!/usr/bin/env python # -*- coding: utf-8 -*- import pygame import pygame.locals as pg LEVEL_MAP = [ "XXXXXXXXXXXXXXXXXXXXXXXXX", "X.......................X", "X.XXXXXXXXXX.XXXXXXXXXX.X", "X.X......X.X..........X.X", "X.X..X.XXX.X.XXXXXXXXXX.X", "X.XXXX.....X.......X..X.X", "X......XXXXXXXXXXX.X..X.X", "X.XX.X.X.........X....X.X", "X.X..X...........X.X..X.X", "X.X..X.X.........X.X..X.X", "X.X..X.XXXXXXXXXXX.XXXX.X", "X.XXXX..................X", "X.X..X.XXXXXXXXXXXXXXXX.X", "X.X..X................X.X", "X.X....X..............X.X", "X.XXXX.XXXXXXXXXXXXXXXX.X", "X.......................X", "XXXXXXXXXXXXXXXXXXXXXXXXX", ] def initialize_screen(): pygame.display.init() screen = pygame.display.set_mode((800, 600)) screen.fill((0x66, 0x66, 0x66)) return screen def load_images(): images = { 'X': pygame.image.load('wall.png').convert(), '.': pygame.image.load('dirt.png').convert(), '@': pygame.image.load('hero.png').convert(), } return images def draw_map(screen, images, level_map): for y, row in enumerate(level_map): for x, square in enumerate(row): screen.blit(images[square], (x * 32, y * 32)) def move_hero(level_map, x, y, dx, dy): if level_map[y + dy][x + dx] == '.': level_map[y][x] = '.' x += dx y += dy level_map[y][x] = '@' return x, y def walk_around(screen, images, level_map): hero_x, hero_y = 1, 1 level_map = [list(row) for row in level_map] level_map[hero_y][hero_x] = '@' while True: draw_map(screen, images, level_map) pygame.display.update() event = pygame.event.wait() if event.type == pg.QUIT: return elif event.type == pg.KEYDOWN: if event.key == pg.K_ESCAPE: return elif event.key == pg.K_DOWN: hero_x, hero_y = move_hero(level_map, hero_x, hero_y, 0, 1) elif event.key == pg.K_UP: hero_x, hero_y = move_hero(level_map, hero_x, hero_y, 0, -1) elif event.key == pg.K_LEFT: hero_x, hero_y = move_hero(level_map, hero_x, hero_y, -1, 0) elif event.key == pg.K_RIGHT: hero_x, hero_y = move_hero(level_map, hero_x, hero_y, 1, 0) def run_game(): screen = initialize_screen() images = load_images() walk_around(screen, images, LEVEL_MAP) if __name__ == '__main__': run_game()
