返回

Pygame打造《跳跳兔》游戏:增加积分机制与玩家死亡设计

见解分享

在这一节中,我们将进一步完善《跳跳兔》游戏,增加积分机制和玩家死亡设计,让游戏更加有趣和具有挑战性。

一、积分机制

  1. new()方法中,初始化一个积分对象。
  2. update()方法中,当旧平台被销毁时,更新积分。
  3. draw()方法中,将积分显示在屏幕上。

二、玩家死亡设计

  1. update()方法中,如果玩家掉落游戏框外,则玩家死亡。
  2. draw()方法中,当玩家死亡时,显示“游戏结束”的文字。
  3. handle_events()方法中,当玩家死亡时,重新开始游戏。

代码实现

import pygame

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((40, 40))
        self.image.fill((255, 0, 0))
        self.rect = self.image.get_rect()
        self.rect.center = (320, 240)
        self.speed_y = 0

    def update(self):
        self.speed_y += 1
        self.rect.y += self.speed_y
        if self.rect.top > 480:
            self.speed_y = 0
            self.rect.top = 480

class Platform(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((100, 20))
        self.image.fill((0, 255, 0))
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

class Score(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.font = pygame.font.SysFont("Arial", 30)
        self.score = 0
        self.text = self.font.render(f"Score: {self.score}", True, (255, 255, 255))
        self.rect = self.text.get_rect()
        self.rect.center = (320, 40)

    def update(self):
        self.text = self.font.render(f"Score: {self.score}", True, (255, 255, 255))

class Game:
    def __init__(self):
        pygame.init()
        self.screen = pygame.display.set_mode((640, 480))
        self.clock = pygame.time.Clock()
        self.running = True
        self.player = Player()
        self.platforms = pygame.sprite.Group()
        self.score = Score()

    def new(self):
        self.platforms.empty()
        for i in range(10):
            x = i * 100
            y = 400 - i * 20
            platform = Platform(x, y)
            self.platforms.add(platform)

    def update(self):
        self.player.update()
        self.platforms.update()
        self.score.update()

        if pygame.sprite.collide_rect(self.player, self.score):
            self.score.score += 1

        if self.player.rect.top > 480:
            self.running = False

    def draw(self):
        self.screen.fill((0, 0, 0))
        self.platforms.draw(self.screen)
        self.player.draw(self.screen)
        self.score.draw(self.screen)
        pygame.display.flip()

    def handle_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.running = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    self.player.speed_y = -10

    def run(self):
        self.new()
        while self.running:
            self.clock.tick(60)
            self.handle_events()
            self.update()
            self.draw()


if __name__ == "__main__":
    game = Game()
    game.run()

总结

通过本节的学习,我们成功地为《跳跳兔》游戏添加了积分机制和玩家死亡设计,使游戏更加完整和有趣。在下一节中,我们将进一步完善游戏,添加更多有趣的元素,让玩家在游戏中获得更加丰富的体验。