本周主要学习了基于C# WinForms开发的一款名为“雷霆战机”的射击类小游戏的完整实现采用面向对象的设计思想将游戏元素抽象为各类对象核心实现了敌机生成、子弹发射、碰撞检测、生命值管理、游戏结束等核心逻辑。以下是对各部分的详细解析一、核心抽象类FlyingObject作为所有飞行类游戏元素的基类抽象类定义了飞行对象的通用属性和行为是整个游戏的核心抽象层核心属性X/Y坐标、Width/Height宽高、flag是否被销毁、HurtCount受击次数用于BOSS/大飞机的多血条逻辑构造函数支持两种初始化方式随机生成坐标的敌机/固定坐标的英雄机/子弹等抽象方法GetImage()获取对象显示图片、DestoryImage()获取销毁动画图片、Step()对象移动逻辑强制子类实现个性化行为通用方法PaintObject()绘制对象到画布Destory()绘制销毁动画hit()碰撞检测逻辑判断当前对象与另一飞行对象是否重叠。二、游戏元素子类继承自FlyingObject所有游戏可见元素均继承自FlyingObject实现各自的个性化逻辑游戏子类功能说明Hero玩家操控的英雄机1. 加载英雄机切换动画图片2.GetBul()生成子弹3.moveTo()跟随鼠标移动AirPlane小敌机1. 加载普通/销毁动画图片2. 移动逻辑垂直向下速度43. 单次击中即销毁。BigPlane大敌机1. 加载普通/销毁动画图片2. 移动速度2比小敌机慢3. 需要2次击中才销毁HurtCount%2。Bee蜜蜂特殊敌机1. 加载普通/销毁动画图片2. 移动逻辑垂直向下水平左右反弹3. 单次击中销毁。BossBOSS机1. 加载普通/销毁动画图片2. 移动速度1最慢3. 需要4次击中才销毁HurtCount%4。Bullet子弹1. 加载子弹图片2. 移动逻辑垂直向上速度3。Life生命值图标加载生命值图片。GameOver游戏结束界面1. 加载“游戏结束”图片游戏结束时显示。Sky游戏背景1. 加载背景图片。三、辅助工具类1.FlyGather自定义的飞行对象集合类封装数组操作解决WinForms中动态管理大量敌机/子弹的问题核心属性_fly存储飞行对象的数组、_size当前元素数量、_empty数组容量核心方法AddFly()添加对象数组满时自动扩容容量翻倍RemoveAt()删除指定下标对象数组拷贝实现避免空指针索引器通过下标快速获取对象Count返回当前元素数量。按顺序执行核心游戏循环ShootAction()每30帧300ms随机生成敌机小敌机/大敌机/蜜蜂/BOSSBulletAction()每30帧生成一颗子弹StepAction()调用所有敌机/子弹的Step()方法实现移动RemoveAction()移除越界对象敌机出屏幕下方、子弹出屏幕上方HitAction()碰撞检测子弹击中敌机、敌机撞击英雄机OverAction()判断游戏结束生命值为0时停止定时器显示游戏结束Invalidate()触发重绘更新界面。交互逻辑Form1_MouseMove英雄机跟随鼠标坐标移动Form1_Load开启双缓冲解决界面闪烁问题。游戏规则玩家初始3条命被敌机撞击则减命命为0游戏结束不同敌机需不同击中次数小敌机/蜜蜂1次、大敌机2次、BOSS 4次子弹越界销毁敌机越界自动移除。