# mario **Repository Path**: Persona027/mario ## Basic Information - **Project Name**: mario - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-09 - **Last Updated**: 2025-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Super Mario Bros Demo #### 项目介绍 基于JavaFX与TileMapEditor开发的Super Mario Bros复刻游戏,融合了经典马里奥玩法与创新的Undertale风格Boss战斗系统。项目采用自研游戏引擎架构,实现了完整的2D平台跳跃游戏体验。 #### 技术架构 - **游戏引擎**:基于JavaFX的自研2D游戏引擎 - **地图系统**:TileMapEditor绘制JSON地图文件,支持多层地图渲染 - **模块化设计**:采用Manager模式,各系统职责分离,便于维护和扩展 ### 核心系统架构 #### 游戏引擎系统 - **物理引擎**:自研物理系统,支持重力、碰撞检测、射线检测 - **动画系统**:基于状态机的动画控制器,支持精灵动画和状态切换 - **音频系统**:完整的音效和背景音乐管理,支持循环播放和音效触发 - **渲染系统**:基于JavaFX Canvas的2D渲染,支持视口管理和缩放 #### 管理器系统 - **GameLoop**:游戏主循环管理,固定时间步长更新 - **RenderManager**:统一渲染管理,处理所有绘制逻辑 - **UpdateManager**:游戏逻辑更新管理,协调各系统更新 - **GameStateManager**:游戏状态管理,处理暂停、游戏结束等状态 - **LevelManager**:关卡管理,处理关卡切换和初始化 - **UIManager**:用户界面管理,HUD显示和菜单系统 - **PhysicsEngine**:物理引擎,碰撞检测和物理计算 - **Camera**:摄像机系统,玩家跟踪和视口管理 - **AudioManager**:音频管理,音效和背景音乐播放 - **ResourceManager**:资源管理,图片和音频资源加载 ### 关键技术特性 #### 地图系统 - **TileMapEditor**:便捷的JSON地图文件编辑 - **多层渲染**:支持背景层、地形层、装饰层的分离渲染 - **动态加载**:运行时地图资源加载和切换 #### 物理系统 - **Entity组件**:实体-组件架构,支持碰撞箱(Collider)、物理体(RigidBody) - **运动系统**:速度(Velocity)、加速度(Acceleration)、重力(Gravity)系统 - **碰撞检测**:精确的射线检测,确保碰撞检测准确性 - **马里奥手感**:精心调校的移动和跳跃手感,复刻经典马里奥体验 #### 动画系统 - **状态机**:基于状态机的动画切换,避免状态冲突 - **精灵动画**:支持多帧精灵动画播放 - **动画挂载**:动画与游戏状态绑定,自动切换 #### 游戏设计 - **关卡逻辑**:复刻经典马里奥关卡设计 - **物品系统**:金币、蘑菇等经典道具 - **敌人AI**:Goomba、Koopa等经典敌人行为 - **Boss战斗**:创新的Undertale风格弹幕Boss战 ### 游戏简介与操作 #### 游戏特色 - **经典马里奥玩法**:横版平台跳跃,收集金币,击败敌人 - **创新Boss战**:融合Undertale风格的弹幕战斗系统 - **多关卡设计**:包含经典关卡和特殊挑战关卡 - **完整音效**:经典马里奥音效和背景音乐 #### 基本操作 - **移动**:方向键或WASD控制马里奥移动 - **跳跃**:空格键或上方向键跳跃 - **暂停**:ESC键暂停游戏 - **菜单操作**:方向键选择,回车键确认 #### 游戏系统 - **分数系统**:收集金币、击败敌人获得分数 - **生命系统**:马里奥有生命值,受伤会减少生命 - **时间限制**:每关有时间限制,增加挑战性 - **道具收集**:收集金币和特殊道具增强能力 ### 技术实现细节 #### 开发环境 - **编程语言**:Java 11+ - **游戏框架**:JavaFX - **构建工具**:Maven - **地图编辑**:TileMapEditor - **模块系统**:Java Module System #### 项目结构 ``` src/main/java/com/xxx/demo_mario/ ├── core/ # 核心游戏类 │ ├── Game.java # 游戏主类 │ ├── GameApp.java # 应用程序入口 │ ├── Config.java # 配置常量 │ ├── GameData.java # 游戏数据管理 │ ├── GameLoop.java # 游戏循环 │ ├── RenderManager.java # 渲染管理 │ ├── UpdateManager.java # 更新管理 │ ├── GameStateManager.java # 状态管理 │ ├── LevelManager.java # 关卡管理 │ ├── ScalingUtils.java # 缩放工具 │ └── GameLogger.java # 日志系统 ├── manager/ # 管理器系统 │ ├── PhysicsEngine.java # 物理引擎 │ ├── Camera.java # 摄像机 │ ├── AudioManager.java # 音频管理 │ ├── UIManager.java # UI管理 │ ├── ResourceManager.java # 资源管理 │ ├── AnimationController.java # 动画控制 │ └── ... ├── objects/ # 游戏对象 │ ├── Player.java # 玩家类 │ ├── Enemy.java # 敌人类 │ ├── Entity.java # 实体基类 │ └── ... ├── map/ # 地图系统 │ ├── TileMap.java # 地图类 │ └── TileMapLoader.java # 地图加载器 └── boss/ # Boss战斗系统 └── objects/ ├── UndertaleBossBattle.java # Boss战主类 └── ... ``` #### 资源文件 ``` res/ ├── picture/ # 图片资源 │ ├── *.png # 精灵图片 │ ├── *.json # 地图文件 │ └── *.tsx # 图块集文件 └── sound/ # 音频资源 ├── *.mp3 # 背景音乐 └── *.wav # 音效文件 ``` #### 核心算法 - **物理引擎**:基于固定时间步长的物理更新 - **碰撞检测**:射线检测 + AABB碰撞检测 - **动画系统**:基于时间的帧动画播放 - **摄像机**:平滑跟随玩家的摄像机系统 - **Boss战**:多阶段弹幕战斗算法 #### 性能优化 - **对象池**:复用游戏对象,减少GC压力 - **视口裁剪**:只渲染可见区域的游戏对象 - **资源管理**:延迟加载和资源缓存 - **固定时间步长**:确保游戏逻辑的稳定性 ### 运行说明 #### 环境要求 - Java 11 或更高版本 - JavaFX 运行时环境 - Maven 3.6+ #### 编译运行 ```bash # 编译项目 mvn clean compile # 运行游戏 mvn javafx:run ``` #### 游戏控制 - **开始游戏**:选择"1 PLAYER GAME"开始单人游戏 - **移动控制**:方向键或WASD - **跳跃**:空格键或上方向键 - **暂停**:ESC键 - **菜单导航**:方向键选择,回车确认 #### 组员 1. 熊俊冲 整体逻辑,整体设计,整体调试 2. 石泉 细节调试,boss演出,优化逻辑 3. 肖逸尘 地图绘制,素材绘制,地图设计 4. 白文彦 开始界面,学习原作风格 5. 张远航 提取原作设计,游玩测试