资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2013-2014 学年秋季学期 Windows 程序设计课程设计报告学 院: 计算机与信息学院 序 号: 56 姓 名: 周春雷 学 号: 2012112302 指导教师: 王安慧 完成时间完成时间 2014 年年 05 月月 29 日日目录目录一、 课程设计的目的 .1二、 课程设计的内容及要求 .1三、 关键技术及相关原理介绍 .1四、 系统的总体设计 .2五、 设计思路及关键问题的解决方法 .3六、 设计模块分类 .41. 输入模块.42. 输出模块.63. 判断模块.7 判断输赢模块.7 判断命令模块.11七、 运行结果截屏 .1301、课程设计的目的课程设计的目的通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子 棋游戏的编程实现,使程序支持人人战,并且可以完成判断输赢,悔棋,从新 开始等基本功能。 本次课程设计的课题简单,且娱乐性强。在完成课题的过程中可以很好的 复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心 和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协 作以及对网络资源的有效利用有了更深的体会。2、课程设计的内容及要求课程设计的内容及要求课程设计的内容:本次设计将提供一个“五子棋”的游戏程序,可完成的 功能有“人与人对战” 、悔棋、开始新游戏。 课程设计的要求:使用 QT 软件开发,语言使用 C+。3、关键技术及相关原理介绍关键技术及相关原理介绍本系统主要分为输入模块、输出模块和判断模块这三大块。各模块依据所 属功能的不同来划分。 输入模块主要实现用户对数据的输入,输出模块则是完成对用户输入到系 统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢 的判断和对用户悔棋和从新开始等操作命令的响应。 本次采用了 QT 进行程序设计,对于图形界面有较好的处理方法和环境。14、系统的总体设计系统的总体设计图 1:系统功能模块图 图 1 是系统的总体模块图,依据系统的不同功能包含 3 个大的模块:输入 模块,判断模块和输出模块。各个模块的具体代码实现和功能描述在后面将详 细的解释。这里只是对系统功能实现有一个初步的了解。系统输出模块判断模块输入模块判断命令模块判断输赢模块是 否 悔 棋是 否 从 新 开 始是 否 退 出25、设计思路及关键问题的解决方法设计思路及关键问题的解决方法设计过程说明:图 2:系统流程图图 2 给出了整个系统的流程图,简单直观的使系统一目了然。下面开始分 析整个系统的流程。 首先只能进行“人人对战” ,有玩家自己决定谁先手,然后输入棋子位置后 系统以“标签”的形式将棋子显示在棋盘上。在下棋后系统会开始判断用户是 否有“五子相连” (遵守五子棋的游戏规则) ,如果有五个棋子相连说明用户获 胜,这时候系统会提示“你获胜了!” 。 主要靠判断模块判断是否有获胜的,当然在判断后可以悔棋,系统会自动回到 前一步。开始结束显示棋盘棋手下棋判断五子是否 相连赢了悔棋NO NOYES36、设计模块分类设计模块分类基本分为:输入模块、输出模块、判断模块1. 输入模块输入模块将用户输入的数据记录,并输入给程序。 本系统采用的是鼠标事件输入,用户用鼠标点击棋盘上的格子,系统将记 录并在棋盘上显示。部分代码: 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(colory/50x/50=1|colory/50x/50=2);/判断是否已有标签elselabeljj1=new QLabel(this);if(j1+temp)%2=0)labeljj1-setGeometry(x,y,50,50);labeljj1-setStyleSheet(“background-color:black;border-radius: 25px“);colory/50x/50=1;if(win=0)labeljj1-show();if(j1=9)j+;elselabeljj1-setGeometry(x,y,50,50);labeljj1-setStyleSheet(“background-color:gray;border-radius: 25px“);colory/50x/50=2;if(win=0)labeljj1-show();if(j1=9)j+;4k=check(colorjj1,y/50,x/50);if(k=1)player=new QMediaPlayer();player-setMedia(QUrl:fromLocalFile(“/E:/qt_data/music/劲乐团 - 卡农.mp3“);player-play();QMessageBox:warning(this,tr(“haha“),tr(“你获胜啦!“), QMessageBox:Yes);win=1;if(j1=9) j1=0;else j1+; 52. 输出模块输出模块主要是棋盘函数以及棋子的显示,这里棋子用“标签”显示。图3:棋盘及棋子如图 3 所示,使用 QT 做成的界面,棋子落于棋盘的网格中而不是棋盘网格 线的交叉点上。棋盘的部分代码: void MainWindow:paintEvent(QPaintEvent *e)/棋盘函数 QPainter painter(this);painter.setPen(Qt:black);for(i=0;i=0;i-)/*横向左判断是否五子相连*/if(colorkp=colork-k1)l+;if(l=5)return 1;else break;k=m;k1=p;l=1;for(i=0;i=0;i-)/*竖向下判断是否五子相连*/if(colorkp=color-kk1)l+;if(l=5)return 1;else break;k=m;k1=p;l=1;if(m=0;i-)/*135度向下判断是否五子相连*/if(colormp=color+k-k1)l+;if(l=5)return 1;else break;k=m;k1=p;l=1;if(m=0;i-)/*45度向上判断是否五子相连*/if(colormp=color+k+k1)l+;if(l=5)return 1;else break;if(l!=5) return 0; 102 判断命令模块判断命令模块主要是判断退出、从新开始、悔棋。 是对系统功能的一个拓展和优化,有利于用户更方便舒适的操作系统,加 强五子棋游戏的娱乐性。这一部分的流程图如下:图 5:判断命令模块流程图如图 5 给出了系统判断命令模块的流程图。 如图知道当用户下棋后,系统首先会判断用户是否需要从新开始游戏,如 果需要系统会重新初始化后开始游戏。如果不需要,系统会判断是否有五颗棋 子在一条线上,如果有则判断为赢结束游戏。如果没有五颗棋子在一条线上,下棋切换用户获胜开始结束从新开始?判断五颗棋子 是否在一条线 上悔棋YESNONONOYESNOYES11系统会判断用户是否有悔棋,如果有,系统会返回上一步从新下棋,如果没有 则切换用户继续下棋。下棋后重复这个判断流程。下面附上判断命令模块的部分代码: void MainWindow:huiqi()/悔棋的代码 labeljj1-1-close();colory/50x/50=0;if(temp=0)temp=1;else temp=0; void MainWindow:init()/初始化界面 player-stop();int t2,t3;for(t2=0;t2close();for(t2=0;t2close();j=0;j1=0;color1010=;k=0;l=1;temp=0,win=0;127、运行结果截屏运行结果截屏图 6:棋盘界面图 7:赢棋界面图 8:悔棋连图
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号