예제 #1
0
파일: Game.py 프로젝트: span/taxrunner
    def game_loop(self):
        pygame.mouse.set_visible(0)
        while True:
            pygame.time.Clock().tick(self.FPS)
            events = pygame.event.get()
            for event in events:
                if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
                    self.state = 'quit'
                    return
                elif self.state == 'game':
                    if event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.up = True
                    if event.type == KEYUP:
                        if event.key == K_UP:
                            self.up = False
                elif self.state == 'gameover':
                    if event.type == KEYUP:
                        if event.key == K_RETURN:
                            if self.nameinput != None:
                                name = self.nameinput.value
                                if name == '':
                                    name = 'no name'
                                Score.update_highscore(name, self.level.get_score(), self.hiscores)
                            self.state = 'menu'
                            return
             
            # Update level 
            self.level.update(self.up)
            self.level.draw()
            self.text = self.font.render("$" + str(self.level.get_score()), 1, self.DARK_GREY)
            self.surface.blit(self.text, (10, 10))

            # If player is busted the level is ended
            if self.level.player.state == 'busted':
                if Score.is_highscore(self.level.get_score(), self.hiscores):
                    self.message = "NEW HISCORE!"
                    if self.nameinput == None:
                        self.nameinput = eztext.Input(x = 400, y = 440, maxlength = 6, color = self.GREEN, prompt = 'Enter name: ')
                    self.nameinput.update(events)
                    self.nameinput.draw(self.surface)
                else:
                    self.message = "You did not collect enough cash, try again!"
                self.show_final_score()
                self.up = False
                self.state = 'gameover'

            # Flip the buffer to show the updates
            pygame.display.flip()