- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013-2014学年秋季学期
《Windows程序设计》
课程设计报告
学 院: 计算机与信息学院
序 号: 56
姓 名: 周春雷
学 号: 2012112302
指导教师: 王安慧
完成时间 2014 年 05月29日
目录
TOC \o 1-3 \h \u 5899 一、 课程设计的目的 1
28163 二、 课程设计的内容及要求 1
12577 三、 关键技术及相关原理介绍 1
25514 四、 系统的总体设计 2
7317 五、 设计思路及关键问题的解决方法 3
29616 六、 设计模块分类 4
20087 1. 输入模块 4
11470 2. 输出模块 6
22776 3. 判断模块 7
1373 ① 判断输赢模块 7
6708 ② 判断命令模块 11
18318 七、 运行结果截屏 13
课程设计的目的
通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子棋游戏的编程实现,使程序支持人人战,并且可以完成判断输赢,悔棋,从新开始等基本功能。
本次课程设计的课题简单,且娱乐性强。在完成课题的过程中可以很好的复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协作以及对网络资源的有效利用有了更深的体会。
课程设计的内容及要求
课程设计的内容:本次设计将提供一个“五子棋”的游戏程序,可完成的功能有“人与人对战”、悔棋、开始新游戏。
课程设计的要求:使用QT软件开发,语言使用C++。
关键技术及相关原理介绍
本系统主要分为输入模块、输出模块和判断模块这三大块。各模块依据所属功能的不同来划分。
输入模块主要实现用户对数据的输入,输出模块则是完成对用户输入到系统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢的判断和对用户悔棋和从新开始等操作命令的响应。
本次采用了QT进行程序设计,对于图形界面有较好的处理方法和环境。
系统的总体设计
系统
系统
判断模块输出模块输入模块
判断模块
输出模块
输入模块
判断输赢模块判断命令模块
判断输赢模块
判断命令模块
是否悔棋是否退出是否从新开始
是否悔棋
是否退出
是否从新开始
图1:系统功能模块图
图1是系统的总体模块图,依据系统的不同功能包含3个大的模块:输入模块,判断模块和输出模块。各个模块的具体代码实现和功能描述在后面将详细的解释。这里只是对系统功能实现有一个初步的了解。
设计思路及关键问题的解决方法
设计过程说明:
开始
开始
显示棋盘
显示棋盘
棋手下棋
棋手下棋
NO
NO
NO判断五子是否相连
NO
判断五子是否相连
悔棋
悔棋
YES
YES
赢了
赢了
结束
结束
图2:系统流程图
图2给出了整个系统的流程图,简单直观的使系统一目了然。下面开始分析整个系统的流程。
首先只能进行“人人对战”,有玩家自己决定谁先手,然后输入棋子位置后系统以“标签”的形式将棋子显示在棋盘上。在下棋后系统会开始判断用户是否有“五子相连”(遵守五子棋的游戏规则),如果有五个棋子相连说明用户获胜,这时候系统会提示“你获胜了!”。
主要靠判断模块判断是否有获胜的,当然在判断后可以悔棋,系统会自动回到前一步。
设计模块分类
基本分为:输入模块、输出模块、判断模块
输入模块
将用户输入的数据记录,并输入给程序。
本系统采用的是鼠标事件输入,用户用鼠标点击棋盘上的格子,系统将记录并在棋盘上显示。
部分代码:
void MainWindow::mousePressEvent(QMouseEvent *e)
{
int m,l=1,n;
x=e-pos().rx();
x=(x/50)*50;
y=e-pos().ry();
y=(y/50)*50;
if(color[y/50][x/50]==1||color[y/50][x/50]==2);//判断是否已有标签
else{
label[j][j1]=new QLabel(this);
if((j1+temp)%2==0){
label[j][j1]-setGeometry(x,y,50,50);
label[j][j1]-setStyleSheet(background-color:
文档评论(0)