一个两人玩的五子棋游戏
#include<iostream>#include <conio.h>
using namespace std;
const int size=19;
void form(char data[][size]); //棋盘生成函数
void putin(char data[size][size]); //输入函数
int work(char data[size][size],int row,int col,int player,int *p); //基本判断函数
int main()
{
char data[size][size];
int index;
for(index=0;index<size*size;index++)
*(*data+index)=' '; //棋盘初始化为空
form(data); //打印棋盘
putin(data);
return 0;
}
void form(char data[][size])
{
int row,col,index;
cout<<" ";
for(index=0;index<size;index++)
cout<<" "<<char(index+97)<<" ";
cout<<endl;
for(index=0;index<size;index++)
{
cout<<" ";
for(row=0;row<size;row++)
cout<<"+--";
cout<<"+"<<endl; //输出+--+--+--+--+--+--+--+--+
cout<<char(index+97)<<" ";
for(col=0;col<size;col++)
cout<<"| "<<data[index][col];
cout<<"|"<<endl; //输出| | | | | | | | |
}
cout<<" ";
for(row=0;row<size;row++)
cout<<"+--";
cout<<"+"<<endl;
}
void putin(char data[size][size])
{
int row,col,number1=0,number2=0; //number为游戏是否结束的标志
char cw,cl;
int UU1=0;
while(1)
{
number1=1;
cout<<"player1 put in @"<<endl; //player1的输入属性
cin>>cw>>cl;
row=cw-97;col=cl-97;
data[row][col]='@';
if(work(data,row,col,1,&number1))
{
UU1=1;
break;
}
system("cls");
form(data);
number2=1;
cout<<"player2 put in &"<<endl; //player2的输入属性
cin>>cw>>cl;
row=cw-97;col=cl-97;
data[row][col]='&';
if(work(data,row,col,2,&number2))
break;
system("cls");
form(data);
}
system("cls");
form(data);
cout<<"GAME OVER"<<endl;
if(UU1)
cout<<"player1 胜利"<<endl;
else
cout<<"player2 胜利"<<endl;
}
int work(char data[size][size],const int row,const int col,int player,int *p)
{
int i,j;
char bj;
if(player==1)bj='@';
else bj='&';
//垂直
i=row-1; //上
while(i>=0 && data[i][col]==bj)
{
(*p)++;i--;
}
i=row+1; //下
while(i<size && data[i][col]==bj)
{
(*p)++;i++;
}
if((*p)==5)
return 1;
else
*p=1;
//水平
j=col+1; //左
while(j<size && data[row][j]==bj)
{
(*p)++;
j++;
}
j=col-1; //右
while(j>=0 && data[row][j]==bj)
{
(*p)++;
j--;
}
if((*p)==5)
return 1;
else
*p=1;
//右斜
i=row-1;j=col+1; //右上
while(i>=0 && j<size && data[i][j]==bj)
{
(*p)++;
i--;
j++;
}
i=row+1;j=col-1; //左下
while(i<size && j>=0 && data[i][j]==bj)
{(*p)++;
i++;
j--;
}
if((*p)==5)
return 1;
else
*p=1;
//左斜
i=row-1;j=col-1; //左上
while(i>=0 && j>=0 && data[i][j]==bj)
{
(*p)++;
i--;
j--;
}
i=row+1;j=col+1; //右下
while(i<size && j<size && data[i][j]==bj)
{
(*p)++;
i++;
j++;
}
if((*p)==5)
return 1;
else
*p=1;
return 0;
}
大家给评价一下啊,不要打击我啊,我是菜鸟