Beispiel #1
0
    def run(self):
        done = False

        while not done:
            self.screen.blit(Menu.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            for i in xrange(len(self.menu)):
                self.render(i)

            cloud.update()

            cloud.draw(self.screen)

            rect = Menu.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(Menu.logo, rect)

            image = util.smallfont.render("http://funnyboat.sourceforge.net/",
                                          True, (0, 0, 0))
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.move_up()
                            if event.value > 0.5:
                                self.move_down()
                    elif event.type == JOYBUTTONDOWN:
                        if event.button == 0:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.move_up()
                        elif event.key == K_DOWN:
                            self.move_down()
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            done = True

        return self.selection
Beispiel #2
0
    def run(self):
        done = False

        while not done:
            self.screen.blit(Menu.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            for i in xrange(len(self.menu)):
                self.render(i)

            cloud.update()

            cloud.draw(self.screen)

            rect = Menu.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(Menu.logo, rect)

            image = util.smallfont.render("http://funnyboat.sourceforge.net/", True, (0,0,0))
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.move_up()
                            if event.value > 0.5:
                                self.move_down()
                    elif event.type == JOYBUTTONDOWN:
                        if event.button == 0:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.move_up()
                        elif event.key == K_DOWN:
                            self.move_down()
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            done = True

        return self.selection
Beispiel #3
0
    def draw(self):
        self.screen.blit(Game.sky, self.screen.get_rect())
        self.health_sprite.draw(self.screen)
        self.score_sprite.draw(self.screen)
        self.player_sprite.draw(self.screen)
        self.powerup_sprites.draw(self.screen)
        self.pirate_sprites.draw(self.screen)
        if self.titanic:
            self.titanic_sprite.draw(self.screen)
        self.seagull_sprites.draw(self.screen)
        cloud.draw(self.screen)
        self.shark_sprites.draw(self.screen)
        self.mine_sprites.draw(self.screen)
        self.cannonball_sprites.draw(self.screen)
        self.water_sprite.draw(self.screen)
        if Variables.particles:
            self.particle_sprite.draw(self.screen)

        if self.pause:
            self.screen.blit(self.pause_image, self.pause_rect)

        if self.gameover:
            self.screen.blit(self.gameover_image, self.gameover_rect)

        if self.level.t < 120:
            image = None
            i = 0
            if self.level.phase < len(self.level.phase_messages):
                for text in self.level.phase_messages[self.level.phase].split(
                        "\n"):
                    image = util.smallfont.render(text, Variables.alpha,
                                                  (0, 0, 0))
                    rect = image.get_rect()
                    rect.centerx = self.screen.get_rect().centerx
                    rect.top = 100 + rect.height * i
                    blit_image = pygame.Surface(
                        (image.get_width(), image.get_height()))
                    blit_image.fill((166, 183, 250))
                    blit_image.set_colorkey((166, 183, 250))
                    blit_image.blit(image, image.get_rect())
                    if self.level.t > 60:
                        blit_image.set_alpha(255 -
                                             (self.level.t - 60) * 255 / 60)
                    self.screen.blit(blit_image, rect)
                    i += 1

        pygame.display.flip()
Beispiel #4
0
    def draw(self):
        self.screen.blit(self.sky, self.screen.get_rect())
        self.screen.blit(self.pause_icon, (SCREEN_WIDTH - 32, 0))
        self.health_sprite.draw(self.screen)
        self.score_sprite.draw(self.screen)
        self.player_sprite.draw(self.screen)
        self.powerup_sprites.draw(self.screen)
        self.pirate_sprites.draw(self.screen)
        if self.titanic:
            self.titanic_sprite.draw(self.screen)
        self.seagull_sprites.draw(self.screen)
        cloud.draw(self.screen)
        self.shark_sprites.draw(self.screen)
        self.mine_sprites.draw(self.screen)
        self.cannonball_sprites.draw(self.screen)
        self.water_sprite.draw(self.screen)
        if not self.noparticles:
            self.particle_sprite.draw(self.screen)

        if self.pause:
            self.screen.blit(self.pause_image, self.pause_rect)

        if self.gameover:
            self.screen.blit(self.gameover_image, self.gameover_rect)

        if self.level.t < 120:
            font = util.load_font("Cosmetica", 16)
            image = None
            i = 0
            if self.level.phase < len(self.level.phase_messages):
              for text in self.level.phase_messages[self.level.phase].split("\n"):
                image = font.render(text, True, (0,0,0))
                rect = image.get_rect()
                rect.centerx = self.screen.get_rect().centerx
                rect.top = 100 + rect.height * i
                blit_image = pygame.Surface((image.get_width(), image.get_height()))
                blit_image.fill((166,183,250))
                blit_image.set_colorkey((166,183,250))
                blit_image.blit(image, image.get_rect())
                if self.level.t > 60:
                    blit_image.set_alpha(255 - (self.level.t - 60) * 255 / 60)
                self.screen.blit(blit_image, rect)
                i += 1

        pygame.display.flip()
Beispiel #5
0
    def run(self):
        water = Water.global_water
        water_sprite = pygame.sprite.Group()
        water_sprite.add(water)
        while not self.done:
            self.screen.blit(self.sky, self.screen.get_rect())
            water.update()
            cloud.update()
            cloud.draw(self.screen)
            water_sprite.draw(self.screen)

            rect = self.title.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 10

            self.screen.blit(self.title, rect)

            for i in range(10):
                color = (0, 0, 0)
                if self.inputting and self.input_score == i:
                    color = (220, 120, 20)
                score = self.scores[i]
                image = self.font.render(
                    str(i + 1) + ". " + score[0], True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.left = 10
                self.screen.blit(image, rect)

                image = self.font.render(str(score[1]), True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.right = self.screen.get_rect().right - 10
                self.screen.blit(image, rect)

            pygame.display.flip()

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == NEXTFRAME:
                        nextframe = True
                        continue
                    if self.inputting:
                        if event.type == QUIT:
                            self.inputting = False
                            self.write_scores()
                        if event.type == KEYDOWN:
                            if event.key == K_RETURN or event.key == K_ESCAPE:
                                self.inputting = False
                                self.write_scores()
                            elif event.key == K_BACKSPACE:
                                if len(self.scores[self.input_score][0]) != 0:
                                    self.scores[
                                        self.input_score][0] = self.scores[
                                            self.input_score][0][:-1]
                            elif event.key == K_SPACE or event.unicode != " ":
                                if len(self.scores[self.input_score][0]) < 32:
                                    self.scores[
                                        self.input_score][0] += event.unicode
                    else:
                        if event.type == KEYDOWN or event.type == QUIT or event.type == JOYBUTTONDOWN:
                            self.done = True
                            nextframe = True
Beispiel #6
0
    def run(self):
        done = False

        while not done:
            self.screen.blit(Options.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            for i in xrange(len(self.menu)):
                self.render(i)

            cloud.update()

            cloud.draw(self.screen)

            rect = Options.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(Options.logo, rect)

            image = util.smallfont.render("http://funnyboat.sourceforge.net/",
                                          True, (0, 0, 0))
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.move_up()
                            if event.value > 0.5:
                                self.move_down()
                        elif event.axis == 0:
                            if event.value < -0.5:
                                self.change_left()
                            if event.value > 0.5:
                                self.change_right()
                    elif event.type == JOYBUTTONDOWN:
                        if self.gamepad:
                            if self.gamepad.is_pressed('a', event):
                                self.change_right()
                            elif self.gamepad.is_pressed('b', event):
                                done = True
                        elif event.button == 0:
                            #done = True
                            self.change_right()
                        elif event.button == 1:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.move_up()
                        elif event.key == K_DOWN:
                            self.move_down()
                        elif event.key == K_LEFT:
                            self.change_left()
                        elif event.key == K_RIGHT:
                            self.change_right()
                        elif self.selection == Options.NAME:
                            if event.key == K_BACKSPACE:
                                if len(Variables.name) != 0:
                                    Variables.name = Variables.name[:-1]
                            elif event.key == K_SPACE or event.unicode != " " and event.unicode >= u' ':
                                if len(Variables.name) < 32:
                                    Variables.name += event.unicode
                            self.refresh()
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            #done = True
                            self.change_right()

        util.save_config()
        return self.selection
Beispiel #7
0
    def run(self):
        done = False

        while not done:
            self.screen.blit(self.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            if not self.gametype_select:
                self.render("New Game", Menu.NEWGAME)
                self.render("High Scores", Menu.HIGHSCORES)
                #self.render("Options", Menu.OPTIONS)
                self.render("Quit", Menu.QUIT)
            else:
                self.render("Story mode", Menu.STORY)
                self.render("Endless mode", Menu.ENDLESS)

            cloud.update()

            cloud.draw(self.screen)

            rect = self.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(self.logo, rect)

            image = self.url_font.render("http://funnyboat.sourceforge.net/", True, (0,0,0))
            bottom = rect.bottom
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            #rect.bottomright = self.screen.get_rect().bottomright
            #rect.bottom = bottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.selection -= 1
                                if not self.gametype_select:
                                    if self.selection == Menu.OPTIONS:
                                        self.selection = Menu.HIGHSCORES
                                if self.selection < 0:
                                    self.selection = 0
                            if event.value > 0.5:
                                self.selection += 1
                                if not self.gametype_select:
                                    if self.selection == Menu.OPTIONS:
                                        self.selection = Menu.QUIT
                                    if self.selection > Menu.QUIT:
                                        self.selection = Menu.QUIT
                                else:
                                    if self.selection > Menu.ENDLESS:
                                        self.selection = Menu.ENDLESS
                    elif event.type == JOYBUTTONDOWN:
                        if event.button == 0:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.selection -= 1
                            if not self.gametype_select:
                                if self.selection == Menu.OPTIONS:
                                    self.selection = Menu.HIGHSCORES
                            if self.selection < 0:
                                self.selection = 0
                        elif event.key == K_DOWN:
                            self.selection += 1
                            if not self.gametype_select:
                                if self.selection == Menu.OPTIONS:
                                    self.selection = Menu.QUIT
                                if self.selection > Menu.QUIT:
                                    self.selection = Menu.QUIT
                            else:
                                if self.selection > Menu.ENDLESS:
                                    self.selection = Menu.ENDLESS
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            done = True

        return self.selection
Beispiel #8
0
    def run(self):
        water = Water.global_water
        water.set_amplitude(SCREEN_HEIGHT / 8.0)
        water_sprite = pygame.sprite.Group()
        water_sprite.add(water)
        while not self.done:
            self.screen.blit(Highscores.sky, self.screen.get_rect())
            water.update()
            cloud.update()
            cloud.draw(self.screen)
            water_sprite.draw(self.screen)

            rect = self.title.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 10

            self.screen.blit(self.title, rect)

            for i in xrange(10):
                color = (0,0,0)
                #if self.inputting and self.input_score == i:
                if self.input_score == i:
                    color = (220, 120, 20)
                score = self.scores[i]
                image = 0
                try:
                    image = util.smallfont.render(str(i + 1) + ". " + score[0], True, color)
                except:
                    image = util.smallfont.render(str(i + 1) + ". Error", True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.left = 10
                self.screen.blit(image, rect)

                image = util.smallfont.render(str(score[1]), True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.right = self.screen.get_rect().right - 10
                self.screen.blit(image, rect)

            pygame.display.flip()

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == NEXTFRAME:
                        nextframe = True
                        continue
                    if self.inputting:
                        if event.type == QUIT:
                            self.inputting = False
                            self.write_scores()
                        if event.type == KEYDOWN:
                            if event.key == K_RETURN or event.key == K_ESCAPE:
                                self.inputting = False
                                if self.endless:
                                    self.submit_score()
                                self.write_scores()
                            elif event.key == K_BACKSPACE:
                                if len(self.scores[self.input_score][0]) != 0:
                                    self.scores[self.input_score][0] = self.scores[self.input_score][0][:-1]
                            elif event.key == K_SPACE or event.unicode != " ":
                                if len(self.scores[self.input_score][0]) < 32:
                                    self.scores[self.input_score][0] += event.unicode
                    else:
                        if event.type == KEYDOWN or event.type == QUIT or event.type == JOYBUTTONDOWN:
                            self.done = True
                            nextframe = True
Beispiel #9
0
    def run(self):
        done = False

        while not done:
            self.screen.blit(Options.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            for i in xrange(len(self.menu)):
                self.render(i)

            cloud.update()

            cloud.draw(self.screen)

            rect = Options.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(Options.logo, rect)

            image = util.smallfont.render("http://funnyboat.sourceforge.net/", True, (0,0,0))
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.move_up()
                            if event.value > 0.5:
                                self.move_down()
                        elif event.axis == 0:
                            if event.value < -0.5:
                                self.change_left()
                            if event.value > 0.5:
                                self.change_right()
                    elif event.type == JOYBUTTONDOWN:
                        if event.button == 0:
                            #done = True
                            self.change_right()
                        elif event.button == 1:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.move_up()
                        elif event.key == K_DOWN:
                            self.move_down()
                        elif event.key == K_LEFT:
                            self.change_left()
                        elif event.key == K_RIGHT:
                            self.change_right()
                        elif self.selection == Options.NAME:
                            if event.key == K_BACKSPACE:
                                if len(Variables.name) != 0:
                                    Variables.name = Variables.name[:-1]
                            elif event.key == K_SPACE or event.unicode != " " and event.unicode>=u' ':
                                if len(Variables.name) < 32:
                                    Variables.name += event.unicode
                            self.refresh()
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            #done = True
                            self.change_right()

        util.save_config()
        return self.selection
Beispiel #10
0
def draw():
    surface.fill(color)

    if len(clouds) != 0:
        for cloud in clouds:
            cloud.draw(surface)

    particle_system.draw(surface)

    player1.draw(surface)
    # surface.blit(player1.img, 100, 100)#player1.position[0], player1.position[1])

    for flower in flowers:
        flower.draw(surface)

    for bee in bees:
        bee.draw(surface)

    ba.draw(surface, baske)

    surf_level = font1.render("Level: "+str(level), True, (0,0,0))
    surface.blit(surf_level,(10,10))

    surf_lives = font1.render("Lives: "+str(max([player1.lives,0])), True, (0,0,0))
    surface.blit(surf_lives,(10,30))

    surf_score = font1.render("Score: "+str(player1.score), True, (0,0,0))
    surface.blit(surf_score,(screen_size[0]-surf_score.get_width()-10,10))

    surf_highscore = font1.render("High Score: "+str(hs), True, (0,0,0))
    surface.blit(surf_highscore,(screen_size[0]-surf_highscore.get_width()-10,30))

    surf_health = font1.render("Health: {}".format(player1.health), True, (0, 0, 0))
    surface.blit(surf_health,(10,50))

    surf_bee = font1.render("*you do not need to kill the bee(s) to win*", True, (0, 0, 0))
    surface.blit(surf_bee,(260,screen_size[1]-surf_bee.get_height()-10))

    if player1.lives >= 0:
        surf_remain = font1.render("Flowers Left: "+str(len(flowers)), True, (0,0,0))
        surface.blit(surf_remain,(10,screen_size[1]-surf_remain.get_height()-10))

        if level_text_brightness > 0.0:
            col = rndint(255.0*level_text_brightness)
            surf_level = font2.render("Level "+str(level), True, (col,col,col),(0,0,0))
            pos = [
                (screen_size[0]/2.0)-(surf_level.get_width()/2.0),
                (screen_size[1]/2.0)-(surf_level.get_height()/2.0)
            ]
            surface.blit(surf_level,pos,special_flags=BLEND_MAX)
    else:

        surf_level = font1.render("F2 Starts New Game", True, (0,0,0))
        pos = [
            (screen_size[0]/2.0)-(surf_level.get_width()/2.0),
            (screen_size[1]/2.0)-(surf_level.get_height()/2.0)
        ]
        surface.blit(surf_level,pos)

    surf_fps = font1.render("FPS: "+str(round(clock.get_fps(),1)), True, (0,0,0))
    surface.blit(surf_fps,(screen_size[0]-surf_fps.get_width()-10,screen_size[1]-surf_fps.get_height()-10))

    pygame.display.flip()
Beispiel #11
0
    def run(self):
        done = False

        while not done:
            util.android_check_pause()
            self.screen.blit(self.sky, self.screen.get_rect())
            self.water.update()
            self.water_sprite.draw(self.screen)

            if not self.gametype_select:
                self.render("New Game", Menu.NEWGAME)
                self.render("High Scores", Menu.HIGHSCORES)
                #self.render("Options", Menu.OPTIONS)
                self.render("Quit", Menu.QUIT)
            else:
                self.render("Story mode", Menu.STORY)
                self.render("Endless mode", Menu.ENDLESS)

            cloud.update()

            cloud.draw(self.screen)

            rect = self.logo.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 0
            self.screen.blit(self.logo, rect)

            image = self.url_font.render("https://github.com/zielmicha/funnyboat-android", True, (0,0,0))
            bottom = rect.bottom
            rect = image.get_rect()
            rect.midbottom = self.screen.get_rect().midbottom
            #rect.bottomright = self.screen.get_rect().bottomright
            #rect.bottom = bottom
            self.screen.blit(image, rect)

            pygame.display.flip()

            self.t += 1

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == QUIT or \
                        event.type == KEYDOWN and event.key == K_ESCAPE:
                        self.selection = -1
                        done = True
                        nextframe = True
                    elif event.type == MOUSEBUTTONUP or event.type == MOUSEBUTTONDOWN:
                        pos = event.pos
                        for id, rect in self.option_rects.items():
                            if rect.collidepoint(pos):
                                self.selection = id
                    if event.type == MOUSEBUTTONUP:
                        done = True
                    elif event.type == NEXTFRAME:
                        nextframe = True
                    elif event.type == JOYAXISMOTION:
                        if event.axis == 1:
                            if event.value < -0.5:
                                self.selection -= 1
                                if not self.gametype_select:
                                    if self.selection == Menu.OPTIONS:
                                        self.selection = Menu.HIGHSCORES
                                if self.selection < 0:
                                    self.selection = 0
                            if event.value > 0.5:
                                self.selection += 1
                                if not self.gametype_select:
                                    if self.selection == Menu.OPTIONS:
                                        self.selection = Menu.QUIT
                                    if self.selection > Menu.QUIT:
                                        self.selection = Menu.QUIT
                                else:
                                    if self.selection > Menu.ENDLESS:
                                        self.selection = Menu.ENDLESS
                    elif event.type == JOYBUTTONDOWN:
                        if event.button == 0:
                            done = True
                    elif event.type == KEYDOWN:
                        if event.key == K_UP:
                            self.selection -= 1
                            if not self.gametype_select:
                                if self.selection == Menu.OPTIONS:
                                    self.selection = Menu.HIGHSCORES
                            if self.selection < 0:
                                self.selection = 0
                        elif event.key == K_DOWN:
                            self.selection += 1
                            if not self.gametype_select:
                                if self.selection == Menu.OPTIONS:
                                    self.selection = Menu.QUIT
                                if self.selection > Menu.QUIT:
                                    self.selection = Menu.QUIT
                            else:
                                if self.selection > Menu.ENDLESS:
                                    self.selection = Menu.ENDLESS
                        elif event.key == K_SPACE or event.key == K_RETURN:
                            done = True

        return self.selection
    def run(self):
        water = Water.global_water
        water_sprite = pygame.sprite.Group()
        water_sprite.add(water)
        if util.android:
            util.android.show_keyboard()
        while not self.done:
            self.screen.blit(self.sky, self.screen.get_rect())
            water.update()
            cloud.update()
            cloud.draw(self.screen)
            water_sprite.draw(self.screen)

            rect = self.title.get_rect()
            rect.centerx = self.screen.get_rect().centerx
            rect.top = 10

            self.screen.blit(self.title, rect)

            for i in range(10):
                color = (0, 0, 0)
                if self.inputting and self.input_score == i:
                    color = (220, 120, 20)
                score = self.scores[i]
                image = self.font.render(str(i + 1) + ". " + score[0], True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.left = 10
                self.screen.blit(image, rect)

                image = self.font.render(str(score[1]), True, color)
                rect = image.get_rect()
                rect.top = 50 + i * 1.5 * rect.height
                rect.right = self.screen.get_rect().right - 10
                self.screen.blit(image, rect)

            pygame.display.flip()

            nextframe = False
            while not nextframe:
                pygame.event.post(pygame.event.wait())
                for event in pygame.event.get():
                    if event.type == NEXTFRAME:
                        nextframe = True
                        continue
                    if self.inputting:
                        if event.type == QUIT:
                            self.inputting = False
                            self.write_scores()

                        if event.type == KEYDOWN:
                            if event.key == K_RETURN or event.key == K_ESCAPE:
                                self.inputting = False
                                self.write_scores()
                            elif event.key == K_BACKSPACE:
                                if len(self.scores[self.input_score][0]) != 0:
                                    self.scores[self.input_score][0] = self.scores[self.input_score][0][:-1]
                            elif event.key == K_SPACE or event.unicode != " ":
                                if len(self.scores[self.input_score][0]) < 32:
                                    self.scores[self.input_score][0] += event.unicode
                    else:
                        if (
                            event.type == KEYDOWN
                            or event.type == QUIT
                            or event.type == JOYBUTTONDOWN
                            or event.type == MOUSEBUTTONDOWN
                        ):
                            self.done = True
                            nextframe = True