一、项目背景:为什么做这个游戏?
最近“抓大鹅”类游戏在短视频平台爆火,这类游戏操作简单却充满趣味性,非常适合用来学习游戏开发基础。本文将用Python的Pygame库带你实现一个极简版抓大鹅游戏,全程代码不足200行,即使是编程新手也能轻松理解。
二、准备工作:环境搭建
1. 安装Pygame库
pip install pygame
2. 游戏功能规划
- 玩家操作:用鼠标点击移动的大鹅
- 核心机制:大鹅随机移动,点击得分,限时60秒
- 界面元素:得分显示、倒计时、游戏结束提示
三、代码实现:分模块解析
1. 初始化设置
import pygame
import random
import time
# 初始化Pygame
pygame.init()
# 窗口设置
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("抓大鹅小游戏")
# 颜色定义
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
# 字体设置
font = pygame.font.SysFont("华文黑体", 36)
2. 大鹅类设计
class Goose:
def __init__(self):
self.radius = 50 # 大鹅半径
self.color = GREEN
self.reset_position() # 初始化位置
def reset_position(self):
"""随机生成大鹅位置"""
self.x = random.randint(self.radius, SCREEN_WIDTH - self.radius)
self.y = random.randint(self.radius, SCREEN_HEIGHT - self.radius)
def draw(self):
"""绘制大鹅"""
pygame.draw.circle(screen, self.color, (self.x, self.y), self.radius)
3. 游戏主循环
def main():
goose = Goose()
score = 0
start_time = time.time()
running = True
while running:
# 事件处理
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
# 点击检测
mouse_pos = pygame.mouse.get_pos()
if (mouse_pos[0] - goose.x)**2 + (mouse_pos[1] - goose.y)**2 < goose.radius**2:
score += 1
goose.reset_position() # 得分后重新生成位置
# 界面绘制
screen.fill(WHITE)
# 绘制大鹅
goose.draw()
# 绘制得分和倒计时
elapsed_time = int(time.time() - start_time)
remaining_time = 60 - elapsed_time
# 显示得分
score_text = font.render(f"得分: {score}", True, RED)
screen.blit(score_text, (20, 20))
# 显示倒计时
time_text = font.render(f"剩余时间: {remaining_time}s", True, RED)
screen.blit(time_text, (SCREEN_WIDTH - 200, 20))
# 游戏结束判断
if remaining_time <= 0:
game_over_text = font.render("游戏结束!得分: {}".format(score), True, RED)
text_rect = game_over_text.get_rect(center=(SCREEN_WIDTH//2, SCREEN_HEIGHT//2))
screen.blit(game_over_text, text_rect)
pygame.display.update()
pygame.time.delay(2000) # 停留2秒
running = False
pygame.display.update()
pygame.time.delay(50) # 控制帧率
pygame.quit()
if __name__ == "__main__":
main()
四、运行效果演示
窗口中绿色大鹅随机移动,鼠标点击得分,上方显示分数和剩余时间,时间耗尽后显示最终得分)
五、代码优化建议(进阶方向)
音效添加:
# 增加点击音效 click_sound = pygame.mixer.Sound("click.wav") # 在点击得分处添加: click_sound.play()
- 难度升级:
- 增加大鹅移动速度(定时改变半径或位置间隔)
- 添加多个大鹅同时出现
- 界面美化:
- 使用图片素材代替纯色圆形(
pygame.image.load()
加载图片) - 添加开始菜单和重新游戏按钮
六、总结:从代码到游戏思维
通过这个项目,你将学会:
- Pygame的基本初始化和窗口管理
- 随机事件处理(大鹅位置生成)
- 碰撞检测算法(圆形距离计算)
- 游戏状态管理(得分、倒计时)
游戏开发的核心是将现实逻辑转化为代码逻辑,建议初学者多尝试修改参数(如大鹅大小、移动速度),观察效果变化,逐步培养“游戏思维”。下次我们可以尝试添加障碍物和道具系统,让游戏更具挑战性!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。