当前位置:编程学习 > C/C++ >>

求c++五子棋人与人源代码

简单的实现对战就可以
答案:
#include<iostream.h>
#include<stdlib.h>
#define Num 15
//********************************************************
//类
class T//定义类用来封装所有相关函数和变量
{
char board[Num][Num];//用数组board[Num][Num]来定义棋盘
public:
void PrintMenu(); //打印菜单 说明游戏规则和方法
void PrintBoard(); //打印棋盘
void GameStart(char*,int &,int &,char); //下棋
int whichwin(int,int,char); //判断那个选手赢
void Choice(char &); //是否再玩

void Setboard(); //重置棋盘
};
//****************************************************************
//main主函数
void main ()//主函数
{
T s;//说明类的一个对象s
s.PrintMenu();//通过s调用PrintMenu函数提示如何游戏
char player1[20],player2[20];//玩家姓名
int FirstWin=0,SecondWin=0,Draws=0,x,y,N;//说明变量,赋初值为0以待计算输赢结果
char choice='Y';
cin.ignore(20,'\n');//输入输出流,前面如果有输入把输入行所有字符取空,以便后面的输入从新的一行开始
cout<<"请输入第一个玩家姓名:";
cin.getline(player1,20);//连续读取数据
cout<<"请输入第二个玩家姓名:";
cin.getline(player2,20);

while(choice=='Y'||choice=='y')//条件成立,执行
{
s.Setboard();//调用Setboard函数
N=0;
while(N<=(Num*Num))
{
s.PrintBoard();//打印棋盘
s.GameStart(player1,x,y,'O');
N++;//记录已下棋子数
if(s.whichwin(x-1,y-1,'O'))//返回值不为0则条件成立
{
s.PrintBoard();
cout<<player1<<"赢了。"<<endl;
FirstWin++;//记录赢局数
break;//终止本次循环
}
s.PrintBoard();//同上
s.GameStart(player2,x,y,'X');
N++;
if(s.whichwin(x-1,y-1,'X'))
{
s.PrintBoard();
cout<<player2<<"赢了。"<<endl;
SecondWin++;
break;
}
if(N==(Num*Num))
{
cout<<"和棋!";
Draws++;//记录平局数
break;
}
}
s.Choice(choice);//给玩家提供一次选择是否再玩的机会
}
//输出游戏输赢次数
cout<<player1<<"赢了"<<FirstWin<<"次"<<endl;
cout<<player2<<"赢了"<<SecondWin<<"次"<<endl;
cout<<"和"<<Draws<<"次"<<endl;
cout<<"谢谢使用。"<<endl;
cout<<"任意键继续。"<<endl;
cin.get();//很必要的,目的是空度换行字符
}
//*******************************************************************
//定义公有成员函数
void T::PrintMenu()
{
cout<<"欢迎进入五子棋游戏!\n";
cout<<"******************************************"<<endl;
cout<<"\t游戏说明:"<<endl<<endl;
cout<<"1.第一个玩家用O第二个玩家用X;"<<endl;
cout<<"2.请根据提示输入所要走的行和列;"<<endl;
cout<<"3.按<Enter>下棋。"<<endl;
cout<<"4.任意键继续。"<<endl;
cout<<"******************************************"<<endl;
}
//循环打印空棋盘
void T::Setboard()
{for(int Row=0;Row<Num;Row++)
for(int Column=0;Column<Num;Column++)
board[Row][Column]=' ';
}

//输出棋盘
void T::PrintBoard()
{
system("cls");//执行系统命令,cls—清屏
cout<<endl;
int i,j;
cout<<" ";
for(i=0;i<Num;i++) {
if(i<9)cout<<" "<<i+1;
else cout<<" "<<i+1;
}
cout<<endl;
for(i=0;i<Num;i++){
if(i+1<10)cout<<" "<<i+1<<" ";
else cout<<i+1<<" ";
for(j=0;j<(Num-1);j++){
cout<<board[i][j]<<" | ";
}
cout<<board[i][Num-1]<<endl;
if(i<Num-1){
cout<<" ";
for(int s=0;s<Num-1;s++) cout<<"---|";
cout<<"---"<<endl;
}
}
cout<<endl<<endl;
}
答案补充
剩下的部分还是太长,这里写不下···如果需要就再告诉我吧···
http://search.download.csdn.net/source/801228
去看看吧 可能有用

上一个:VC++6.0缺少c/c++ header files
下一个:c语言和c++ 哪个更好?.

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,