QT五子棋游戏设计课程设计报告

上传人:无*** 文档编号:142786440 上传时间:2022-08-25 格式:DOC 页数:15 大小:314.51KB
收藏 版权申诉 举报 下载
QT五子棋游戏设计课程设计报告_第1页
第1页 / 共15页
QT五子棋游戏设计课程设计报告_第2页
第2页 / 共15页
QT五子棋游戏设计课程设计报告_第3页
第3页 / 共15页
资源描述:

《QT五子棋游戏设计课程设计报告》由会员分享,可在线阅读,更多相关《QT五子棋游戏设计课程设计报告(15页珍藏版)》请在装配图网上搜索。

1、2013-2014学年秋季学期Windows程序设计课程设计报告 学 院: 计算机与信息学院 序 号: 56 姓 名: 周春雷 学 号: 2012112302 指导教师: 王安慧 完成时间 2014 年 05月29日目录一、 课程设计的目的1二、 课程设计的内容及要求1三、 关键技术及相关原理介绍1四、 系统的总体设计2五、 设计思路及关键问题的解决方法3六、 设计模块分类41. 输入模块42. 输出模块63. 判断模块7 判断输赢模块7 判断命令模块11七、 运行结果截屏13一、 课程设计的目的通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子棋游戏的编程实现,使程序支持人人战

2、,并且可以完成判断输赢,悔棋,从新开始等基本功能。本次课程设计的课题简单,且娱乐性强。在完成课题的过程中可以很好的复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协作以及对网络资源的有效利用有了更深的体会。二、 课程设计的内容及要求课程设计的内容:本次设计将提供一个“五子棋”的游戏程序,可完成的功能有“人与人对战”、悔棋、开始新游戏。课程设计的要求:使用QT软件开发,语言使用C+。三、 关键技术及相关原理介绍本系统主要分为输入模块、输出模块和判断模块这三大块。各模块依据所属功能的不同来划分。输入模块主要实现用

3、户对数据的输入,输出模块则是完成对用户输入到系统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢的判断和对用户悔棋和从新开始等操作命令的响应。本次采用了QT进行程序设计,对于图形界面有较好的处理方法和环境。四、 系统的总体设计系统判断模块输出模块输入模块判断输赢模块判断命令模块是否悔棋是否退出是否从新开始图1:系统功能模块图图1是系统的总体模块图,依据系统的不同功能包含3个大的模块:输入模块,判断模块和输出模块。各个模块的具体代码实现和功能描述在后面将详细的解释。这里只是对系统功能实现有一个初步的了解。五、 设计思路及关键问题的解决方法设计过程说明:开始显示棋盘棋手下棋NON

4、O判断五子是否相连悔棋YES赢了结束图2:系统流程图图2给出了整个系统的流程图,简单直观的使系统一目了然。下面开始分析整个系统的流程。首先只能进行“人人对战”,有玩家自己决定谁先手,然后输入棋子位置后系统以“标签”的形式将棋子显示在棋盘上。在下棋后系统会开始判断用户是否有“五子相连”(遵守五子棋的游戏规则),如果有五个棋子相连说明用户获胜,这时候系统会提示“你获胜了!”。主要靠判断模块判断是否有获胜的,当然在判断后可以悔棋,系统会自动回到前一步。六、 设计模块分类基本分为:输入模块、输出模块、判断模块1. 输入模块将用户输入的数据记录,并输入给程序。本系统采用的是鼠标事件输入,用户用鼠标点击棋

5、盘上的格子,系统将记录并在棋盘上显示。部分代码: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);/判断是否已有标签 else labeljj1=new QLabel(this); if(j1+temp)%2=0) labeljj1-setGeometry(x,y,50,50); labeljj1-setStyleSheet(backgr

6、ound-color:black;border-radius: 25px); colory/50x/50=1; if(win=0) labeljj1-show(); if(j1=9) j+; else labeljj1-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+; k=check(colorjj1,y/50,x/50); if(k=1) playe

7、r=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+; 2. 输出模块主要是棋盘函数以及棋子的显示,这里棋子用“标签”显示。 图3:棋盘及棋子如图3所示,使用QT做成的界面,棋子落于棋盘的网格中而不是棋盘网格线的交叉点上。棋盘的部分代码:void MainW

8、indow:paintEvent(QPaintEvent *e)/棋盘函数 QPainter painter(this); painter.setPen(Qt:black); for(i=0;i=10;i+) painter.drawLine(0,50*i,500,50*i); for(i=0;i=10;i+) painter.drawLine(50*i,0,50*i,500); 3. 判断模块判断模块分为判断命令模块和判断输赢模块。 判断输赢模块判断输赢模块是整个程序的核心部分,它的主要功能是实现对五子棋的输赢的判断。开始下棋四个方向判断是否有五颗棋子在一条线上YES水平NO切换用户YES竖

9、直NOYES斜向上NOYES斜向下NO赢结束图4:判断输赢模块流程图判断输赢模块的具体工作原理由图4可以清晰直观的看到。为了完成判断输赢模块的编码实现,首先要了解五子棋输赢的规则。五子棋需要满足五颗棋子在水平、竖直、斜向上或斜向下这四个方向上任意一个方向上有相同五个棋子出现就判断为赢。所以编码时也要依次判断这四个方向是否有五颗棋子满足要求,如果有则判断赢,如果没有这切换用户继续下棋。然后下棋后继续判断这时候是否有五颗棋子满足要求,然后这样循环。首先当用户开始下棋后系统就开始判断是否存在五颗棋子连在一条线上,系统先从水平方向判断,如果水平方向有五颗棋子连成一条线就显示获胜,如果水平方向上没有就开

10、始竖直方向上的判断;竖直方向有五颗棋子连成一条线就显示获胜,如果竖直方向上没有就开始斜向上方向上的判断;斜向上方向有五颗棋子连成一条线就显示获胜,如果斜向上方向上没有就开始斜向下方向上的判断;斜向下方向有五颗棋子连成一条线就显示获胜,如果斜向下方向上没有就切换用户下棋。然后开始新开始对用户输赢的判断,这就是整个系统的判断输赢模块的流程了。判断输赢模块的部分代码:int MainWindow:check(int n,int m,int p)/判断是否五子相连 l=1; int k=m,k1=p; for(int i=0;i=0;i-)/*横向左判断是否五子相连*/ if(colorkp=colo

11、rk-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=9-p) t=m; else t=9-p; for(i=0;it;i+)/*135度向上判断是否五子相连*/ if(colormp=color-k+k1) l+; if(l=5) return 1; else break; k=m; k1=p; if(p=0;i-)/*

12、135度向下判断是否五子相连*/ if(colormp=color+k-k1) l+; if(l=5) return 1; else break; k=m; k1=p; l=1; if(mp) t=m; else t=p;for(i=0;it;i+)/*45度向上判断是否五子相连*/ if(colormp=color-k-k1) l+; if(l=5) return 1; else break;k=m;k1=p;if(p=0;i-)/*45度向上判断是否五子相连*/ if(colormp=color+k+k1) l+; if(l=5) return 1; else break; if(l!=5

13、) return 0; 判断命令模块主要是判断退出、从新开始、悔棋。是对系统功能的一个拓展和优化,有利于用户更方便舒适的操作系统,加强五子棋游戏的娱乐性。这一部分的流程图如下:开始下棋YES从新开始?切换用户NONO判断五颗棋子是否在一条线上YES获胜NOYESNO悔棋结束图5:判断命令模块流程图如图5给出了系统判断命令模块的流程图。如图知道当用户下棋后,系统首先会判断用户是否需要从新开始游戏,如果需要系统会重新初始化后开始游戏。如果不需要,系统会判断是否有五颗棋子在一条线上,如果有则判断为赢结束游戏。如果没有五颗棋子在一条线上,系统会判断用户是否有悔棋,如果有,系统会返回上一步从新下棋,如果

14、没有则切换用户继续下棋。下棋后重复这个判断流程。下面附上判断命令模块的部分代码: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;t210;t2+) for(t3=0;t310;t3+) colort2t3=0; for(t2=0;t2j;t2+) for(t3=0;t3close(); for(t2=0;t2close(); j=0;j1=0;color1010=;k=0;l=1;temp=0,win=0;七、 运行结果截屏 图6:棋盘界面图7:赢棋界面图8:悔棋连图

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!