《C++语言程序的设计书的》课程设计书的汇报材料--五子棋_第1页
《C++语言程序的设计书的》课程设计书的汇报材料--五子棋_第2页
《C++语言程序的设计书的》课程设计书的汇报材料--五子棋_第3页
《C++语言程序的设计书的》课程设计书的汇报材料--五子棋_第4页
《C++语言程序的设计书的》课程设计书的汇报材料--五子棋_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、word 1 / 9 c+语言程序设计课程设计报告课程: c+语言程序设计题目:五子棋年级:专业:学号:姓名:指导教师:某某师 x 大学数学与统计学院word 2 / 9 【摘要】五子棋是我国古代的、传统的黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。本游戏是以c+ 语言作为开发工具,运行环境,通过构造函数绘制棋谱, 以与落子函数、 判断函数, 实现双人对弈的功能。【关键词】五子棋、游戏、人人对战、c+ 【引言】五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠,英译为“ renju,英文称之为“ gobang 或“ firfive in a

2、 row的缩写 ,亦有“连五子、 “五子连、 “串珠、 “五目、 “五目碰、 “五格等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快,又有古典哲学的高深学问“阴阳易理;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场的概念,亦有“点的连接。它是中西文化的交流点,是古今哲理的结晶。本游戏是以c+ 语言作为开发工具,运行环境,通过构造函数绘制棋谱,以与落子函数、判断函数,实现双人对弈的功能。【设计思路】第一步:绘制棋谱第二步:对战双方落子第三

3、步:判断是否有五子连珠第四步:重复第一、二、三步直至出现五子连珠【设计过程】通过构造函数实现棋盘,编写落子函数实现玩家落子,通过判断函数判断是否有五子连珠的结果。【设计结果】图1-1 初始画面word 3 / 9 图1-2 双方落子图1-3 白棋胜出word 4 / 9 【设计总结】本五子棋游戏是一种简单的小程序,没有图形界面以与复杂的人机、网络对战,但即便如此我们也可以在娱乐中感受到c+编程的奇妙之处。附录:#include #include using namespace std; class mygobang public: mygobang(); void printboard();

4、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+) word 5 / 9 for(int j=0;j20;j+) boardij=.; void mygobang:printboard()/刷新棋谱 for(int i=0;i=20;i+) if(i

5、10) 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!=.) cou

6、txy; coutendl; word 6 / 9 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+;

7、 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+;

8、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(

9、boardn-1m-1!=.) coutmn; coutendl; while(m20|n20) coutmn; coutendl; boardn-1m-1=x; num_mn+; word 8 / 9 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(

10、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; word 9 / 9 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(g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论