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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c++上机实习报告五子棋Word文档下载推荐.docx

1、其次、定义了一个棋盘类。这个类封装了棋盘的数据存储和落子下棋, 刷新棋盘等功能。定义好各子模块的接口。再则、分开实现各个棋盘类的方法操作。 函数的调用,函数的构造等。再次、使用一些基本控制语句和 I/O流来实现各种功能 例如:IF语句, IFELSE语句,WHILE循环语句SWITCH语句,FOR循环语句等。最后、通过编译、运行在dos环境下实现实际的结果。算法的整体思路:在用户选择开始游戏后,首先需要初始化棋盘类,输出棋盘到 dos界面上。然后,调用下棋模块,与用户交互过程中,每下一步,判断输入是否正确并 刷新棋盘。最后,在每一步后判断胜负。如果已分出胜负,输出结果并初始化棋盘,否 则继续上

2、一步操作。整体框图刿斬月生荧1棋盘类整个架构的核心部分, 如保存棋盘数据、初始化、 交互来完成对游戏的操作。三详细设计类名为Qipan。封装了棋盘的各种可能用到的功能 , 判断胜负等。用户操作主界面,主界面与 Qipan进行类图类名;愆飄属性;Inta; /尼录坐标位置城匕 川记录坐标位逼Int player;用干在(al Cb处落子Iijt name闻Nl F府旅棋盘数据 分别甲1、0表亦不同颜色子和空 汚法:int wrnQ;停断胜负void resets J庫貧棋盘void chestioardOy/FtMJF5绘棋盘2.绘制棋盘模块当游戏初始化时,和每当落子消息触发时,都需要对棋盘进行

3、重绘。这里用 特殊符号“O” + ”分别来描绘白子、黑子和棋盘空格。这个函数主要完成了以下工作:装载棋盘二位数组并进行绘制。根据棋盘数据绘制棋子。绘制最后落子指示矩形。绘制棋盘定义变屋打I电izKNJ=0护 4iN 环jN退出循环VesNo益出P”判断;liame tij j =CYes齡岀+判断n【订【订=1?es.输出9”输出y完成描1行輸出换行符複盘绘制结审3.键盘操作控制模块此模块主要用于处理与用户的交互过程。即完成落子判断过程 此模块主要完成以下工作:从键盘读入控制信息(上下左右移动和落子)判断是否在棋盘内安落子键,和移动是否超出棋盘范围 判断落子点是否已有棋子键盘操作控制从鯉盘输入

4、控制键:itit inputs呂etch C )lnpul=TS.T| 丫lnput=JDird,Inputs俪入键为空客如杲a如果20如呆buN-jnamea b0db- d+YESNO控制上移控制下楼控制左福控制右楼可UA落子 若 pkyerl则贼個为2反之亦然此处有子 娶求重新输人4.判断胜负模块这是游戏中一个极其重要的算法,用来判断当前棋盘的形势是哪一方获胜。 五子棋的胜负,在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、 左下四个方向是否有连续的五个同色棋子出现,如图:这个算法也就是Qipan的Win成员函数。从设计的思想上,需要它接受一个 棋子颜色的参数,然后返回一个布尔值

5、,这个值来指示是否胜利。这里用一个数 组int count8 来控制2中颜色4个方向的棋子情况。Counti中i为单数表 示白子个数,其中count1=j,表示横方向上白子连续个数为j,cont3=j 表示竖方向上,cou nt5 =j 表示从左到右斜方向,cou nt7=j 表示从右到左斜方 向。双数表示黑子,同白子原理一样。3.4.1横向判断设计图定义变童:血ijM舵制循环变量 血wuntgO;循环控制丘1司屮IN循环控制 =i?k+K=5Namei+k=lName计Couiit2+ III 1Count(3+3.4.3从左到右斜方向循环控制5: K-O?Namei-hkj+k=lName

6、i-bkj+k=2Comt4+Count5+344从右到左斜方向“ /循环控制5; K=O;Namei+kj-k=lNamei+kj-k=2Couni6+Count7+4.重置棋盘模块在每一局游戏开始的时候都需要调用这个函数 reset()将棋盘清空,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情:将nameNN中每一个落子位都置为无子状态(0)。将光标的初始位置,置于棋盘正中即 a=N/2,b=N/2默认的先手顺序是黑子先手,置 player=15.游戏说明模块这一模块主要是介绍此程序的操作方法。只是简单的用一系列cout语句 输出说明文字。这里不再详细介绍。6.游戏结束模块这

7、一模块主要用于释放内存,用输出流语句输出结束信息,并控制循环退出 程序。四 程序的调试与运行结果说明1.进入游戏- 主界面ISEit aVHLhesss fivfcscfiesss_cixriDfc?bLjij,*2.点击1-开始游戏3.继续点击1或2-游戏过程中4.判断胜负5.在主界面中点击2-游戏说明6.在主界面中点击0-退出游戏B C:DooimEnts and Settins Administrator S=面五课程设计总结此次课程设计的作品基本达到了要求, 完成了五子棋游戏的软件,提供了五子棋 游戏的基本下棋控制,胜负判断。但仍然是一个粗糙的学生作品而已, 有待进 步完善。我对此软件

8、的进一步设想是:可以增加玩家信息排行功能,记录玩家姓名、获胜率等信息,有助于提 高游戏的挑战性。还可以添加悔棋功能。满足用户更多的需求。通过进一步的C+学习,把dos界面的五子棋游戏改编成更美观好用的 win dows 界面。通过进一步学习人工智能等知识,完善程序,使之能实现人机对战。 最后是学习网络知识,希望能使此程序能实现在网上了双人对战。并附 加聊天功能和他人观战功能等。六后记通过编写这个程序,我体会最为深刻的一点是系统架构和设计模式的重要 性。即使是对于一个并不大的程序,代码的组织都是非常重要的,因为这关系到 日后的维护以及扩展。这个游戏之中,有关各种算法思想的设计在网络上都能找 到。

9、但是对于系统的架构,却完全是自己的事情,成百上千的代码需要通过合适 的方法组织起来,使程序员编写代码更加有条理,更加符合软件工程的标准,这 才是最重要的。在刚开始编写这个程序的时候,我幼稚地认为其中最重要的是算法设计。 但 是头两天编写程序的时候却发现程序越写越不容易维护,可见是我走错了方向。 但是对于代码的组织(也就是软件的架构)才是真正软件工业的核心部分,因为 软件事实上是直接和经济挂钩的,因此我们必须在编写代码之前选择一种最为合 适的方法来组织这些代码,否则我们将会失去更多的时间和金钱。于是,我将以前写的代码全部删除,认真地思考了一段时间。我也在这三天 内真正从一个学生走入了软件开发的大

10、门,我开始发现其实软件开发并不是纯数 学一一正相反,数学只占了很小的一部分。它其实是一种哲学,一种有着数学美 感的哲学。在这此课程设计中还遇到一个比较重大的问题。我一开始是打算写一个 windows界面的五子棋游戏,于是前两天时间一直在一边学习 vc可视化编程,一边构建界面。在短时间了看了很多本书,但还是由于时间的关系和对 API函数 的不熟悉,使我最后放弃了 windows界面的设计思想。虽然最后没做出想要的结 果,但是在这次课程设计中我真的学到了不少东西。 相信我一定能在进一步学习 后拿出更好的作品以弥补此次的遗憾。参考文献1甘玲 石岩 李盘林,解析 C+面向对象程序设计,北京,清华大学出

11、版社, 2000年9月。2黄维通,Visual C+面向对象与可视化程序设计,北京,清华大学出版社, 2003年2月3张基温 张伟,C+程序开发例题与习题,北京,清华大学出版社, 2003年7月4严蔚敏,数据结构(C语言版),北京,清华大学出版社,1996年附录一一源代码+fivechess_qxf.h 开始 +#i nclude #i nclude#in cludeiostreamusing n amespace std;#defi ne N 21int output(int count8,int win);/ 输入胜负void explain(); 游戏说明class Qipa npubl

12、ic:int a;int b;int player; /用于在【a】【b】处落子int nameNN; /存放棋盘数据intwin ();/判断胜负void reset();/ 重置棋盘void chessboard。;/下棋并描绘棋盘;+fivechess_qxf.h /=main.cpp 开始#in cludefivechess_qxf.hvoid mai n()Qipa n qipa n;int t,j,i;qipa n. a=N/2;qipa n. b=N/2;system(cls);结束 +for(i=0;i=N;i+)for(j=0;jj+) qipa n.n ameij=0;do

13、cout0)b-;int in put=getch();switch(i nput)if(bb+;a-;if(n ameab=0)sif(aplayer=player=1?2:1;n ameab=player;a+;elsefor(k=0;k5;k+)if(n ameij+k=1)此处有子! 按任意键继续/=chessboard.cpp 结束=/=win.cpp 开始=int Qipa n:wi n()int i,j,cou nt8=0,k,w in;/判断从左到右是否 5个cou ntO+;if(n ameij+k=2)cou nt1+;win=output(co un t,w in);/判

14、断列是否5个if(n amei+kj=1)coun t2+;if(n amei+kj=2)coun t3+;/判断左到右斜方向是否有 5个if(n amei+kj+k=1)coun t4+;if(n amei+kj+k=2)coun t5+;/判断右到左斜方向是否有 5个for(j=1;if(n amei+kj-k=1)cou nt6+;if(n amei+kj-k=2)coun t7+;IIreturn wi n;/输出胜负int output(i nt coun t8,i nt win)if(cou nt0=5 | coun t2=5 |coun t4=5 | cou nt6=5)wi n=0;白子赢了 if(cou nt1=5 | cou nt3=5count5=5 | count7=5)黑子赢了 8; cou nti=0;/=win.cpp 结束=

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

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