




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。课程设计报告文档题目:五子棋游戏一.引言1.编写目的:经过本课程设计,使学生巩固面向对象程序设计的基本概念、原理和技术,学会使用VisualC++开发工具进行简单面向对象程序的开发,将理论与实际相结合,完成一个小型面向对象程序的设计与实现,并在此基础上强化学生的实践意识,提高其实际动手能力和创新能力。2.定义:类:类(Class)实际上是对某种类型的对象定义变量和方法的原型。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。构造函数:C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用.然而给出一个外部对象的引用性声明时,并不调用相应的构造函数3.参考资料:(1).孙鑫《VC++深入详解》ISBN:电子工业出版社,(2).侯俊杰
《深入浅出MFC》ISBN:3华中理工大学出版社(3).王艳平张峥《WINDOWS程序设计》ISBN:7人民邮电出版社二.任务的描述1.目标:(1)进行五子棋游戏的系统结构设计和类结构设计;(2)设计并实现五子棋游戏。2.功能描述:能实现简单的五子棋游戏,但不能实现人机互动。进行五子棋游戏时,需输入坐标(数字字母)。能判断落子的错误,并提示重新输入。可在每局结束时,选择再玩一局或者退出。3.性能描述(1)数据精确度:数据输入从1-15,a-o。(2)时间特性:反应时间较慢。4.运行环境:硬件:装有Windows操作系统的计算机软件:MicrosoftVisualStudio6.0、MicrosoftVisualStudio5.条件与限制:(1)因程序较简单,无法进行可视化的操作,在进行五子棋游戏时必须逐个输入坐标。(2)程序不能实现人机对战,只能进行人与人的五子棋游戏。(3)程序不能进行悔棋的操作。(4)程序没有考虑死棋的情况,不能出现平局。三.任务设计1.类的划分:(1)类1:程序中只用到一个类,五子棋类:classGobang。公有成员包括无参数构造函数Gobang()和voidpain();intsetChessboard(intt1);intifWin();intwhoWin(intsum);voidreset()。私有成员包括intW[15][15];intcount;………………2.类的接口设计:(1)类1:外部结构包括:无参数构造函数Gobang()voidpain();intsetChessboard(intt1);intifWin();intwhoWin(intsum);voidreset()。………………3.类之间的关系:程序仅定义了一个类。四.编写代码1.问题1(1)问题描述:编写计算获胜的算法时,将获胜情况分横竖斜3种,但在编写斜着胜的时候没有充分考虑到,斜着情况有两种。应该分斜向上和斜向下两种情况。导致编写代码时一直出现错误。(2)解决办法:查找资料后将斜着获胜的算法分为了两部分,分别用3个嵌套的for循环实现。改为如下所示for(i=11;i>=0;i--)for(j=0;j<11;j++){sum=0;for(k=0;k<5;k++){if(0==W[i+k][j+k])break;sum+=W[i+k][j+k];if(whoWin(sum))return1;}}for(i=0;i<11;i++)for(j=4;j<15;j++){sum=0;for(k=0;k<5;k++){if(0==W[i+k][j-k])break;sum+=W[i+k][j-k];if(whoWin(sum))return1;}},问题得以解决。2.问题2(1)问题描述:编写程序时将横纵坐标都用char定义,后面对纵坐标进行减96转化为字母操作,对横坐标进行减0操作。结果发现在将棋子写入棋盘时,出现错误。Charcc,cl;intc,l;do{cout<<"请输入您要落子的坐标(数字字母):";cin>>cc;c=cc-0;cin>>cl;l=cl-96;if(W[c-1][l-1]!=0||c<0||c>15||l<0||l>15)cout<<"输入有误,请重新输入^_^:";}(2)解决办法:仔细检查后发现自己将数字用char定了,然后像纵坐标减96转化为字母一样,对横坐标进行了减0的操作。只要将cc用int定义,且不需要减0即可。改成下面的情况就可解决问题。charcl;intcc,c,l;do{cout<<"请输入您要落子的坐标(数字字母):";cin>>cc;c=cc;cin>>cl;l=cl-96;if(W[c-1][l-1]!=0||c<0||c>15||l<0||l>15)cout<<"输入有误,请重新输入^_^:";}……………五.程序运行1.程序运行的过程:(1)横着胜(2)竖着胜(3)斜向上胜(4)斜向下胜2.类的构造顺序:程序仅含有一个类。3.错误描述及其解决办法(1)问题1:问题描述:在运行时,当第二个黑棋(白棋)或者第二个以上的黑棋(白棋)下在横坐标是5或者纵坐标是E的位置时,就会提示黑方(白方)获胜。解决办法:仔细检查程序发现,在写计算获胜的算法时,for循环中将纵横坐标的扫描范围都写成了0-15。忽略了有的应该从4开始,有的应该到11结束。例如在进行判断斜着赢的情况时,应分两种:(1)横坐标从11到0,纵坐标送0到11。(2)横坐标从0到11,纵坐标从4到15。(2)问题2问题描述:在运行时发现不能判断从左下方到右上方五子获胜。解决办法:观察程序后发现,在进行判断左下到右上的算法时用了如下算法:for(k=0;k<5;k++){if(0==W[i+k][j+k])break;sum+=W[i+k][j+k];if(whoWin(sum))return1;}忘记了横加竖减的计算规则,采用了和左上到右下一样的算法。应该改为前加后减。改成下面算法后,问题解决。for(k=0;k<5;k++){if(0==W[i+k][j-k])break;sum+=W[i+k][j-k];if(whoWin(sum))return1;}………六、感想认识本次课程设计,经过设计一个简单的五子棋程序,经过2周的学习发现了自己的许多不足,同时也学会了很多的东西。在进行课程设计时,发现自己许多最基本的c语言上的知识都已经不能熟练的运用了。像for循环等,这些基本的知识已经很生疏了。另外在运用c++上学到的知识时,也不能得心用手。对于类的运用需要不停的看书查资
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年醋酸丁酯合作协议书
- 作文学会观察生活
- 2025年压纸轮项目建议书
- 护士入职工作总结
- 三年级数学计算题专项练习及答案
- 2025年绝缘材料:绝缘套管项目合作计划书
- 陕西航空职业技术学院《跆拳道俱乐部》2023-2024学年第一学期期末试卷
- 陕西西安地区八校2025年高三第一次模拟考试数学试题文试题含解析
- 集美大学诚毅学院《三维CAD》2023-2024学年第二学期期末试卷
- 青岛农业大学《环境工程微生物学(全英文)》2023-2024学年第二学期期末试卷
- 免疫机理图与部分鸡猪舍建筑图课件
- chap3非理想流动反应器
- 沉淀滴定法(共59张PPT)
- 2023年江苏省生物学联赛初赛预赛试题及答案(word版可编辑)
- 人员能力矩阵图
- 员工请假审批表模板
- 整机结构设计规范
- 种鸭饲养管理手册
- (高清正版)JJF(浙) 1137-2017《电容电流测试仪校准规范》
- 呼吸囊检测(课堂PPT)
- 损伤控制性复苏课件
评论
0/150
提交评论