闲话少说,先上代码:
#include <iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<bits/stdc++.h>
#include <iomanip>
#include <vector>
#include <queue>
#include <map>
#define gameover return 0
using namespace std;
char a[4][4]={{ },{ },{ }};
int h,l,s;
int main()
{
bool c=true;
cout<<" 欢迎光临"<<endl;
cout<<" 游戏规则:三枚棋子连成一条线,即可取得胜利.\n";
cout<<" 如果九个格子中都放了棋子,棋盘将被清空.\n";
cout<<" 输入行号、列号即可放置棋子.\n" ;
for(;c;)
{
printf("%c┃%c┃%c\n━╋━╋━\n%c┃%c┃%c\n━╋━╋━\n%c┃%c┃%c\n",a[1][1],a[1][2],a[1][3],a[2][1],a[2][2],a[2][3],a[3][1],a[3][2],a[3][3]);
cin>>h>>l;
if(a[h][l]=='X'||a[h][l]=='O')
{
cout<<" 不可在该位置放置棋子.\n";
continue;
}
if(s%2==0)a[h][l]='X';
else a[h][l]='O';
s++;
for(int i=1,j=2;i<=3;i++)
{
if((a[i][j-1]=='X'&&a[i][j]=='X')&&a[i][j+1]=='X')
{
cout<<" 一号玩家获胜 ";
c=false;
}
if((a[i][j-1]=='X'&&a[i][j]=='X')&&a[i][j+1]=='X')
{
cout<<" 一号玩家获胜 ";
c=false;
}
if((a[1][1]=='X'&&a[2][2]=='X')&&a[3][3]=='X')
{
cout<<" 一号玩家获胜 ";
c=false;
}
if((a[1][3]=='X'&&a[2][2]=='X')&&a[3][1]=='X')
{
cout<<" 一号玩家获胜 ";
c=false;
}
}
for(int i=1,j=2;i<=3;i++)
{
if((a[i][j-1]=='O'&&a[i][j]=='O')&&a[i][j+1]=='O')
{
cout<<" 二号玩家获胜 ";
c=false;
}
if((a[i][j-1]=='O'&&a[i][j]=='O')&&a[i][j+1]=='O')
{
cout<<" 二号玩家获胜 ";
c=false;
}
if((a[1][1]=='O'&&a[2][2]=='O')&&a[3][3]=='O')
{
cout<<" 二号玩家获胜 ";
c=false;
}
if((a[1][3]=='O'&&a[2][2]=='O')&&a[3][1]=='O')
{
cout<<" 二号玩家获胜 ";
c=false;
}
}
bool b=true;
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
if(a[i][j]!='X'&&a[i][j]!='O')b=false;
}
}
if(b)
{
for(int i=1;i<=3;i++)
{
for(int j=1;j<=3;j++)
{
a[i][j]=' ';
}
}
//###
}
}
gameover;
}
落子时:先输入列号,再输入行号,即可在该位置放置棋子(不可重复放置),三枚棋子连成一条线就算胜利九个格子都放置了棋子且未分出胜负时,棋盘会自动清空.
默认为每清空一次棋盘就会更换一次落子顺序,如想更改为落子顺序不变,在用###标出的位置加上一个 s-- 即可.