UNPKG

term-rex

Version:

Terminal-based dinosaur runner game

97 lines (67 loc) 3.92 kB
# Term-Rex 游戏开发笔记 ## 添加大鸟障碍物 在原有的仙人掌和小鸟障碍物基础上,我们添加了第三种障碍物:大鸟。 ### 实现步骤 1.`config.go` 中添加大鸟的精灵图和相关配置: - 创建 `bigBirdFrames` 精灵图数组 - 添加 `bigBirdProbability` 变量控制大鸟出现概率 - 设置 `bigBirdFlightRow` 常量定义大鸟飞行高度 2. 修改 `StageConfig` 结构体,添加 `BigBirdProb` 字段,并更新各阶段配置 3. 重构 `obstacle.go`,采用面向对象的设计: - 创建 `IObstacle` 接口定义所有障碍物的共同行为 - 实现 `BaseObstacle` 基类包含共享功能 - 为每种障碍物类型(`Cactus``Bird``BigBird`)创建独立的结构体 - 实现 `ObstacleManager` 管理障碍物的生成和更新 4. 更新 `collision.go` 中的碰撞检测逻辑,使用多态方式处理不同类型的障碍物 5. 修改 `game.go``stage.go``update.go`,使用新的障碍物管理系统 ### 大鸟特点 - 比小鸟更大的精灵图,占用更多屏幕空间 - 飞行高度比小鸟更高(`bigBirdFlightRow = 7`- 使用紫色(`termbox.ColorMagenta`)显示,区别于小鸟的黄色 - 随着游戏进程,出现概率逐渐增加 ### 游戏平衡 为保持游戏平衡,我们设置了合理的大鸟出现概率: - 初始阶段:5% - 中期阶段:10% - 高级阶段:20% 这确保了游戏难度随着分数增加而逐渐提高,但不会过于困难。 ### 面向对象设计优势 重构后的代码具有以下优点: 1. 更好的可读性:每种障碍物类型的行为被封装在各自的结构体中 2. 更高的可维护性:添加新类型的障碍物只需创建新的结构体并实现接口 3. 减少条件判断:使用多态替代了大量的 if-else 语句 4. 单一职责原则:每个结构体只负责一种类型的障碍物 5. 开闭原则:系统对扩展开放,对修改封闭 ## 优化游戏场景 为了提升游戏的视觉效果,我们对场景进行了以下优化: ### 1. 添加地面装饰 在地面下方添加了各种装饰元素,如点、短线和其他符号,使地面看起来更加自然: - 实现了 `GroundDecoration` 结构体,包含位置和字符信息 -`renderer.go` 中添加了 `InitGroundDecorations()` 函数,随机生成地面装饰 - 更新了 `DrawGround()``drawGroundPartial()` 方法,绘制地面装饰 ### 2. 添加天空云朵 在天空中添加了漂浮的云朵,增加了场景的层次感: - 创建了 `Cloud` 结构体和 `CloudManager` 类来管理多个云朵 - 设计了多种云朵形状的 ASCII 艺术图案 - 实现了云朵的随机生成、移动和绘制功能 - 云朵以不同的速度移动,营造出远近层次感 - 云朵均匀分布在整个天空区域,而不仅仅是恐龙头顶 ### 实现细节 1. 云朵系统: - 云朵以不同速度移动(0.2-0.5 单位/帧) - 当云朵移出屏幕左侧时,会在右侧重新生成,并保持适当间距避免重叠 - 游戏开始时随机生成 3-5 朵云,确保它们之间有足够的空间 - 云朵高度随机分布在天空的不同位置(行号 1-3) - 优化了云朵的生成和移动逻辑,避免闪烁和重叠问题 - 所有云朵相关的配置参数都集中在 config.go 文件中,便于调整 ### 实现细节 1. 云朵系统: - 云朵以不同速度移动(0.2-0.5 单位/帧) - 当云朵移出屏幕左侧时,会在右侧重新生成 - 游戏开始时随机生成 3-5 朵云 - 云朵高度随机分布在天空的不同位置 2. 地面装饰: - 使用 `.`, `,`, `'`, `` ` ``, `-` 等字符作为地面装饰 - 装饰元素随机分布在地面下方 - 当屏幕宽度变化时,会重新生成地面装饰 这些视觉元素的添加使游戏场景更加生动和有趣,提升了整体游戏体验。