- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级程序设计实践(C++)课程设计
设计内容: 扫雷游戏
设计时间: 2013年7月
目 录
一、系统描述……………………………………… 3
二、功能模块结构………………………………… 3
三、主要模块的算法说明………………………… 4
四、运行结果……………………………………… 4
五、课程设计总结………………………………… 5
六、参考文献……………………………………… 5
七、附录…………………………………………… 5
一、系统描述
设计一个功能与Windows中的挖雷游戏相同的小游戏。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。
二、功能模块结构
扫雷
扫雷
进入游戏
开始游 戏
打开非雷区
标记雷区
游戏结束
退出
开始
开始
进入游戏
进入游戏
任选某一位置,查看是否为雷是
任选某一位置,查看是否为雷
是
是
是
否
否
是否有未“扫
是否有未“扫”过的位置
否
否
结束失败胜 利
结束
失败
胜 利
三、主要模块的算法说明
主要包括两个类。
①控制台显示类:在基类中主要是读取字符位置。并将光标移动到该位置。并输出。
②游戏类:主要功能还是在该类中完成。首先先定义其参数。然后再初始化游戏池。显示游戏窗口。判断游戏是否继续进行。显示数字。定义键盘的作用。等等。
四、运行结果
五、课程设计总结
设计完贪食蛇之后再设计扫雷游戏,设计难度减少不少。但是还是面临了许多问题。关于雷的随机出现和周围数字的产生。还有就是循环体的设计同样困扰了自己。通过向老师和同学请教,终于将问题一个个解决。在此次课程设计中进一步巩固了用C++语言编写程序。也同样体会到了在编程过程中要细致耐心。同时锻炼了自己独立思考的能力。自己设计的扫雷游戏仍然有许多的不足之处。例如没有划分其难度等级等等。应该向其他同学多加学习。早日掌握好这门语言。
六、参考文献
①《C++程序设计》(第二版)谭浩强编著 清华大学出版社
.②《Visual C++程序设计学习笔记》刘春辉编著 北京电子工业出版社
七、附录
// 头文件
#include iostream
#include cstdlib
#include ctime
#include windows.h
#include conio.h
//定义
#define KEY_UP 0xE048//宏定义 UP 为16进制的0xE048
#define KEY_DOWN 0xE050
#define KEY_LEFT 0xE04B
#define KEY_RIGHT 0xE04D
#define KEY_ESC 0x001B
#define KEY_1 1
#define KEY_2 2
#define GAME_MAX_WIDTH 100
#define GAME_MAX_HEIGHT 100
// 字符串资源
#define STR_GAMETITLE 键1:打开;键2:标记
#define STR_GAMEWIN 恭喜你,胜利了!
#define STR_GAMEOVER ( ⊙o⊙ ),很遗憾!\n
#define STR_GAMEEND 按ESC键将退出游戏\n
// 基类
class CConsoleWnd
{
public:
static int TextOut(const char*);
static int GotoXY(int, int);
static int CharOut(int, int, const int);
static int TextOut(int, int, const char*);
static int GetKey();
};
int CConsoleWnd::GetKey()// 等待标准输入和返回键码
{
int nkey=getch(),nk=0;
if(nkey=128||nkey==0)nk=getch();//从控制台读取一个字符,但不显示在屏幕上 。
return nk0?nkey*256+nk:nkey;
}
int CConsoleWnd::GotoXY(int x, int y)//移动光标到(x,y)
{
COORD cd; //表示一个字符在控制台屏幕上的坐标
cd.X = x;cd.Y = y;
文档评论(0)