首页 > 编程资源分享区 > C/C++源代码共享 > SDK编程总结实践:扫雷游戏代码学习专用版源代码
2006
01-03

SDK编程总结实践:扫雷游戏代码学习专用版源代码

*******程序名:扫雷游戏代码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


留下一个回复