ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:274.08KB ,
资源ID:2492736      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(五子棋c++课程设计.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

五子棋c++课程设计.doc

1、数据结构课程设计 目录第一章 :课程设计目的和要求21.1 数据结构课程设计的目的 21.2 数据结构课程设计实现的要求2第二章 :课程设计任务内容32.1 五子棋对弈系统3第三章 :详细设计说明43.1 功能设计43.2五子棋对弈系统流程图43.3 软件中实现各项功能的函数与程序代码5第四章 :程序运行环境说明104.1 程序运行环境说明及出现的问题104.2 运行结果10第五章:课程设计心得与体会14附录15源程序:16五子棋第一章 课程设计目的和要求1.1 数据结构课程设计的目的 进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对数据结构中的重点和难点内

2、容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。1.2 数据结构课程设计实现的要求使用C+语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技巧。同时设计一个简单的五子棋对弈系统,可以实现五子棋的基本功能,是一款娱乐用的小型程序。第二章 课程设计任务内容2.1五子棋对弈系统 设计一个五子棋系统程序,实现对五子棋进行运行。基本要求:五子棋是有两个人在一盘棋上进行对抗的竞技活动。在对局开始时,先由用户选择哪方开局,

3、先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围交叉点上落子,如此轮流落子,知道某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方程就算获胜。此时算法结束,当有任何一方退时出,都可在算法中实现。 第三章 详细设计说明3.1 功能设计(1)由两个玩家分别下棋,当某一玩家五子相连,则赢。 (2)界面要求:初始状态显示棋盘,并显示两个玩家的操作键及初始玩家名称;游戏进行状态动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家名称。开始3.2五子棋对弈系统流程图 白放下子判断该位置是否有棋找另一位 是白方下子 否判断是否重现开局跳出白棋获胜判断白方是否胜出 是

4、否黑方下子 否 判断该位置是否有棋棋 否游戏结束找另一位 是否 黑方下子 跳出黑棋获胜判断黑方是否胜出 是判断该位是否图 3-1程序总体图白(黑)方下子 是白(黑)子在水平方向是否大于4 白(黑)方获胜否白(黑)子在垂直方向是否大于4是进入选择是否重新开局框白(黑)方获胜 否 是白(黑)子在正对角线方向是否大于4白(黑)方获胜 否 是白(黑)子在反对角线方向是否大于4白(黑)方获胜否黑(白)方下子图3-2算法流程图3.3 软件中实现各项功能的函数与程序代码主要函数、结构体和链表Int a; /纪录坐标位置Int b; /纪录坐标位置Char achBoardij,/用于在【a】【b】处落子ch

5、Sort;; /棋子的类别Int nWin /赢棋的次数类的使用:class CGobangprivate:char chSort; /棋子的类别int nWin; /赢棋的次数int nLose; /输棋的次数static int nDraw; /平局次数public: static char achBoard1919; /棋盘static int nSize; /棋盘的尺寸nSize*nSizeCGobang(char chsort) /构造函数,决定一方棋子的类别chSort=chsort;nWin=nLose=nDraw=0;friend void huiqi(); /悔棋static

6、 void savefile(); /将棋盘保存至文件static void readBoard(); /从文件中读入棋盘void continute(); /接着上次的游戏玩void PlayTurn(void); /走一步棋int Judge(); /判断是否连成五子,是则返回1void Win(void); /赢棋void Lose(void); /输棋static void Draw(void); /平局void PrintInfo(void); /打印总体情况static void PrintBoard(void); /输出棋盘static int GetFull(void); /判

7、断棋盘是否一满static void InitialBoard(void); /初始化棋盘;本次程序设计主要设计了五个模块1.绘制棋盘模块 当游戏初始化时,和每当落子消息触发时,都需要对棋盘进行重绘。这里用特殊符号“o”“”分别来描绘白子、黑子。这个函数主要完成了以下工作: 装载棋盘二位数组并进行绘制。 根据棋盘数据绘制棋子。 绘制最后落子指示规矩。绘制棋牌;定义变量i,ji=0;i+jnSize退出循环inSize退出循环i=nSize J, j=nSize输出结果;nWin=output(k,nWin) i=5 k5 k=5 Name1+kj=1 Namei+k1=2 k+ k+2).竖向

8、判断流程图“|”3).从左到右斜方向“” 循环控制 5:k=0;k+ K5 k=5Name1+kj-k=1 Namei+kj-k=2 k+ k +图3-84) .从右到左斜方向“/” 循环控制 5:k=0;k+ k5 k=5Name1+kj-k=1 Namei+kj-k=2 k+ k+图3-9图3-94.重置棋盘模块 在每局游戏开始的时候都需要调用这个函数InitialBoard(void)将棋盘初始化,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情: 将achBoardNN中每一个落子位都置为无子状态(0)。 默认的先手顺序是黑子先手,置player=1。5.游戏结束模块 这一

9、模块主要用于释放内存,用输出流语句输出结束信息,并控制循环退出程序。第四章 程序运行环境说明4.1 程序运行环境说明及出现的问题该程序可以实现对学生信息的录入和显示,可以采用Dev-c或者Visual C+运行,可以实现简单的界面化,使程序方便使用和修改。4.2 运行结果软件使用结果1.进入游戏主界面图4-12.点击1开始游戏图4-23.继续点击1或2游戏过程中图4-34.判断胜负图4-45.在主界面中点击0退出游戏图4-6第五章 课程设计心得与体会课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学

10、技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C+语言又是最常见,功能最强大的一种高级语言,因此做好C+语言课程设计是十分必要的。通过几周的课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做这么长的程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够

11、牢固,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。我做的是五子棋设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。更加是第一次做课程设计,所以做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多功能上的欠缺和漏洞,可我还是很高兴的。无论如何是

12、自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C+语言的一次实践作业,自己进步的证明。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!附录1:参考文献1、谭浩强 著.C+程序设计教程.清华大学出版社2、陈维兴 林小茶 编著.C+面向对象程序设计.中国铁道出版社3、田淑清, C语言程序设计,北京:高等教育出版社,2006年1月4、David J.Kruglinski,Scot Wingo

13、,George Shepherd,Visual C+6.0技术内幕(第五版),希望图书室译,北京:北京希望电子出版社,2001 年1月源程序:#include #include #include #include int a90,b90; /定义全局数组int k=0;using namespace std;class CGobang /棋子类private:char chSort; /棋子的类别int nWin; /赢棋的次数int nLose; /输棋的次数static int nDraw; /平局次数public:static char achBoard1919; /棋盘static i

14、nt nSize; /棋盘的尺寸nSize*nSizeCGobang(char chsort) /构造函数,决定一方棋子的类别chSort=chsort;nWin=nLose=nDraw=0;friend void huiqi(); /悔棋static void savefile(); /将棋盘保存至文件static void readBoard(); /从文件中读入棋盘void continute(); /接着上次的游戏玩void PlayTurn(void); /走一步棋int Judge(); /判断是否连成五子,是则返回1void Win(void); /赢棋void Lose(voi

15、d); /输棋static void Draw(void); /平局void PrintInfo(void); /打印总体情况static void PrintBoard(void); /输出棋盘static int GetFull(void); /判断棋盘是否一满static void InitialBoard(void); /初始化棋盘;char CGobang:achBoard1919;int CGobang:nSize=0;int CGobang:nDraw=0;void CGobang:Draw()coutnntt平局!nn;nDraw+;void CGobang:InitialBo

16、ard() /初始化棋盘for(int i=0;inSize;i+)for(int j=0;jnSize;j+)achBoardij= ; void CGobang:PrintBoard() /输出棋盘int i,j;coutendl;coutsetw(5)endl;for(i=1;i=nSize;i+)coutsetw(4)i;coutendl;for(i=0;inSize;i+)coutsetw(3)endl;couti+1;for(j=0;jnSize;j+)coutachBoardij | ;coutendl;int CGobang:GetFull() /判断棋盘是否一满,若是返回1f

17、or(int i=0;inSize;i+)for(int j=0;jnSize;j+)if(achBoardij= )return 0;return 1;void CGobang:Win() /赢棋coutnnttchSort方获胜!nn;nWin+;void CGobang:savefile() /将棋盘保存至文件ofstream outfile(C+.txt,ios:out);if(!outfile)cerropen file error!endl;exit(1);for(int i=0;inSize;i+)for(int j=0;jnSize;j+) outfile.write(char

18、 *) &achBoardij,sizeof(achBoardij); outfile.close();void CGobang:Lose() /输棋nLose+;void CGobang:PlayTurn(void) /走一步棋int nRow,nCol;char choice1,choice2;docoutt现在该chSortnRownCol;if(nRownSize|nColnSize)coutt输入的坐标越界,x与y的范围应小于等于nSize0&nCol0&achBoardnRow-1nCol-1!= )coutt棋盘(nRow,nCol)处已有棋子,请重新输入n; else if(n

19、Row=-1) huiqi();else if(nRow=0&nCol=0)coutchoice1;if(choice1=y|choice1=Y)coutchoice2;if(choice2=y|choice2=Y)CGobang:savefile();coutt保存成功,欢迎下次再玩!n;exit(1);elsecoutt游戏结束,欢迎再次使用五子棋游戏!;coutendl;exit(0);else achBoardnRow-1nCol-1=chSort;ak=nRow-1;bk=nCol-1;k+;break;while(1);int CGobang:Judge() /判断是否连成五子,是

20、则返回1int i,j;for(i=0;inSize;i+)for(j=0;jnSize;j+)if(achBoardij=chSort)if(j+4nSize)if(achBoardij+1=chSort&achBoardij+2=chSort&achBoardij+3=chSort&achBoardij+4=chSort)return 1;if(i+4nSize)if(achBoardi+1j=chSort&achBoardi+2j=chSort&achBoardi+3j=chSort&achBoardi+4j=chSort)return 1;if(i+4nSize&j+40&j+4nSi

21、ze)if(achBoardi-1j+1=chSort&achBoardi-2j+2=chSort&achBoardi-3j+3=chSort&achBoardi-4j+4=chSort)return 1;return 0;void CGobang:PrintInfo(void) /打印总体情况coutSizechSort方共计赢nWin局,输nLose局,平nDraw局。endl;void CGobang:readBoard() /以二进制形式从文件中读出棋盘ifstream infile(C+.txt,ios:in); if(!infile)cerropen file eror!endl;

22、exit(1);else for(int i=0;inSize;i+)for(int j=0;jnSize;j+) infile.read(char *) &achBoardij,sizeof(achBoardij);infile.close();void huiqi() /悔棋 k-;CGobang:achBoardakbk= ;k-;CGobang:achBoardakbk= ;CGobang:PrintBoard();void PrintRule(void) /打印游戏规则couttnn;couttt欢迎使用五子连珠游戏!endlendl; couttnn; coutt游戏规则:endl

23、; coutt1.每1步输入要下棋子的格子的x,y坐标,按Enter键n; coutt2.有1方首先5个棋子连成一线即判获胜n; coutt3.当旗子布满棋盘但仍无获胜方即为平局n; coutt4.一局结束后,若想继续按Y键,若退出则按其他键n; coutt5.若想中途退出游戏,请输入(0,0),再按照提示保存游戏n; coutt6.悔棋请输入(-1,0)n; coutt6.X方先行n; coutnntt请按任意键开始下棋!nn;int JudgePlay(CGobang &SideX,CGobang &SideO) /每下一步要进行输赢的判断,有赢的则返回1 if(SideX.Judge()

24、 /X方获胜SideX.Win();SideO.Lose();return 1;else if(SideO.Judge() /O方获胜SideO.Win();SideX.Lose();return 1;elsereturn 0;void Play(CGobang &SideX,CGobang &SideO) /开始一局游戏while(1)system(cls); coutt*n; couttt.悔棋请输入(-1,0)n; couttt.中途退出请输出(0,0),并根据提示保存n; coutt*n;CGobang:PrintBoard(); /输出棋盘SideX.PlayTurn(); /X方下

25、棋if(JudgePlay(SideX,SideO) /判断输赢 break;if(CGobang:GetFull() /判断是否平局CGobang:Draw();break;system(cls); /清屏coutt*n;couttt.悔棋请输入(-1,0)n;couttt.中途退出请输出(0,0),并根据提示保存n;coutt*n;CGobang:PrintBoard(); /输出棋盘SideO.PlayTurn(); /O方下棋if(JudgePlay(SideX,SideO) /判断输赢break;if(CGobang:GetFull() /判断是否平局CGobang:Draw();b

26、reak;void continute() /接着上次的游戏玩 char str; cin.get();coutstr;if(str=Y|str=y)CGobang:readBoard();else coutt请玩新游戏n;int main(void) CGobang SideX(),SideO(O); /定义两个旗子类对象,分别代表X方与O方system(cls);PrintRule();cin.get();string strChoice;docoutCGobang:nSize;cout19|CGobang:nSize10)coutCGobang:nSize;coutendl;elsesystem(PAUSE); system(

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服