*******程序名:扫雷游戏代码SDK学习专用VC6版************
***最后修改日期:2005.12.9 8:17
***下载:http://upload.programfan.com/upfile/200512091652280.rar
*****前言:
如果你每次想实现一个相对完整的小小游戏时,总是力不从心,无法完成,那就一定要学习这个程序的代码。它能让你看到一个相对通用的良好程序结构模式。如果明白了其中的所有代码和结构原理的话,你想要在这个基础上升级改进本游戏,你会发现这样的设计会让你很容易在原代码上进行改造的。还有,你已经有能力去写另一个小游戏了,去试试哦。
(对任一代码有不明处,都可问我,我定会答复。也可对我的代码作任何的评价,我忠心感谢你的观点!)
***目的:
1.本软件是对SDK编程学习后的一次总结。(主要目的)
2.并对程序总体结构设计有影响的几方面:面向对象编程中的类关系结构设计、源代码所在文件的结构安排、代码格式命名规范、相应的注释等方面作了努力。
3.数据结构算法中图的深度遍历算法的学习(为以后机器智能游戏设计打个基础)
***文件说明:
1。TMineGameCtl.h 及TMineGameCtl.cpp //游戏控制类TMineGameCtl
2。TGameView.h //窗口抽象类TGameView
3。TMineGameView.h 及TMineGameView.cpp //从TWnd中派生的窗口类TMineGameView
4。MyFunLib.h //全局函数库文件
5。yyfMine.cpp //主程序框架文件
6。resource.h //资源头文件
7。yyfMine.rc //资源脚本文件
***类关系:(左边类依赖于右边类)
1.TMineGameCtl -> TGameView (成员类)
2.TMineGameView -> TGameView (派生)
3.TMineGameView -> TMineGameCtl (成员类)
4.TMineGameCtl <-> TMineGameView (实例对象相互操作)
***本代码特点:
1. 程序框架使用SDK的标准框架结构
2.将显示部分与数据部分相分离(分别写在显示类与数据控制类中)
3.由于显示类与数据类会相互调用对方的函数,所以设计时采用了面向对象的多态特性(使用纯虚函数与抽象类)。降低了它们的耦合度。(面向对象编程的关键所在。)
4.两个类设计较为完整:允许设置格的行数、列数,及雷的个数。只是没在本程序中界面中提供出来。
5.鼠标操作中实现了左右键同时击的响应。(以此更加深入一点地理解消息的机制)
6.对开启到本身不是雷且周围不是雷的格时,会自动开启一整片无雷区的算法的实现:学习图的深度遍历算法的具体应用。
7.界面的每格中的按钮是通过位图画上去的。以此来学习使用资源、显示DC、内存DC、画刷对象句柄、位图对象句柄的相关操作。
8.代码也比较规范,并做了必要的注释。
***本代码不足:
1.没有使用命名空间。
2.没有使用到异常处理机制。(但对各异外情况基本都有进行条件判断)
3.没有使用模板库。(这主要是因为本代码用作SDK初学者学习之用的。)
4.程序界面很粗糙。(只是为了学习代码嘛!)
5.界面没有提供行数、列数、雷数的设置(不过在两个类中已经设计好了)。
5.当然,即使是前面所述的特点,也不是尽善尽美的。
***展望:
1.本程序是一个功能简单的程序。我想通过这样一个程序,撇开不影响全局的细节,由浅入深地学习应用软件开发过程中的影响全局的一系列关键技术,如:软件工程方法、面向对象设计技巧、泛型编程技巧、代码规范、命名规范、名字空间的应用管理、异常处理、组件式编程等等。就这个原则,有意推出由浅入深的多个代码学习版本,每一版本中只加入一个新元素。
2.另一方面,推出一版机器智能游戏类的小游戏,学习数据结构与算法的应用。网络版一小游戏,以学习网络通信方面的知识。
***结束语:
并愿与各位同好一起探讨交流,让我们写出来的代码能够更加健壮。http://upload.programfan.com/upfile/200512091652280.rar
>> 本文固定链接: http://www.vcgood.com/archives/307