欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    五子棋控制台课设题目.docx

    • 资源ID:3236865       资源大小:41.31KB        全文页数:19页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    五子棋控制台课设题目.docx

    五子棋控制台课设题目课设题目: 五子棋游戏 需求分析: 程序所能达到的功能 1)输出棋盘界面菜单及图像2)开始进入控制3)黑白棋正确输入格式控制4)判断黑白输赢控制5)正确计数对羿步数及下一步所要走的棋盘界面 输出的形式 以20行20列的坐标的形式输出 输入的形式和输入值的范围 用坐标方位确定所要输入棋子的准确位置 输入值的范围都比须在20行20列的正方形中 系统设计 本系统的主要结构和类结构 1)五子棋功能实现的主要结构函数 void getpointxy; /白棋出子函数 void getpointmn; /黑棋出子函数 void showqipan; /实现20行20列正方形界面输出 void print; /输出下一棋盘界面及计数 bool IsxyWin; /白棋获胜 bool IsmnWin; /黑棋获胜 void menu;/显示开始菜单界面 2)五子棋类的结构 class five private: int x; int y; int m; int n; int num_xy; int 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 +) /输出20行20列的棋盘界面 for(int j = 0 ;j < 20 ; j +) qipanij = '+' ; 本系统所设计的主要技术简介; 1)通过输出流实现五子棋美化的开始菜单界面2)图像处理技术控制界面的颜色3)在主函数中通过定义类的对象实现对功能函数的调用4)通过for循环语句实现20行20列的坐标界面的输出 系统工作流程介绍。 类的介绍: 该类完成了对输入棋子坐标的初始化,通过for循环实现了一个20行20列的坐标,在公有成员中定义了相应的功能函数 void getpointxy; /白棋出子及计数 void getpointmn; /黑棋出子及计数 void showqipan; /实现20行20列正方形界面输出 void print; /输出下一棋盘界面 bool IsxyWin; /白棋获胜 bool IsmnWin; /黑棋获胜 void menu;/显示开始菜单界面 调试与测试: 调试过程中所遇到的问题及解决方法; )在我负责的部分中,在输出20行20列的坐标界面中开始设想用特殊字符代表坐标平面的位置,这样设计出版面效果会更好,但运行时,却出现如下的乱码错误 最后只好用键盘上常见字符+代替, )因为当输入的横坐标和纵坐标中值为二位数则与一位的数值之间存在间距的不同,为了正确输出20行20列正方形坐标,因此在当输入值小于10时,必须在结尾时输出一个空格 )在判断棋子的输赢的过程中,通过四种情况的判断,只要其中的一种情况满足其累积值大于等于5,则获胜,但开始时却忽略了其中的一种情况,因为运行时没有报错,所以一直到后来,进入游戏操作中才被发现有问题,设计不完全 测试数据:包括正确的输入输出结果和错误的输入及其输出结果 如下是正确输出的结果: 错误的输入: 经验与体会 )通过课设,首先让我生产对编程的兴趣,尤其是当我真正把那程序运行出来时,那种兴奋劲,无法比拟。 )在这次课设的过程中当然也让我学到了很多东西,让我学到了很多课外的相关+高层次的东西,当然其中也复习到了,这学期刚学的+知识,尤其是通过类的运用,更让我体会面向对象在编程的过程中的作用, )另外,通过这次课设也让我体会到合作的重要性,通过我和我搭档的分工合作,我们解决很多问题,让我真正认识到团队的力量 用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤 在整个程序中我负责三个版块: )类的实现:包括对数据成员的赋值和成员函数的初始化还有通过for循环实现对20行20列坐标的定义:源代码如下 class five int x; int y; int m; int n; int num_xy; int 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 +) /输出20行20列的棋盘界面 for(int j = 0 ;j < 20 ; j +) qipanij = '+' void getpointxy; /白棋出子函数 void getpointmn; /黑棋出子函数 void showqipan; void print; bool IsxyWin; /白棋获胜 bool IsmnWin; /黑棋获胜 ; void five:getpointxy/白棋出子实现函数 SetColor(70,300); std:cout<<"请分别输入第"<<num_xy+1<<"步白棋('o')的横坐标和纵坐标:" std:cin >> x >> y; if(x <= 0 | y <= 0 | x > 20 | y > 20 ) std:cout << "出界,请重新输入:"<<endl ; getpointxy; else if(qipany-1x-1 != '+' ) std:cout << "请所下的位置已经有棋子,请重新输入:" <<endl; getpointxy; else if(num_xy+num_mn >= 400) std:cout << "棋盘已满,平局!" << endl; exit(0); else qipany-1x-1 = 'o' num_xy+; )白棋和黑棋落子情况的判断的实现,源代码如下: void five:getpointxy/白棋出子实现函数 SetColor(70,300); std:cout<<"请分别输入第"<<num_xy+1<<"步白棋('o')的横坐标和纵坐标:" std:cin >> x >> y; if(x <= 0 | y <= 0 | x > 20 | y > 20 ) std:cout << "出界,请重新输入:"<<endl ; getpointxy; else if(qipany-1x-1 != '+' ) std:cout << "请所下的位置已经有棋子,请重新输入:" <<endl; getpointxy; else if(num_xy+num_mn >= 400) std:cout << "棋盘已满,平局!" << endl; exit(0); else qipany-1x-1 = 'o' num_xy+; void five:getpointmn /黑棋出子实现函数 std:cout<<"请分别输入第"<<num_mn+1<<"步黑棋('x')的横坐标和纵坐标:" std:cin >> m >> n; if(m <= 0 | n <= 0 | m > 20 | n > 20 ) std:cout << "出界,请重新输入:"<<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 = 'x' num_mn+; )黑白棋输赢的判断,其源代码如下: 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 = 'o') num1+; for(i = x-2; i >= 0 ; i -) if(qipany-1i != 'o') break; if(qipany-1i = 'o') num1+; for( i = y ; i < y+5 ; i +) /横的方向棋子情况判断 if(qipanix-1 != 'o') break; if(qipanix-1 = 'o') num2+; for(i = y-2; i >= 0 ; i -) if(qipanix-1 != 'o') break; if(qipanix-1 = 'o') num2+; for(i = 0 ; i < 5 && x+i<20 && y+i<20; i+ ) /斜的方向棋子情况判断 if(qipany+ix+i != 'o') break; if(qipany+ix+i ='o') num3+; for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i+ ) if(qipany-i-2x-i-2 != 'o') break; if(qipany-i-2x-i-2 = 'o') num3+; for(i = 0 ; x + i < 20 && y - i - 2 >= 0 && i < 5;i +) /另一方向斜的棋子情况判断 if(qipany-i-2x+i != 'o') break; if(qipany-i-2x+i = 'o') num4+; for(i = 0 ; y + i < 20 && x - i - 2 >= 0 && i < 5;i +) if(qipany+ix-i-2 != 'o') break; if(qipany+ix-i-2 = 'o') num4+; if(num1>=5|num2>=5|num3>=5|num4>=5) /以上四种情况只要有一种情况满足则获胜 return 1; else return 0; 黑棋获胜情况类似上面情况判断 测试结果:列出对于给定的输入所产生的输出结果 )运行开始界面如下: 进入游戏界面如下: 黑白棋落子情况如下: 游戏结束结果如下: 附录:提交带注释的完整源程序: #include<windows.h> #include <conio.h> #include<iostream> using namespace std;/界面窗口颜色控制 void SetColor(unsigned short ForeColor=4,unsigned short BackGroundColor=0) HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor); ; class five int x; int y; int m; int n; int num_xy; int 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 +) /输出20行20列的棋盘界面 for(int j = 0 ;j < 20 ; j +) qipanij = '+' void getpointxy; /白棋出子及计数 void getpointmn; /黑棋出子及计数 void showqipan; /实现20行20列正方形界面输出 void print; /输出下一棋盘界面 bool IsxyWin; /白棋获胜 bool IsmnWin; /黑棋获胜 void menu;/显示开始菜单界面 ; void five:getpointxy /判断白棋出子情况及对其计数 SetColor(100,200); std:cout<<"请分别输入第"<<num_xy+1<<"步白棋('o')的横坐标和纵坐标:" std:cin >> x >> y; if(x <= 0 | y <= 0 | x > 20 | y > 20 ) std:cout << "出界,请重新输入:"<<endl ; getpointxy; else if(qipany-1x-1 != '+' ) std:cout << "请所下的位置已经有棋子,请重新输入:" <<endl; getpointxy; else if(num_xy+num_mn >= 400) std:cout << "棋盘已满,平局!" << endl; exit(0); else qipany-1x-1 = 'o' num_xy+; void five:getpointmn /判断白棋出子情况及对其计数 std:cout<<"请分别输入第"<<num_mn+1<<"步黑棋('x')的横坐标和纵坐标:" std:cin >> m >> n; if(m <= 0 | n <= 0 | m > 20 | n > 20 ) std:cout << "出界,请重新输入:"<<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 = 'x' num_mn+; void five:menu/进入菜单界面 char *q=new char9; cin>>q; if(strcmp(q,"c") five:showqipan; 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 ; 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 << 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; 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 = 'o') num1+; for(i = x-2; i >= 0 ; i -) if(qipany-1i != 'o') break; if(qipany-1i = 'o') num1+; for( i = y ; i < y+5 ; i +) if(qipanix-1 != 'o') break; if(qipanix-1 = 'o') num2+; for(i = y-2; i >= 0 ; i -) if(qipanix-1 != 'o') break; if(qipanix-1 = 'o') num2+; for(i = 0 ; i < 5 && x+i<20 && y+i<20; i+ ) if(qipany+ix+i != 'o') break; if(qipany+ix+i ='o') num3+; for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i+ ) if(qipany-i-2x-i-2 != 'o') break; if(qipany-i-2x-i-2 = 'o') num3+; for(i = 0 ; x + i < 20 && y - i - 2 >= 0 && i < 5;i +) if(qipany-i-2x+i != 'o') break; if(qipany-i-2x+i = 'o') num4+; for(i = 0 ; y + i < 20 && x - i - 2 >= 0 && i < 5;i +) if(qipany+ix-i-2 != 'o') break; if(qipany+ix-i-2 = 'o') num4+; if(num1>=5|num2>=5|num3>=5|num4>=5) return 1; else return 0; bool five:IsmnWin /黑棋获胜实现函数 int num1=1,num2=1,num3=1,num4=1; for(int i = m ; i < m+5&& m+5<20 ; i +) if(qipann-1i != 'x') break; if(qipann-1i = 'x') num1+; for(i = m-2; i >= 0 ; i -) if(qipann-1i != 'x') break; if(qipann-1i = 'x') num1+; for( i = n ; i < n+5 ; i +) if(qipanim-1 != 'x') break; if(qipanim-1 = 'x') num2+; for(i = n-2; i >= 0 ; i -) if(qipanim-1 != 'x') break; if(qipanim-1 = 'x') num2+; for(i = 0 ; i < 5 && m+i<20 && n+i<20; i+ ) if(qipann+im+i != 'x') break; if(qipann+im+i ='x') num3+; for(i = 0 ; m - i -2>=0 && n-i-2>=0 && i < 5;i+ ) if(qipann-i-2m-i-2 != 'x') break; if(qipann-i-2m-i-2 = 'x') num3+; for(i = 0 ; m + i < 20 && n - i - 2 >= 0 && i < 5;i +) if(qipann-i-2m+i != 'x') break; if(qipann-i-2m+i = 'x') num4+; for(i = 0 ; n + i < 20 && m - i - 2 >= 0 && i < 5;i +) if(qipann+im-i-2 != 'x') break; if(qipann+im-i-2 = 'x') num4+; if(num1>=5|num2>=5|num3>=5|num4>=5) return 1; else return 0; void main SetColor(30,400);/界面颜色控制 std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*双*"<<endl; std:cout<<"*"<<endl; std:cout<<"*人*"<<endl; std:cout<<"*"<<endl; std:cout<<"*五*"<<endl; std:cout<<"*"<<endl; std:cout<<"*子*"<<endl; std:cout<<"*"<<endl; std:cout<<"*棋*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"*"<<endl; std:cout<<"请按任意字母开始体验" five a; /定义一个类的对象 int temp; a.menu; SetColor(100,600); std:cout << "这是本游戏的棋盘,请按坐标输入棋子:" << endl; SetColor(10,10); a.showqipan; /通过对象调用功能函数 std:cout << "确认请按1,退出请按2:" std:cin >> temp; if(temp = 2) /游戏开始及退出控制 exit(1); if(temp = 1) std:cout << "您选择了双人游戏,下面游戏开始:" << endl; for(int i = 0 ; ; i +) SetColor(100,600); a.getpointxy; SetColor(10,10); a.print; if(a.IsxyWin) std:cout << "白棋胜!" << endl; break; a.getpointmn; a.print; if(a.IsmnWin) std:cout << "黑棋胜!" << endl; break; std:cout << "Press any key to EXITn" getch;

    注意事项

    本文(五子棋控制台课设题目.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开