c课程设计五子棋游戏

上传人:好** 文档编号:116647859 上传时间:2019-11-16 格式:DOC 页数:20 大小:8.76MB
返回 下载 相关 举报
c课程设计五子棋游戏_第1页
第1页 / 共20页
c课程设计五子棋游戏_第2页
第2页 / 共20页
c课程设计五子棋游戏_第3页
第3页 / 共20页
c课程设计五子棋游戏_第4页
第4页 / 共20页
c课程设计五子棋游戏_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《c课程设计五子棋游戏》由会员分享,可在线阅读,更多相关《c课程设计五子棋游戏(20页珍藏版)》请在金锄头文库上搜索。

1、 五子棋游戏1.设计目的(1)加深对面向对象程序基本的理解和掌握。(2)熟练掌握基本流程图的绘制。(3)能够在调试程序中快速发现并排除程序中的错误。(4)提高面向对象程序语言解决实际中的问题的能力。 进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对C+语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。2.功能描述(1)输出棋盘界面(2)玩家轮流下棋(3)判断键盘输

2、入的坐标位置(4)判断是否在同一位置下棋(5)判断赢家(6)结束游戏由两个玩家分别下棋,按任意键开始游戏,显示棋盘,用户通过输入横纵坐标的位置下棋,当某一个玩家五子相连,则赢。界面要求:初始状态显示棋盘,并显示两个玩家的操作键及初始玩家名称;游戏进行状态动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家名称。3.总体设计3.1系统流程图五子棋对弈系统流程图如下:白方下子判断位置是否有棋找另一位置白方下子判断白方是否胜出跳出白棋获胜黑方下子判断位置是否有棋棋找另一位置黑方下子判断黑方是否胜出跳出黑棋获胜判断是否重现开局否否游戏结束开始 否 是 否 是图 1程序总体图

3、某方在水平方向是否大于4某方在正对角线方向是否大于4某方在垂直方向是否大于4某方在反对角线方向是否大于4否白(黑)方获胜白(黑)方获胜白(黑)方获胜白(黑)方获胜进入选择是否重新开局框黑(白)方下子是是是是否否否白(黑)方下子游戏开始 图2算法流程图3.2详细设计3.2.1 本系统的主要结构和类结构(1)五子棋功能实现的主要结构函数void getpointxy(); /白棋出子函数void getpointmn(); /黑棋出子函数void showqipan(); /实现20行20列正方形界面输出void print(); /输出下一棋盘界面及计数bool IsxyWin(); /白棋获胜

4、bool IsmnWin(); /黑棋获胜void menu();/显示开始菜单界面(2)五子棋类的结构class five int x,y,m,n,num_xy,num_mn; char qipan2020; /定义20行20列的数组public: five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) /构造函数初始化x = X; y = Y; m = M; n = N; num_xy = Num_xy; num_mn = Num_mn; for(int i = 0 ; i < 20 ; i

5、 +) /输出20行20列的棋盘界面 for(int j = 0 ;j < 20 ; j +) qipanij = '.' 3.2.2功能模块(1)图形显示模块:程序开始运行时,显示给出的一个界面任意键继续,包括对数据成员的赋值和成员函数的初始化还有通过for循环实现对20行20列坐标的定义。源代码如下:class five int x,y,m,n,num_xy,num_mn; char qipan2020; /定义20行20列的数组public: five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int

6、 Num_mn = 0) /构造函数初始化x = X; y = Y; m = M; n = N; num_xy = Num_xy; num_mn = Num_mn; for(int i = 0 ; i < 20 ; i +) /输出20行20列的棋盘界面 for(int j = 0 ;j < 20 ; j +) qipanij = '.' void getpointxy(); /白棋出子及计数void getpointmn(); /黑棋出子及计数void showqipan(); /实现20行20列正方形界面输出void print(); /输出下一棋盘界面bool

7、 IsxyWin(); /白棋获胜bool IsmnWin(); /黑棋获胜void menu();/显示开始菜单界面;(2)白棋和黑棋落子情况的判断的实现:游戏开始,玩家通过输入棋子的坐标确定下棋的位置,黑棋白棋轮流开始。void five:getpointxy() /判断白棋出子情况及对其计数 std:cout<<"请分别输入第"<<num_xy+1<<"步白棋的横坐标和纵坐标:" std:cin >> y >> x; if (!(1<=x&&x<=20&

8、&1<=y&&y<=20) std:cout << "输入错误,请重新输入:"<<endl ; getpointxy(); else if(qipany-1x-1 != '.' ) std:cout << "请所下的位置已经有棋子,请重新输入:" <<endl; getpointxy(); else if(num_xy+num_mn >= 400) std:cout << "棋盘已满,平局!" << end

9、l; exit(0); else qipany-1x-1 = 'O' num_xy+; void five:getpointmn() /判断黑棋出子情况及对其计数 std:cout<<"请分别输入第"<<num_mn+1<<"步黑棋的横坐标和纵坐标:" std:cin >> n >> m; if (!(1<=m&&m<=20&&1<=n&&n<=20) std:cout << "输入错误

10、,请重新输入:"<<endl ; getpointmn(); else if(qipann-1m-1!='.') std:cout << "请所下的位置已经有棋子,请重新输入:" <<endl; getpointmn(); else if(num_xy+num_mn >= 400) std:cout << "棋盘已满,平局!" << endl; exit(0); else qipann-1m-1 = '*' num_mn+; (3)菜单界面模块:v

11、oid five:menu()/进入菜单界面char *q=new char9;cin>>q;if(strcmp(q,"c")five:showqipan();(4)输出模块:void five:showqipan() /输出20行20列的坐标数值 int p=0,q=0; for(int i = 0 ; i <= 20 ; i+) if(p<10) std:cout << p <<' ' else std:cout << p ; p+; cout << endl; for(i = 0

12、; i < 20 ; i+) if(i>=0) q+; if(q<10) std:cout << q <<' ' else std:cout << q; for(int j = 0 ; j < 20 ; j +) std:cout << qipanij<<' ' ; std:cout << endl; void five:print() int p=0,q=0; for(int i = 0 ; i <= 20 ; i+) if(p<10) std:cout

13、 << p <<' ' else std:cout << p ; p+; std:cout << endl; for(i = 0 ; i < 20 ; i+) if(i>=0) q+; if(q<10) std:cout << q <<' ' else std:cout << q; for(int j = 0 ; j < 20 ; j +) std:cout << qipanij<<' ' ; std:cout << endl; (5)黑白棋输赢的判断,判断当前棋盘的形势是哪一方获胜。五子棋的胜负,在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、左下四个方向是否有连续的五个同色棋子出现,如图:图 3判断胜负方向bool five:IsxyWin()/白棋获胜实现函数 int num1=1,num2=1,num3=1,num4=1; for(int i = x ; i < x+5&& x+5<20 ; i +) if(qipany-1i != 'O') break; if(qipany-1i = '

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号