C++Win32(DOS)五子棋代码(三字连珠).doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:12 大小:50KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C++Win32(DOS)五子棋代码(三字连珠).doc

C++Win32(DOS)五子棋代码(三字连珠).doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

三字连珠实验要求:模仿五子棋的形式,编写有一方三子或五子连成一线即获胜的程序,具体要求:玩家可以设置棋盘的大小,即在游戏开始时输入一变量n(n=3~9),使棋盘的大小为n×n。本程序用if-else选择语句来判断获胜者,如果棋盘变大这将非常频繁,现要求将这一功能用循环语句实现,且适用于任意大小的棋盘。加入可以悔棋的功能,要求任意方可以在对方下棋后悔改一步,即将对方当前步和本方上一步删除,本方重新下棋。程序代码(本页不足请附页)类的定义:classGame{public:Game(intM);voidprint();//输出棋盘(1)voidprint2();//输出棋盘(2)voidtwo_people();//双人对战intjudge1(inta,intb);//判断玩家1胜利intjudge2(inta,intb);//判断玩家2胜利voidregret(inta,intb);//悔棋private:intN;chargame[10][10];};类的实现:#include<iostream.h>#include"1.h"voidGame::print()//输出棋盘(1){inti,j;cout<<"";for(i=1;i<N+1;i++)cout<<""<<i;cout<<endl;for(i=0;i<N;i++){for(j=0;j<=N;j++){if(j==0)cout<<i+1<<"";elsecout<<".";}cout<<endl;}}voidGame::print2()//输出棋盘(2){inti,j;cout<<"";for(i=1;i<N+1;i++)cout<<""<<i;cout<<endl;for(i=1;i<N+1;i++){for(j=0;j<=N;j++){if(j==0)cout<<i<<"";elseif(game[i][j]=='O')cout<<"O";elseif(game[i][j]=='X')cout<<"X";elsecout<<".";}cout<<endl;}}voidGame::regret(inta,intb)//悔棋{game[a][b]='0';}voidGame::two_people(){intflag=0;//判断玩家intp1,p2;//下棋位置print();for(;;){if(flag==0){cout<<"请玩家一输入下棋位置(玩家二要悔棋请输入两个0)"<<endl;cin>>p1>>p2;if(p1==0&&p2==0){cout<<"请输入要悔棋的坐标"<<endl;cin>>p1>>p2;if(game[p1][p2]!='X'){cout<<"输入有误"<<endl;continue;}regret(p1,p2);}elseif(game[p1][p2]!='0'){cout<<"输入有误"<<endl;continue;}elseif(p1>=1&&p1<=9&&p2>=1&&p2<=9)game[p1][p2]='O';else{cout<<"输入位置有误,请重输"<<endl;continue;}if(judge1(p1,p2)==1){print2();cout<<"玩家一胜利!"<<endl<<endl;break;}flag=1;print2();}elseif(flag==1){cout<<"请玩家二输入下棋位置(玩家一要悔棋请输入两个0)"<<endl;cin>>p1>>p2;if(p1==0&&p2==0){cout<<"请输入要悔棋的坐标"<<endl;cin>>p1>>p2;if(game[p1][p2]!='O'){cout<<"输入有误"<<endl;continue;}regret(p1,p2);}