1、需求分析
具备功能
-
播放与停止背景音乐
-
随机生成管道与导弹障碍
-
显示积分
-
跳跃躲避障碍
-
碰撞障碍
2、游戏功能结构
玛丽冒险的功能结构主要分为三类,分别为音效、主窗体以及随机出现的障碍物。如下图
image-20231028213612463
3、游戏业务流程
根据该游戏的需求分析以及功能结构
image-20231028214036292
4、游戏预览
image-20231028215603717
5、开发必备
游戏开发运行环境
-
python3.7 以上
-
开发工具 PyCharm
-
Python 内置模块:itertools、random
-
第三方模块:pygame
文件夹组织结构
玛丽冒险游戏的文件夹组织结构主要分为: audio(保存音效文件)和 image (保存图片)
image-20231028215838389
6、玛丽冒险游戏实现
6.1、游戏窗体的实现
在实现游戏窗体时,首先需要定义窗体的宽度与高度,然后通过 ygame 模块中的 init0 方法,实现初始化功能,接下来需要创建循环,在循环中通过 pdate0 函数不断更新窗体,最后需要判断用户是否单击了关闭窗体的按钮,如果单击了“关闭”按钮,将关闭窗体,否则继续循环显示窗体
image-20231028220745048
通过 pygame 模块实现玛丽主窗体具体步骤如下
创建文件夹,一个保存音频,一个图片,创建 marie.py 文件
导入 pygame 库与 pygame 中的常用库,然后定义窗体宽度与高度
import pygame from pygame.locals import * import sys # 设置游戏窗口的宽度和高度 SCREENWIDTH = 822 SCREENHEIGHT = 199 # 设置游戏帧率 FPS = 60
创建 mainGame0 方法,在该方法中首先进行 pygame 的初始化工作,然后创建时间对象用于更新窗体中的画面,再创建窗体实例并设置窗体的标题文字,最后通过循环实现窗体的显示与刷新。
def mainGame(): score = 0 over = False global SCREEN, FPSCLOCK # 初始化pygame库 pygame.init() # 初始化时钟对象 FPSCLOCK = pygame.time.Clock() # 创建窗口对象 SCREEN = pygame.display.set_mode((SCREENWIDTH, SCREENHEIGHT)) # 设置窗口标题 pygame.display.set_caption("玛丽冒险") while True: # 处理游戏事件 for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() # 更新窗口内容 pygame.display.update() # 控制帧率 FPSCLOCK.tick(FPS) if __name__ == "__main__": mainGame()
6.2、地图加载
image-20231028221849551
创建一个名称为 MyMap 的滚动地图类,然后在该类的初始化方法中加载背景图片和定义 X 与 Y 的坐标
class MyMap(): def __init__(self, x, y): self.bg = pygame.image.load("image/bg.png").convert_alpha() self.x = x self.y = y
在 MyMap 类中创建 map _rolling0 方法,在该方法中根据地图背景图片的 X 坐标判断是否移出窗体,如果移出就给图片设置一个新的坐标点,否则按照每次 5 个像素的跨度向左移动
`def map_