def __init__(self): super(ScreenManager, self).__init__() self.score = 0 self.MainMenu = MainMenuScreen(name="MainMenu") self.MainMenu.sm = self self.add_widget(self.MainMenu) self.PlayScreen = PlayScreen(name="Play") self.PlayScreen.ids[ "Health"].open_score_screen = self.open_score_screen self.PlayScreen.ids["Ball"].open_score_screen = self.open_score_screen self.add_widget(self.PlayScreen) self.ScoreScreen = ScoreScreen(name="Score") self.add_widget(self.ScoreScreen) self.HowToPlayScreen = HowToPlayScreen(name="HowToPlay", text=howToPlayScreenText) self.add_widget(self.HowToPlayScreen) self.FurtherReadingScreen = FurtherReadingScreen( name="FurtherReading", text=furtherReadingScreenText) self.add_widget(self.FurtherReadingScreen) self.HowIsItRelatedToTheSkinImmuneSystemScreen = \ HowIsItRelatedToTheSkinImmuneSystemScreen(name="HowIsItRelatedToTheSkinImmuneSystem", text=howIsItRelatedToTheSkinImmuneSystemScreenText) self.add_widget(self.HowIsItRelatedToTheSkinImmuneSystemScreen) self.transition = FadeTransition(duration=fadeLength)
def process_events(self): """Process the event queue, take in player input.""" #lots of other stuff will be needed, of course run = True if self.miniGame: if not self.miniGame.process_events(): self.lastScore = self.miniGame.get_score() self.scoreScreen = ScoreScreen(screenSize, self.miniGame.get_game(), self.lastScore) self.miniGame = False pygame.display.set_caption("Giga-Bright presents:") #self.createGUI() elif self.scoreScreen: if not self.scoreScreen.process_events(): self.highscoresList = HighscoresList(screenSize, self.scoreScreen.get_game()) self.scoreScreen = False pygame.display.set_caption("Giga-Bright presents:") elif self.highscoresList: if not self.highscoresList.process_events(): self.highscoresList = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") elif self.guideMenu: if not self.guideMenu.process_events(): self.guideData = self.guideMenu.retrieveData() #print self.guideData self.guideMenu = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") elif self.loadMenu: if not self.loadMenu.process_events(): self.loadMenu = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") else: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: run = False if self.avatar: if event.key == pygame.K_RIGHT: self.avatar.state['right'] = True if event.key == pygame.K_LEFT: self.avatar.state['left'] = True if event.key == pygame.K_UP: self.avatar.state['up'] = True if event.key == pygame.K_DOWN: self.avatar.state['down'] = True if event.type == pygame.KEYUP: if self.avatar: if event.key == pygame.K_RIGHT: self.avatar.state['right'] = False if event.key == pygame.K_LEFT: self.avatar.state['left'] = False if event.key == pygame.K_UP: self.avatar.state['up'] = False if event.key == pygame.K_DOWN: self.avatar.state['down'] = False return run
class Game(object): __fps = 60 def __init__(self): """Initialize the game.""" pygame.init() self.screen = pygame.display.set_mode(screenSize) pygame.display.set_caption("Giga-Bright presents:") self.clock = pygame.time.Clock() self.miniGame = False self.loaderBoxes = [] self.curLoaderId = 0 self.avatar = False self.createGUI() self.guideMenu = False self.guideData = [] self.loadMenu = False self.scoreScreen = False self.highscoresList = False self.lastScore = 0 #lots of other stuff will be needed, of course #debug stuff below #turning off this for GUI stuff #self.miniGame = LineGame([]) def createGUI(self): self.avatar = Avatar(((self.screen.get_width() / 2), self.screen.get_height() / 2)) self.avatar.set_pos((self.avatar.get_pos()[0] - self.avatar.get_res()[0] / 2, self.avatar.get_pos()[1] - self.avatar.get_res()[1] / 2)) self.curLoaderId = 0 #top loaders for i in range(3): tempBox = LoaderBox(((self.screen.get_width() / 3) * i, 0), self.curLoaderId, loaderText[self.curLoaderId]) self.curLoaderId += 1 tempBox.set_pos((tempBox.get_pos()[0] + tempBox.get_res()[0] / 3, tempBox.get_pos()[1])) self.loaderBoxes.append(tempBox) #bottom loaders for i in range(3): tempBox = LoaderBox(((self.screen.get_width() / 3) * i, self.screen.get_height()), self.curLoaderId, loaderText[self.curLoaderId]) self.curLoaderId += 1 tempBox.set_pos((tempBox.get_pos()[0] + tempBox.get_res()[0] / 3, tempBox.get_pos()[1] - tempBox.get_res()[1])) self.loaderBoxes.append(tempBox) #side loaders #left #tempBox = LoaderBox((0, self.screen.get_height() / 2), self.curLoaderId, 90) #self.curLoaderId += 1 #tempBox.set_pos((tempBox.get_pos()[0], tempBox.get_pos()[1] - tempBox.get_res()[1] / 2)) #self.loaderBoxes.append(tempBox) #right #tempBox = LoaderBox((self.screen.get_width(), self.screen.get_height() / 2), self.curLoaderId, 90) #self.curLoaderId += 1 #tempBox.set_pos((tempBox.get_pos()[0] - tempBox.get_res()[0], tempBox.get_pos()[1] - tempBox.get_res()[1] / 2)) #self.loaderBoxes.append(tempBox) #print len(self.loaderBoxes) def process_events(self): """Process the event queue, take in player input.""" #lots of other stuff will be needed, of course run = True if self.miniGame: if not self.miniGame.process_events(): self.lastScore = self.miniGame.get_score() self.scoreScreen = ScoreScreen(screenSize, self.miniGame.get_game(), self.lastScore) self.miniGame = False pygame.display.set_caption("Giga-Bright presents:") #self.createGUI() elif self.scoreScreen: if not self.scoreScreen.process_events(): self.highscoresList = HighscoresList(screenSize, self.scoreScreen.get_game()) self.scoreScreen = False pygame.display.set_caption("Giga-Bright presents:") elif self.highscoresList: if not self.highscoresList.process_events(): self.highscoresList = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") elif self.guideMenu: if not self.guideMenu.process_events(): self.guideData = self.guideMenu.retrieveData() #print self.guideData self.guideMenu = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") elif self.loadMenu: if not self.loadMenu.process_events(): self.loadMenu = False self.createGUI() pygame.display.set_caption("Giga-Bright presents:") else: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: run = False if self.avatar: if event.key == pygame.K_RIGHT: self.avatar.state['right'] = True if event.key == pygame.K_LEFT: self.avatar.state['left'] = True if event.key == pygame.K_UP: self.avatar.state['up'] = True if event.key == pygame.K_DOWN: self.avatar.state['down'] = True if event.type == pygame.KEYUP: if self.avatar: if event.key == pygame.K_RIGHT: self.avatar.state['right'] = False if event.key == pygame.K_LEFT: self.avatar.state['left'] = False if event.key == pygame.K_UP: self.avatar.state['up'] = False if event.key == pygame.K_DOWN: self.avatar.state['down'] = False return run def update(self): """Update the game objects.""" #call update functions for all objects delta_time = float(self.clock.tick(self.__fps)) / 1000 if self.miniGame: self.miniGame.update() elif self.scoreScreen: self.scoreScreen.update() elif self.highscoresList: self.highscoresList.update() elif self.guideMenu: self.guideMenu.update() elif self.loadMenu: self.loadMenu.update() else: self.avatar.update(delta_time) for l in self.loaderBoxes: if l.rect.colliderect(self.avatar.rect): self.loadItem(l.get_id()) pass def draw(self): """Draw the game objects.""" #call draw functions for all objects pygame.draw.rect(self.screen, (0,0,0), (0,0,screenSize[0],screenSize[1])) if self.miniGame: self.miniGame.draw(self.screen) elif self.scoreScreen: self.scoreScreen.draw(self.screen) elif self.highscoresList: self.highscoresList.draw(self.screen) elif self.guideMenu: self.guideMenu.draw(self.screen) elif self.loadMenu: self.loadMenu.draw(self.screen) else: self.avatar.draw(self.screen) for l in self.loaderBoxes: l.draw(self.screen) def loadItem(self, id): #only loading LineGame for now del self.loaderBoxes[:] del self.avatar #self.avatar.set_pos(((self.screen.get_width() / 2), self.screen.get_height() / 2)) #self.avatar.set_pos((self.avatar.get_pos()[0] - self.avatar.get_res()[0] / 2, self.avatar.get_pos()[1] - self.avatar.get_res()[1] / 2)) if id == 0: #debug code if not self.guideData: m = [("Question Number 1",("Answer Number 1","Ans")),\ ("Question Number 2",("Answer Number 2","Ans")),\ ("Question Number 3",("Answer Number 3","Ans")),\ ("Question Number 4",("Answer Number 4","Ans")),\ ("Question Number 5",("Answer Number 5","Ans")),\ ("Question Number 6",("Answer Number 6","Ans")),\ ("Question Number 7",("Answer Number 7","Ans")),\ ("Question Number 8",("Answer Number 8","Ans"))] self.miniGame = LineGame(screenSize,m) else: self.miniGame = LineGame(screenSize, self.guideData) elif id == 1: self.miniGame = FlipGame(screenSize, self.guideData) elif id == 2: self.miniGame = InvadersGame(screenSize, self.guideData) elif id == 3: self.guideMenu = GuideLoader(screenSize) elif id == 4: self.loadMenu = SGDownloader(screenSize) elif id == 5: self.loadMenu = SGUploader(screenSize) else: self.createGUI()