-
1 任务描述
-
2 代码分析及注意事项

![]()
贪吃蛇项目分解——继承与派生
![]()
将食物类改为固体类Solid,定义障碍物类(Barrier)和食物类(Food),障碍物和食物类继承固体类。障碍物对象为黑色,食物为绿色,如图6.9所示。贪吃蛇遇到食物则得分,碰到障碍物游戏就结束,如图6.10所示。
![]() | ![]() |
| 图6.9 给“贪吃蛇”游戏添加障碍物 | 图6.10 碰到障碍物后游戏结束 |
固体类有两个表示坐标的成员变量和一个颜色的成员变量:
private int x;
private int y;
private Color color;
另外还有一个产生食物,即填充方格的方法GenerateSolid。障碍物也有这几个成员。虽然它们表面看起来有点风马牛不相及,但根据面向对象的继承机制,完全可实现继承。继承后的障碍物Barrier类享有食物Food类的全部成员,并拥有一个表示障碍物个数的静态成员变量:
private static int barrierNum;//障碍物个数
以及一个当蛇碰到障碍物后,杀死蛇的方法ResistSnake。
通过本节的应用,基本上可以掌握继承在贪吃蛇中的运用。

(1)打开在Visual Studio中创建的Windows窗体应用程序项目。
(2)将Food.cs改成Solid.cs,将其中的public class Food改成public class Solid。
(3)在【解决方案资源管理器】窗口中添加一个新类文件Barrier.cs和Food.cs,如图6.11所示。
![]() |
| 图6.11 添加一个新类文件Barrier.cs和Food.CS |
(4)在Barrier.cs和Food.cs中编写代码。
(5)进入Form1.cs中的代码模式。在Form1类中添加一个新的成员对象barrier。
(6)在Form1的Load事件对应的方法中添加“barrier=new Barrier();”。
(7)在Button1单击事件对应的方法button1_Click中添加产生障碍物的语句。
(8)测试、调试并运行程序,运行结果如图6.9和图6.10所示。
参考视频1(可拖放):
参考视频2(可拖放):






