import pygame from pygame.locals import * import sys SCREEN_HEIGHT = 640 SCREEN_WIDTH = 480 def init_pygame(): pygame.init() pygame.key.set_repeat(10, 40) def create_screen(height=640, width=480): screen = pygame.display.set_mode((height, width)) screen.fill((255, 255, 255)) return screen def mainloop(screen): clock = pygame.time.Clock() while 1: pygame.display.flip() clock.tick(50) for event in pygame.event.get(): handle_event(event, screen) def handle_event(event, screen): x, y = SCREEN_HEIGHT/2, SCREEN_WIDTH/2 if event.type == KEYDOWN: # is a key pressed (down)? if event.key == K_ESCAPE: # esc key pressed? exit if so show_exit_message(screen) if event.key == K_UP: y -= 1 if event.key == K_DOWN: y += 1 if event.key == K_LEFT: x -= 1 if event.key == K_RIGHT: x += 1 # create line screen.set_at((x,y), (0,0,0)) def show_exit_message(screen): colour = (0,0,0) surface = create_font('Press any key to exit.', colour) textpos = surface.get_rect(centerx=screen.get_width()/2, centery=screen.get_height()/2) # fill & blit screen.fill((255,255,255)) screen.blit(surface, textpos) # exit on any keypress pygame.display.flip() while 1: if pygame.event.wait().type in (QUIT, KEYDOWN, MOUSEBUTTONDOWN): sys.exit() def create_font(msg, colour): font = pygame.font.Font(None, 30) surface = font.render(msg, 0, colour) return surface def show_msg(screen, msg, colour): surface = create_font(msg, colour) textpos = surface.get_rect(centerx=screen.get_width()/2, centery=screen.get_height()/2) screen.fill((255, 255, 255)) screen.blit(surface, textpos) def main(): init_pygame() screen = create_screen() mainloop(screen) if __name__ == '__main__': main()