这是我个人做的三子棋。(真的自己做的)
希望大家能接受。
#include <windows.h>
#include<iostream>
#include<stdlib.h>
#include<cstdio>
using namespace std;
int a[4][4],n,m,t;
char f(int i,int j)
{
if(a[i][j]==1)return '1';
else if(a[i][j]==2)return '0';
else return ' ';
}
void Mapwrite()
{
printf("|---|---|---|\n");
printf("| | | |\n");
printf("| %c | %c | %c |\n",f(1,1),f(1,2),f(1,3));
printf("| | | |\n");
printf("|---|---|---|\n");
printf("| | | |\n");
printf("| %c | %c | %c |\n",f(2,1),f(2,2),f(2,3));
printf("| | | |\n");
printf("|---|---|---|\n");
printf("| | | |\n");
printf("| %c | %c | %c |\n",f(3,1),f(3,2),f(3,3));
printf("| | | |\n");
printf("|---|---|---|\n");
return;
}
void Game1()
{
printf("玩家一请输入:\n");
scanf("%d%d",&n,&m);
if(!a[n][m] && n<4 && m<4 && n>0 && m>0)a[n][m]=1;
else while(1)
{
printf("请玩家重新输入:\n");
scanf("%d%d",&n,&m);
if(!a[n][m] && n<4 && m<4 && n>0 && m>0)
{
a[n][m]=1;
break;
}
}
return;
}
void Game2()
{
printf("玩家二请输入:\n");
scanf("%d%d",&n,&m);
if(!a[n][m] && n<4 && m<4 && n>0 && m>0)a[n][m]=2;
else while(1)
{
printf("请玩家重新输入:\n");
scanf("%d%d",&n,&m);
if(!a[n][m] && n<4 && m<4 && n>0 && m>0)
{
a[n][m]=2;
break;
}
}
return;
}
void Over(int l)
{
if(l==1)printf("玩家一胜出!\n");
else if(l==2)printf("玩家二胜出!\n");
return;
}
bool df(int k)
{
if ((a[1][1]==k && a[1][2]==k && a[1][3]==k)||
( a[2][1]==k && a[2][2]==k && a[2][3]==k)||
( a[3][1]==k && a[3][2]==k && a[3][3]==k)||
( a[1][1]==k && a[2][1]==k && a[3][1]==k)||
( a[1][2]==k && a[2][2]==k && a[3][2]==k)||
( a[1][3]==k && a[2][3]==k && a[3][3]==k)||
( a[1][1]==k && a[2][2]==k && a[3][3]==k)||
( a[1][3]==k && a[2][2]==k && a[3][1]==k)){Over(k);return 1;}
return 0;
}
void GameMain()
{
while(1)
{
Mapwrite();
if(df(2))break;
Game1();
++t;
system("cls");
Mapwrite();
if(df(1))break;
if(t==9)
{
printf("平局!\n");
break;
}
Game2();
++t;
system("cls");
}
return;
}
int main()
{
GameMain();
printf("按ESC键退出游戏");
while(1)
{
if(GetAsyncKeyState(VK_ESCAPE))
break;
}
return 0;
}