C++五子棋游戏程序设计一、课设内容1。
掌握C++基本编程风格。
2. 编写程序代码,实现各个模块的功能。
3。
完成小型游戏应用系统的设计开发.4. 关键语句写注释.5。
测试程序,写出测试报告。
6. 在实验报告写出综合设计心得。
二、实验内容在此次大作业中,我学习设计一个五子棋游戏的程序,源代码及分析如下:#include<iostream。
h>#include<iomanip.h〉void shuchu(char a[15][15]){int x,y,i;cout<〈" ”;for(i=0;i〈15;i++)cout<<setw(3)〈〈i;cout〈<endl;for(x=0;x<15;x++){cout<〈setw(2)<〈x;for(y=0;y<15;y++)cout<〈setw(3)〈〈a[x][y];cout〈〈endl;}}bool osheng(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y<11;y++)if(a[x][y]=='o'&&a[x][y+1]=='o’&&a[x][y+2]=='o’&&a[x][y+3]=='o’&&a [x][y+4]==’o')return 1;for(x=0;x<11;x++)for(y=0;y〈15;y++)if(a[x][y]=='o'&&a[x+1][y]=='o’&&a[x+2][y]=='o’&&a[x+3][y]==’o’&&a[x+4][y]==’o')return 1;for(x=0;x<11;x++)for(y=0;y<11;y++)if(a[x][y]==’o'&&a[x+1][y+1]=='o'&&a[x+2][y+2]==’o’&&a[x+3][y+3]==’o’&&a[x+4][y+4]==’o’)return 1;for(x=15;x>4;x-—)return 0;}bool xsheng(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y〈11;y++)if(a[x][y]==’x’&&a[x][y+1]==’x'&&a[x][y+2]=='x'&&a[x][y+3]=='x’&&a[x][y+4]=='x')return 1;for(x=0;x<11;x++)for(y=0;y〈15;y++)if(a[x][y]==’x'&&a[x+1][y]=='x'&&a[x+2][y]==’x’&&a[x+3][y]==’x’&&a[x+4][y]==’x')return 1;for(x=0;x〈11;x++)for(y=0;y<11;y++)if(a[x][y]==’x’&&a[x+1][y+1]==’x'&&a[x+2][y+2]=='x’&&a[x+3][y+3]==’x’&&a[x+4][y+4]=='x')return 1;for(x=15;x〉4;x——)for(y=15;y>4;y——)if(a[x][y]=='x'&&a[x+1][y-1]=='x’&&a[x+2][y—2]=='x'&&a[x+3][y—3]=='x'&&a [x-4][y+4]=='x')return 1;return 0;}bool he(char a[15][15]){int x,y;for(x=0;x<15;x++)for(y=0;y<15;y++)if(a[x][y]=='—')return 0;return 1;}void main(){int x,y,s,q;char a[15][15];for(x=0;x<15;x++)for(y=0;y〈15;y++)cin>>q;if(q==1)goto two;/* elsegoto one;*/two:cout<<”请选择是否进入悔棋模式:1。
是;2。
否\n”;cin>〉q;if(q==2)goto three;shuchu(a);while(1){s:while(1){cout<<"请玩家1输入下子的坐标”<<endl;cin>〉x>>y;if(a[x][y]==’o'||a[x][y]=='x')cout<〈”此处已经有字,请重下"〈〈endl;else{a[x][y]=’o';break;}}shuchu(a);cout<〈”是否需要悔棋?是请输入:1;否请输入:0”<〈endl;cin>〉s;switch(s){case 1:a[x][y]='-’;goto s;break;case 0:goto s1;break;}s1:if(osheng(a)){cout<〈”玩家1胜”;break;}s2:while(1){cout<<"请玩家2输入下子的坐标”〈<endl;cin>〉x>〉y;if(a[x][y]=='o'||a[x][y]=='x’)cout〈〈”此处已经有字,请重下”〈〈endl;else{a[x][y]='x’;break;}}shuchu(a);cout〈〈”是否需要悔棋?是请输入:1;否请输入:0”<〈endl;cin〉>s;switch(s){case 1:a[x][y]=’-’;goto s2;break;case 0:goto s3;break;}s3: if(xsheng(a)){cout〈<"玩家2胜”;if(he(a)){cout<<"平局";break;}}three:shuchu(a);while(1){while(1){cout〈<"请玩家1输入下子的坐标”<<endl;cin〉〉x>>y;if(a[x][y]==’o’||a[x][y]=='x')cout<〈”此处已经有字,请重下”〈<endl;else{a[x][y]=’o’;break;}}shuchu(a);if(osheng(a)){cout<〈”玩家1胜";break;}}shuchu(a);if(xsheng(a)){cout<〈”玩家2胜";break;}if(he(a)){cout〈<”平局";break;}}}三、感想体会本实验是用C++来设计完成了五子棋游戏。
在起初学习C++语言时我认为它就是在C语言基础上的延伸,一直用C语言的编程思想和设计理念来学习C++,这种错误的思想也让我在学习C++时走了不少的弯路,转变思想后我更认真的学习了C++语言的语法、程序结构、各类语句、函数格式和调用方式、作用域及存储类等内容。
在仅一遍学习的基础上来学习设计游戏程序让我遇到了第一个难题,就是对知识点的掌握不够扎实,在用C++语言所支持的面向对象程序设计方法的内容时让我很被动,尤其是类和对象的复制和运算、集成性和派生类、多态性和虚函数等内容。
在这次做大作业时让我系统的复习了所学的知识,让我认识到利用类和对象可以将程序中很复杂和重复的内容省掉,同时可以将用以前所学语言设计的程序变的更简单。
当然在程序学习过程中遇到的一些复杂程序仅靠书本上的知识是不够解决的,因此通过在网上查找资料,跟同学交流心得过程中也学到了很多。
在这次做大作业学习编写五子棋游戏的过程中让我领略到了C++语言的魅力和精髓,在以后的编程过程中会更熟练的运用C++语言,吸取了这次的经验后,在下次运用C++时会更全面的考虑问题,使用更正确的方法来解决问题,这次学习C++让我受益匪浅,最后感谢老师的悉心教导,老师辛苦了!。