ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:139.85KB ,
资源ID:1921460      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1921460.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(QT五子棋游戏设计课程设计报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

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

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

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

5、oid 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(background-color:black;border-r

6、adius: 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) player=new QMediaPlayer(); pla

7、yer-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 MainWindow:paintEvent(QPaintEve

8、nt *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.判断模块判断模块分为判断命令模块和判断输赢模块。1判断输赢模块判断输赢模块是整个程序的核心部分,它的主要功能是实现对五子棋的输赢的判断。开始结束下棋四个方向判断是否有五颗棋子在一条线上切换用户YES赢水平竖直斜向上斜向下YESYESYESNONONONO图4:判断

9、输赢模块流程图判断输赢模块的具体工作原理由图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=colork-k1) l+; if(l=5) return 1

11、; 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-)/*135度向下判断是否五子相连*/ if(colormp

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1