From 998c8b44819036ccfaa09ea9a36e803ae1e74c48 Mon Sep 17 00:00:00 2001 From: olpc user Date: Fri, 05 Nov 2010 21:03:58 +0000 Subject: committed files that were ignored during last commit (lose condition) --- (limited to 'MAFH2/Profile.py') diff --git a/MAFH2/Profile.py b/MAFH2/Profile.py index 2494695..c3feac6 100644 --- a/MAFH2/Profile.py +++ b/MAFH2/Profile.py @@ -1,157 +1,165 @@ -import pygame - -from fortuneengine.GameEngineElement import GameEngineElement -from fortuneengine.DrawableFontObject import DrawableFontObject -from fortuneengine.DrawableObject import DrawableObject -from constants import MENU_PATH, NORTH, RIGHT, LEFT -from Hero import Hero -from Dungeon import Dungeon -from Items import Key -from gettext import gettext as _ - -class Profile(GameEngineElement): - def __init__(self, recall_string=None, name_entry_cb=None): - GameEngineElement.__init__(self) - self.name = "" - self.dungeon_id = "al1.txt" - self.position = (-1, -1) - self.playerFacing=NORTH - self.hero = Hero() - - # 4 types of stats and difficulties - self.problem_stats = {} - self.difficulty = {} - for stat in ['mult', 'div', 'geo', 'shop']: - - # Each type of stat has 3 "levels" easy, medium, hard - # Shop uses level for too much, too little, exact - self.problem_stats[stat] = [(0,0), (0,0), (0,0)] - - #Difficulty: 1=Easy 2=Meduim(default) 3=Hard - self.difficulty[stat] = 2 - - self.puzzlesSolved=0 - self.inventory = [] - - bg = pygame.image.load(MENU_PATH+"mafh_splash.gif").convert() - self.background = DrawableObject([bg], '') - self.background.scale(self.game_engine.width, self.game_engine.height) - self.add_to_scene([self.background]) - - #create background rect - draw_width = self.game_engine.width/4 - draw_height = self.game_engine.height/4 - surf = pygame.Surface((draw_width+60,draw_height+60)) - surf.fill((150,150,255)) - self.blueRect = DrawableObject([surf],"") - self.add_to_scene([self.blueRect]) - - font = pygame.font.Font(None, 16) - self.text_list = [] - self.text_list.append(DrawableFontObject("1", font)) - self.text_list.append(DrawableFontObject("2", font)) - self.text_list.append(DrawableFontObject("name",font)) - self.add_to_scene(self.text_list) - - - if recall_string: - self.load_from_json_string( recall_string ) - - if self.name == "": - self.name_cb = name_entry_cb - self.add_to_engine() - - def next_dungeon(self): - self.position = (-1, -1) - self.playerFacin = NORTH - - d = self.game_engine.get_object('dungeon') - self.dungeon_id = d.next - d.remove_from_engine() - self.game_engine.remove_object('dungeon') - self.game_engine.add_object('dungeon', Dungeon( self.dungeon_id )) - self.remove_keys() - - def load_from_json_string( self, recall_string ): - print "TO BE IMPLEMENTED" - - def dump_to_json_string( self ): - print "TO BE IMPLEMENTED" - - def update_problem_stat( self, p_type, level, correct ): - assert( p_type in self.problem_stats ) - assert( level >= 0 and level < len(self.problem_stats) - 1 ) - - correct, wrong = self.problem_stats[p_type][level] - if correct: - self.problem_stats[p_type][level] = (correct + 1, wrong) - else: - self.problem_stats[p_type][level] = (correct, wrong + 1) - - def move_to(self, x, y): - self.position = (x, y) - - def turn(self, dir): - if dir == RIGHT: - self.playerFacing = (self.playerFacing - 1) % 4 - - elif dir == LEFT: - self.playerFacing = (self.playerFacing + 1) % 4 - - def give_item(self, item): - self.inventory.append(item) - - def remove_keys(self): - i = 0 - new_inv = [] - for item in self.inventory: - if not isinstance(item, Key): - new_inv.append(item) - self.inventory = new_inv - - def add_to_engine(self): - super( Profile, self).add_to_engine() - - def remove_from_engine(self): - super( Profile, self).remove_from_engine() - - def event_handler(self, event): - """ - Handles user input (used only for name entry) - """ - if event.type == pygame.KEYDOWN: - if pygame.key.name(event.key)=='backspace': - self.name = self.name[0:-1] - return True - elif pygame.key.name(event.key)=='return': - self.remove_from_engine() - self.name_cb() - return True - else: - self.name+=event.unicode - return True - - def draw(self): - """ - Draws user input for name to the screen - """ - width = self.game_engine.width - height = self.game_engine.height - - draw_width = width/4 - draw_height = height/4 - - self.background.setPosition(0,0) - self.blueRect.setPosition(draw_width, draw_height) - - #name - self.text_list[0].changeText(self.name,(0,0,0)) - self.text_list[0].setPosition(draw_width+60, draw_height+60) - #text1 - self.text_list[1].changeText(_("Enter Name:"), (0,0,0)) - self.text_list[1].setPosition(draw_width,draw_height) - #text2 - self.text_list[2].changeText(_("Return to continue"), (0,0,0)) - self.text_list[2].setPosition(draw_width+20,draw_height+20) - - +import pygame + +from fortuneengine.GameEngineElement import GameEngineElement +from fortuneengine.DrawableFontObject import DrawableFontObject +from fortuneengine.DrawableObject import DrawableObject +from constants import MENU_PATH, NORTH, RIGHT, LEFT +from Hero import Hero +from Dungeon import Dungeon +from Items import Key +from gettext import gettext as _ + +class Profile(GameEngineElement): + def __init__(self, recall_string=None, name_entry_cb=None): + GameEngineElement.__init__(self) + self.name = "" + self.dungeon_id = "al1.txt" + self.position = (-1, -1) + self.playerFacing=NORTH + self.hero = Hero() + + # 4 types of stats and difficulties + self.problem_stats = {} + self.difficulty = {} + for stat in ['mult', 'div', 'geo', 'shop']: + + # Each type of stat has 3 "levels" easy, medium, hard + # Shop uses level for too much, too little, exact + self.problem_stats[stat] = [(0,0), (0,0), (0,0)] + + #Difficulty: 1=Easy 2=Meduim(default) 3=Hard + self.difficulty[stat] = 2 + + self.puzzlesSolved=0 + self.inventory = [] + + bg = pygame.image.load(MENU_PATH+"mafh_splash.gif").convert() + self.background = DrawableObject([bg], '') + self.background.scale(self.game_engine.width, self.game_engine.height) + self.add_to_scene([self.background]) + + #create background rect + draw_width = self.game_engine.width/4 + draw_height = self.game_engine.height/4 + surf = pygame.Surface((draw_width+60,draw_height+60)) + surf.fill((150,150,255)) + self.blueRect = DrawableObject([surf],"") + self.add_to_scene([self.blueRect]) + + font = pygame.font.Font(None, 16) + self.text_list = [] + self.text_list.append(DrawableFontObject("1", font)) + self.text_list.append(DrawableFontObject("2", font)) + self.text_list.append(DrawableFontObject("name",font)) + self.add_to_scene(self.text_list) + + + if recall_string: + self.load_from_json_string( recall_string ) + + if self.name == "": + self.name_cb = name_entry_cb + self.add_to_engine() + + def reload_dungeon(self): + self.__load_dungeon(self.game_engine.get_object('dungeon').id) + #restore HP + self.hero.setHealth(self.hero.maxHealthPoints()) + + def next_dungeon(self): + self.__load_dungeon(self.game_engine.get_object('dungeon').next) + + def __load_dungeon(self,id): + self.position = (-1, -1) + self.playerFacing = NORTH + + d = self.game_engine.get_object('dungeon') + self.dungeon_id = id + d.remove_from_engine() + self.game_engine.remove_object('dungeon') + self.game_engine.add_object('dungeon', Dungeon( self.dungeon_id )) + self.remove_keys() + + def load_from_json_string( self, recall_string ): + print "TO BE IMPLEMENTED" + + def dump_to_json_string( self ): + print "TO BE IMPLEMENTED" + + def update_problem_stat( self, p_type, level, correct ): + assert( p_type in self.problem_stats ) + assert( level >= 0 and level < len(self.problem_stats) - 1 ) + + correct, wrong = self.problem_stats[p_type][level] + if correct: + self.problem_stats[p_type][level] = (correct + 1, wrong) + else: + self.problem_stats[p_type][level] = (correct, wrong + 1) + + def move_to(self, x, y): + self.position = (x, y) + + def turn(self, dir): + if dir == RIGHT: + self.playerFacing = (self.playerFacing - 1) % 4 + + elif dir == LEFT: + self.playerFacing = (self.playerFacing + 1) % 4 + + def give_item(self, item): + self.inventory.append(item) + + def remove_keys(self): + i = 0 + new_inv = [] + for item in self.inventory: + if not isinstance(item, Key): + new_inv.append(item) + self.inventory = new_inv + + def add_to_engine(self): + super( Profile, self).add_to_engine() + + def remove_from_engine(self): + super( Profile, self).remove_from_engine() + + def event_handler(self, event): + """ + Handles user input (used only for name entry) + """ + if event.type == pygame.KEYDOWN: + if pygame.key.name(event.key)=='backspace': + self.name = self.name[0:-1] + return True + elif pygame.key.name(event.key)=='return': + self.remove_from_engine() + self.name_cb() + return True + else: + self.name+=event.unicode + return True + + def draw(self): + """ + Draws user input for name to the screen + """ + width = self.game_engine.width + height = self.game_engine.height + + draw_width = width/4 + draw_height = height/4 + + self.background.setPosition(0,0) + self.blueRect.setPosition(draw_width, draw_height) + + #name + self.text_list[0].changeText(self.name,(0,0,0)) + self.text_list[0].setPosition(draw_width+60, draw_height+60) + #text1 + self.text_list[1].changeText(_("Enter Name:"), (0,0,0)) + self.text_list[1].setPosition(draw_width,draw_height) + #text2 + self.text_list[2].changeText(_("Return to continue"), (0,0,0)) + self.text_list[2].setPosition(draw_width+20,draw_height+20) + + -- cgit v0.9.1