躲避球游戏设计与实现

在这篇文章中,我们将实现一个简单的“躲避球”小游戏。这个游戏的目标是控制一个小球,尽量躲避从上方落下的障碍物,游戏结束条件是小球被障碍物碰到。我们将使用 Python 的 pygame 库来实现这个游戏。

环境准备

首先,要运行这个游戏,你需要安装 pygame 库。如果你尚未安装,可以通过以下命令安装:

pip install pygame

项目结构

我们的游戏代码将包括以下几个主要部分:

  1. 初始化游戏及相关设置
  2. 创建小球和障碍物
  3. 处理用户输入
  4. 更新游戏状态
  5. 绘制游戏元素
  6. 检测碰撞
  7. 游戏结束处理

游戏代码

下面是游戏的完整代码示例:

import pygame
import random

# 初始化pygame
pygame.init()

# 游戏窗口尺寸
WIDTH, HEIGHT = 600, 400
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("躲避球游戏")

# 定义颜色
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)

# 小球类
class Player:
    def __init__(self):
        self.radius = 15
        self.x = WIDTH // 2
        self.y = HEIGHT - 50
        self.speed = 5

    def draw(self):
        pygame.draw.circle(screen, GREEN, (self.x, self.y), self.radius)

    def move(self, dx):
        self.x += dx
        self.x = max(self.radius, min(self.x, WIDTH - self.radius))

# 障碍物类
class Obstacle:
    def __init__(self):
        self.width = random.randint(20, 50)
        self.height = 20
        self.x = random.randint(0, WIDTH - self.width)
        self.y = 0 - self.height
        self.speed = random.randint(3, 6)

    def draw(self):
        pygame.draw.rect(screen, RED, (self.x, self.y, self.width, self.height))

    def move(self):
        self.y += self.speed

# 碰撞检测
def check_collision(player, obstacle):
    return (player.x - player.radius < obstacle.x + obstacle.width and
            player.x + player.radius > obstacle.x and
            player.y - player.radius < obstacle.y + obstacle.height and
            player.y + player.radius > obstacle.y)

# 游戏主循环
def main():
    clock = pygame.time.Clock()
    player = Player()
    obstacles = []
    score = 0
    font = pygame.font.SysFont("Arial", 24)

    running = True
    while running:
        screen.fill(WHITE)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            player.move(-player.speed)
        if keys[pygame.K_RIGHT]:
            player.move(player.speed)

        # 生成障碍物
        if random.randint(1, 30) == 1:
            obstacles.append(Obstacle())

        for obstacle in obstacles[:]:
            obstacle.move()
            obstacle.draw()
            if check_collision(player, obstacle):
                running = False  # 碰撞,结束游戏
            if obstacle.y > HEIGHT:  # 超出屏幕,移除障碍物
                obstacles.remove(obstacle)
                score += 1  # 得分

        player.draw()

        # 显示得分
        score_text = font.render(f"得分: {score}", True, (0, 0, 0))
        screen.blit(score_text, (10, 10))

        pygame.display.flip()
        clock.tick(30)  # 设置帧率为30

    pygame.quit()

# 运行游戏
if __name__ == "__main__":
    main()

代码说明

  1. 初始化:我们首先初始化了 pygame 并设置了游戏窗口的尺寸和标题。
  2. 颜色定义:定义了一些颜色,用于绘制游戏元素。
  3. 小球和障碍物类:创建了两个类,分别用于管理玩家控制的小球和从屏幕上方掉落的障碍物。小球可以左右移动,障碍物会不断向下移动。
  4. 碰撞检测:编写了一个函数用于检查小球和障碍物之间的碰撞。
  5. 游戏主循环:这是游戏的核心,处理事件、更新状态、绘制元素和检测碰撞。每当障碍物超出屏幕时就将其移除,并为玩家增加得分。

总结

通过实现这个简单的躲避球游戏,可以让人更好地理解 Python 编程和游戏开发的基础概念。希望这个示例能激发你的兴趣,让你在游戏开发的路上走得更远!如果你有兴趣,可以在此基础上添加更多功能,例如音效、不同关卡、加速等,进一步丰富这个游戏。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部