import pygame from engine import * from engine.event import * from breakout_ingame import * from breakout_graphics import * class breakout_playername(model.abstract_gamestate): def __init__(self): self.selected = 0 self.playername = [] self.logo = breakout_sprite() self.logo.set_image(misc.load_image("logo.png")) self.logo.set_pos((110,50)) ##self.keys = dict([('K_'+c, c) for c in "abcdefghijklmnopqrstuvwxyz"]) self.keys = {pygame.locals.K_a: 'a', pygame.locals.K_b: 'b', pygame.locals.K_c: 'c', pygame.locals.K_d: 'd', pygame.locals.K_e: 'e', pygame.locals.K_f: 'f', pygame.locals.K_g: 'g', pygame.locals.K_h: 'h', pygame.locals.K_i: 'i', pygame.locals.K_j: 'j', pygame.locals.K_k: 'k', pygame.locals.K_l: 'l', pygame.locals.K_m: 'm', pygame.locals.K_n: 'n', pygame.locals.K_o: 'o', pygame.locals.K_p: 'p', pygame.locals.K_q: 'q', pygame.locals.K_r: 'r', pygame.locals.K_s: 's', pygame.locals.K_t: 't', pygame.locals.K_u: 'u', pygame.locals.K_v: 'v', pygame.locals.K_w: 'w', pygame.locals.K_x: 'x', pygame.locals.K_y: 'y', pygame.locals.K_z: 'z'} ## Draws the menu to screen with the selected item in ## a differenct color. def draw_name(self, screen, pos): x,y = pos misc.draw_text("Enter your name:",\ 20,\ (0,0,0),\ screen,\ (x,y)) y += 25 ## A "neat" little hack :) misc.draw_text("".join(self.playername),\ 20,\ (255,0,0),\ screen,\ (x,y)) def delete_last(self): if len(self.playername) > 0: self.playername.pop() def add_last(self, c): if len(self.playername) < 15: self.playername.append(c) ## Handle keystrokes. def key_pressed(self, key): c = self.keys.get(key) if c == None: if key == pygame.locals.K_BACKSPACE: self.delete_last() elif key == pygame.locals.K_RETURN: score = misc.load("highscore.lst") state = breakout_ingame() state.set_highscore(score) state.set_playername("".join(self.playername)) self.set_state(state) else: self.add_last(c) def draw(self, screen): self.logo.draw(screen) self.draw_name(screen, (200,140))