




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+语言程序设计课程设计报告课 程: C+语言程序设计 题 目: 五子棋 年 级: 专 业: 学 号: 姓 名: 指导教师: 江苏师范大学数学与统计学院【摘要】五子棋是我国古代的、传统的黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。本游戏是以C+语言作为开发工具,运行环境Visual C+ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。【关键词】五子棋、游戏、人人对战、C+【引言】 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。本游戏是以C+语言作为开发工具,运行环境Visual C+ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。【设计思路】第一步:绘制棋谱第二步:对战双方落子第三步:判断是否有五子连珠第四步:重复第一、二、三步直至出现五子连珠【设计过程】通过构造函数实现棋盘,编写落子函数实现玩家落子,通过判断函数判断是否有五子连珠的结果。【设计结果】图1-1初始画面图1-2双方落子图1-3白棋胜出【设计总结】 本五子棋游戏是一种简单的小程序,没有图形界面以及复杂的人机、网络对战,但即便如此我们也可以在娱乐中感受到C+编程的奇妙之处。附录:#include #include using namespace std;class MyGobang public: MyGobang(); void printBoard(); void getPointXY(); void getPointMN(); bool isFirstWin(); bool isSecondWin(); private: int x,y,m,n,num_xy,num_mn; char board2020;MyGobang:MyGobang()/构造函数实现棋谱 num_xy=0; num_mn=0; for(int i=0;i20;i+) for(int j=0;j20;j+) boardij=.;void MyGobang:printBoard()/刷新棋谱 for(int i=0;i=20;i+) if(i10) couti ; else couti; coutendl; for(int j=1;j=20;j+) if(j10) coutj ; for(int k=0;k20;k+) coutboardj-1k ; coutendl; else coutj; for(int k=0;k20;k+) coutboardj-1k ; coutendl; void MyGobang:getPointXY()/第一人落子函数 cout请输入第num_xy+1xy; coutendl; while(x20|y20) coutxy; coutendl; while(boardy-1x-1!=.) coutxy; coutendl; while(x20|y20) coutxy; coutendl; boardy-1x-1=o; num_xy+;bool MyGobang:isFirstWin()/判断第一人是否赢 int num1=1,num2=1,num3=1,num4=1; int i,j; /这里是判断X坐标向右的0连续数 for(i=x;i=x+3&i20;i+) if(boardy-1i=o) num1+; else break; /这里是判断X坐标向左的0连续数 for(i=x-2;0=x-5;i-) if(boardy-1i=o) num1+; else break; /这里是判断Y坐标向下的0连续数 for(j=y;j20&j=0&j=y-5;j-) if(boardjx-1=o) num2+; else break; /这里是判断右斜上0连续数 for(i=x,j=y;i20&j20&i=x+3&j=0&j=0&i=i-5&j=5;i-,j-) if(boardji=o) num3+; else break; /这里是判断左斜上0连续数 for(i=x-2,j=y;i=0&j=x-5&j=y+3;i-,j+) if(boardji=o) num4+; else break; /这里是判断右斜下0连续数 for(i=x,j=y-2;i=0&i=y-5;i+,j-) if(boardji=o) num4+; else break; if(num1=5|num2=5|num3=5|num4=5) return 1; / 这里总结 X,Y ,左斜,右斜 的0连续数,有等于五的就直接返回 1 否则返回0 else return 0; void MyGobang:getPointMN()/第二人落子函数 cout请输入第num_mn+1mn; coutendl; while(m20|n20) coutmn; coutendl; while(boardn-1m-1!=.) coutmn; coutendl; while(m20|n20) coutmn; coutendl; boardn-1m-1=x; num_mn+; bool MyGobang:isSecondWin()/第二人是否赢 int num1=1,num2=1,num3=1,num4=1; int i,j; for(i=m;i=m+3&i20;i+) if(boardn-1i=x) num1+; else break; for(i=m-2;0=m-5;i-) if(boardn-1i=x) num1+; else break; for(j=n;j20&j=0&j=n-5;j-) if(boardjm-1=x) num2+; else break; for(i=m,j=n;i20&j20&i=m+3&j=0&j=0&i=i-5&j=5;i-,j-) if(boardji=x) num3+; else break; for(i=m-2,j=n;i=0&j=m-5&j=n+3;i-,j+) if(boardji=x) num4+; else break; for(i=m,j=n-2;i=0&i=n-5;i+,j-) if(boardji=x) num4+; else break; if(num1=5|num2=5|num3=5|num4=5) return 1; else return 0; int main() cout*五子棋*endl; MyGobang gobang; gobang.printBoard ();/申明MYGobang类的一个对象 for(int i=0;i+) gobang.getPointXY();/调用这个函数 gobang.printBoard ();/调用绘制棋盘 if(gobang.i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025材料员考试真题及答案
- 崇州鑫宇光光无源器件生产线建设项目环境影响报告表
- 考研日语模拟试卷及答案
- 水利工程施工阶段质量控制方案
- 起重机检修安全考试题
- 2025年检验危急值考试题及答案
- 湖南省雅礼中学2025-2026学年高一上学期第一次月考数学试卷(原卷及解析)
- 2025编辑记者考试真题及答案
- 家族企业管理培训考试题
- 淳化中学模拟考试题及答案
- 浙江省舟山市2024-2025学年高二下学期6月期末物理+答案
- 2025年陕西省中考英语试题卷(含答案及解析)
- 麻醉气道痉挛处理
- 2025年中国咖啡行业行业市场调查研究及投资前景预测报告
- 学前卫生考试试题及答案
- 2025春季学期国开电大专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题及答案
- 2025年戏剧与影视学专业考研试题及答案
- 口腔诊所污水管理制度
- 2024年注会考试《经济法》真题及答案
- 2025年营养师资格考试试卷及答案
- 无人驾驶生产工艺流程
评论
0/150
提交评论