【Game】TicTacToe(井子棋)1.2.0

井子棋游戏1.2.0版本,原创

这个游戏操作简便,适合休闲娱乐

最近更新时间:2020/1/31 17:47

游戏截图:

但此游戏的AI还需加强,我下次再改
代码如下:

#include<bits/stdc++.h>
#include<windows.h>
#include"math.h"
using namespace std;
int vis[5][5],ch,x,y;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
void s_rj()
{
	for(int i=0;i<4;i++)
	{
		int tx=x+dx[i];
		int ty=y+dy[i];
		if(tx>=1 and tx<=3 and ty>=1 and ty<=3)
		{
			if(vis[tx][ty]==0)
			{
				vis[tx][ty]=2;
				return;
			}
		}
	}
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=3;j++)
		{
			if(vis[i][j]==0)
			{
				vis[i][j]=2;
				return;
			}
		}
	}
}
int search()
{
	if(vis[1][1]==1 and vis[2][2]==1 and vis[3][3]==1) return 1;
	else if(vis[1][1]==2 and vis[2][2]==2 and vis[3][3]==2) return 2;
	else if(vis[1][1]==1 and vis[1][2]==1 and vis[1][3]==1) return 1;
	else if(vis[1][1]==2 and vis[1][2]==2 and vis[1][3]==2) return 2;
	else if(vis[1][1]==1 and vis[2][1]==1 and vis[3][1]==1) return 1;
	else if(vis[1][1]==2 and vis[2][1]==2 and vis[3][1]==2) return 2;
	else if(vis[1][2]==1 and vis[2][2]==1 and vis[3][2]==1) return 1;
	else if(vis[1][2]==2 and vis[2][2]==2 and vis[3][2]==2) return 2;
	else if(vis[1][3]==1 and vis[2][3]==1 and vis[3][3]==1) return 1;
	else if(vis[1][3]==2 and vis[2][3]==2 and vis[3][3]==2) return 2;
	else if(vis[1][3]==1 and vis[2][2]==1 and vis[3][1]==1) return 1;
	else if(vis[1][3]==2 and vis[2][2]==2 and vis[3][1]==2) return 2;
	else if(vis[2][1]==1 and vis[2][2]==1 and vis[2][3]==1) return 1;
	else if(vis[2][1]==2 and vis[2][2]==2 and vis[2][3]==2) return 2;
	else if(vis[3][1]==1 and vis[3][2]==1 and vis[3][3]==1) return 1;
	else if(vis[3][1]==2 and vis[3][2]==2 and vis[3][3]==2) return 2;
	return 0;
}
void Game()
{
	if(search()==1)
	{
		cout<<"你赢了!!"<<endl; 	
		cout<<"是否重来?? 1.yes 2.no"<<endl; 
		int t;
		cin>>t;
		if(t==2)
			exit(0);
		else
			memset(vis,0,sizeof vis);
	}
	else if(search()==2)
	{
		cout<<"你输了!!"<<endl;
		cout<<"是否重来?? 1.yes 2.no"<<endl; 
		int t;
		cin>>t;
		if(t==2)
			exit(0);
		else
			memset(vis,0,sizeof vis);
	} 
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=3;j++)
		{
			if(vis[i][j]==0)
				cout<<"*"<<"  ";	
			else if(vis[i][j]==1)
				cout<<"X"<<"  "; 
			else if(vis[i][j]==2)
				cout<<"O"<<"  ";
		}
		cout<<endl<<endl;
	}
	cout<<"---------"<<endl;
	
	while(1)
	{
		cout<<"你选择放在哪里?请输入行坐标和列坐标"<<endl;		
		cin>>x>>y;
		if(vis[x][y]==1 or vis[x][y]==2)
			cout<<"那里已有子,请重新选择!"<<endl;
		else
		{
			vis[x][y]=1;
			s_rj();
			break;
		}
	}
	Game();
} 
int main()
{
	ProgramCaptain:
	system("title 井子棋");
	system("color 9F");
	system("mode con cols=80 lines=40");
	cout<<"井子棋游戏Made By Qym"<<endl;
	cout<<"你要先手还是后手?"<<endl;
	cout<<"1.先手 (其他).后手"<<endl; 
	cin>>ch; 
	if(ch!=1)
	{
		s_rj();
	}
	while(1)
	{
		Game(); 
	}
	return 0;
}

如有不好的地方,在下面可以指出

给个攒呗~

发布了66 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/user_qym/article/details/104105775