diff --git a/README.md b/README.md index 3eac278..3479c26 100644 --- a/README.md +++ b/README.md @@ -1 +1,35 @@ -### 项目1文档 \ No newline at end of file +### 项目技术方案 +- 游戏引擎:pygame +- 游戏设计:自行实现多场景 + +### 项目结构 +project + start.py # 入口,包含初始化和主循环 + data\ # 资源 + src\ # 代码 + config\ # 基础配置 + game_config.py # 游戏配置 + scenes.py # 场景类字典,用于多场景切换 + scenes\ # 游戏场景 + base_scene.py # 场景基类,被其他场景继承,含画布、计时器、下一场景、事件接收、每帧更新、切换场景、退出等参数方法 + main_menu_scene.py # 主菜单场景,实现了按键组合、按键顺序、鼠标事件、文本显示、雨天特效等功能 + game_scene.py # 游戏场景,实现了方向移动、碰撞判断等功能 + empty_scene.py # 空场景,测试或复制用 + +### 运行 +安装依赖 +``` +pip install -r requirements.txt +``` +运行 +``` +python start.py +``` + +### 执行逻辑 +1. start.py中执行Game() # 开始游戏 +2. 类执行初始化__init__() # 读取game_config.py中的配置,初始化窗口画布等,初始化首个场景MainMenuScene并记录到self.scene +3. 初始化函数调用run()开始主循环 # 循环中获取事件并发送给场景的handle_event()方法用于接收玩家输入 +4. 主循环中调用self.scene.update()方法 # 每帧更新场景中实现的游戏逻辑 +5. 场景切换通过改变self.scene实现 # 主循环中读取场景类的next_scene参数,为None不切换,否则切换为src\config\scenes.py中类实例化对象 +6. 退出游戏通过设置running为False实现 # 主循环中读取场景类的next_scene参数,为"exit"时退出 \ No newline at end of file diff --git a/src/scenes/base_scene.py b/src/scenes/base_scene.py index bebede3..20ba901 100644 --- a/src/scenes/base_scene.py +++ b/src/scenes/base_scene.py @@ -31,4 +31,4 @@ class BaseScene: """ 退出游戏 """ - self.next_scene = "game_exit" \ No newline at end of file + self.next_scene = "exit" \ No newline at end of file diff --git a/start.py b/start.py index 7274aba..fea8357 100644 --- a/start.py +++ b/start.py @@ -2,7 +2,6 @@ import pygame from src.config.game_config import GameConfig from src.config.scenes import scene_dict -from src.scenes.main_menu_scene import MainMenuScene class Game: @@ -45,8 +44,8 @@ class Game: # 场景每帧更新逻辑运行 self.scene.update() - # 当场景的下一场景为game_exit时退出游戏 - if self.scene.next_scene == "game_exit": + # 当场景的下一场景为exit时退出游戏 + if self.scene.next_scene == "exit": self.running = False # 更新显示