Mercurial > skaapsteker
view scripts/level-editor @ 43:abbc9ada8dc4
Enemies must fall
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 20:42:55 +0200 |
parents | 4a9e26f1f35a |
children | 7f7b4bfbaf0e |
line wrap: on
line source
#!/usr/bin/env python "Skaapsteker level editor" import optparse import os.path import sys sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) import pygame import pygame.key from pygame.locals import (SWSURFACE, QUIT, KEYDOWN, K_UP, K_DOWN, K_LEFT, K_RIGHT, KMOD_SHIFT, K_q) from skaapsteker.constants import SCREEN from skaapsteker.level import Level FRAMERATE = 60 def run(levelname): clock = pygame.time.Clock() screen_surface = pygame.display.get_surface() level = Level(levelname) level_surface = level.get_surface() position = [0, 0] while True: events = pygame.event.get() for ev in events: if ev.type is QUIT: return elif ev.type is KEYDOWN: distance = 64 if ev.mod & KMOD_SHIFT != 0: distance *= 10 if ev.key == K_UP: position[1] -= distance elif ev.key == K_DOWN: position[1] += distance elif ev.key == K_LEFT: position[0] -= distance elif ev.key == K_RIGHT: position[0] += distance elif ev.key == K_q: return position[0] = max(position[0], 0) position[0] = min(position[0], level.pixel_size[0] - SCREEN[0]) position[1] = max(position[1], 0) position[1] = min(position[1], level.pixel_size[1] - SCREEN[1]) clip_rect = pygame.Rect(position, screen_surface.get_size()) level_surface.set_clip(clip_rect) level.draw(level_surface) screen_surface.blit(level_surface, (0, 0), clip_rect) pygame.display.flip() clock.tick(FRAMERATE) def main(): p = optparse.OptionParser(usage="%prog [options] levelname") opts, args = p.parse_args() if len(args) != 1: p.error("Must provide level name") pygame.display.init() pygame.font.init() pygame.display.set_mode(SCREEN, SWSURFACE) pygame.display.set_caption("Skaapsteker Level Editor") pygame.key.set_repeat(100, 20) run(args[0]) if __name__ == '__main__': main()