用C++做井字棋游戏

用C++做井字棋游戏

废话不说,直接贴代码

中间的电脑IF语句有点多,其实可以在再化一下,但这样已经算很难的电脑了,玩得愉快!

#include<iostream>
using namespace std;
 
int s[3][3], tf = 0, gofirst = 1, row, column, over = 0;
bool checkend = false;
 
void print()
{
	cout << "-------" << endl;
	for(int x = 0; x < 3; x++)
	{
		cout << "|";
		for(int y = 0; y < 3; y++)
		{
			if(s[x][y] == 0) cout << " ";
			else if(s[x][y] == 1) cout << "O";
			else if(s[x][y] == 2) cout << "X";
			cout << "|";
		}
		cout << endl << "-------" << endl;
	}
	cout << endl;
}
 
int check()
{
	for(int x = 0; x < 3; x++)
	{
		if(s[x][0] == 1 && s[x][1] == 1 && s[x][2] == 1)
		{
			cout << "You win!!!" << endl << endl;
			checkend = true;
			return 0;
			break;
		}
	}
	for(int x = 0; x < 3; x++)
	{
		if(s[0][x] == 1 && s[1][x] == 1 && s[2][x] == 1)
		{
			cout << "You win!!!" << endl << endl;
			checkend = true;
			return 0;
			break;
		}
	}
	for(int x = 0; x < 3; x++)
	{
		if(s[x][0] == 2 && s[x][1] == 2 && s[x][2] == 2)
		{
			cout << "You lose!" << endl << endl;
			checkend = true;
			return 0;
			break;
		}
	}
	for(int x = 0; x < 3; x++)
	{
		if(s[0][x] == 2 && s[1][x] == 2 && s[2][x] == 2)
		{
			cout << "You lose!" << endl << endl;
			checkend = true;
			return 0;
			break;
		}
	}
	if(s[0][0] == 1 && s[1][1] == 1 && s[2][2] == 1)
	{
		cout << "You win!!!" << endl << endl;
		checkend = true;
		return 0;
	}
	else if(s[0][0] == 2 && s[1][1] == 2 && s[2][2] == 2)
	{
		cout << "You lose!" << endl << endl;
		checkend = true;
		return 0;
	}
	else if(s[2][2] == 1 && s[1][1] == 1 && s[0][0] == 1)
	{
		cout << "You win!!!" << endl << endl;
		checkend = true;
		return 0;
	}
	else if(s[2][2] == 2 && s[1][1] == 2 && s[0][0] == 2)
	{
		cout << "You lose!" << endl << endl;
		checkend = true;
		return 0;
	}
	else
	{
		int count = 0;
		for(int x = 0; x < 3; x++)
		{
			for(int y = 0; y < 3; y++)
			{
				if(s[x][y] == 1 || s[x][y] == 2) count++;
			}
		}
		if(count == 9)
		{
			cout << "Draw!" << endl << endl;
			checkend = true;
			return 0;
		}
	}
}
 
void computer()
{
	int breaktf = 0;
	if(tf == 1)
	{
		if(s[1][1] == 0) s[1][1] = 2;
		else s[0][2] = 2;
	}
	else
	{
		if(s[1][1] == 1 && s[2][0] == 1 && s[0][2] == 2 && s[2][2] == 0) s[2][2] = 2;
		else if(s[0][0] == 2 && s[0][1] == 2 && s[0][2] == 0) s[0][2] = 2;
		else if(s[0][0] == 2 && s[0][2] == 2 && s[0][1] == 0) s[0][1] = 2;
		else if(s[0][0] == 2 && s[2][2] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[0][0] == 2 && s[2][0] == 2 && s[1][0] == 0) s[1][0] = 2;
		else if(s[0][0] == 2 && s[1][0] == 2 && s[2][0] == 0) s[2][0] = 2;
		else if(s[0][0] == 2 && s[1][1] == 2 && s[2][2] == 0) s[2][2] = 2;
		else if(s[0][2] == 2 && s[0][0] == 2 && s[0][1] == 0) s[0][1] = 2;
		else if(s[0][2] == 2 && s[0][1] == 2 && s[0][0] == 0) s[0][0] = 2;
		else if(s[0][2] == 2 && s[1][2] == 2 && s[2][2] == 0) s[2][2] = 2;
		else if(s[0][2] == 2 && s[2][2] == 2 && s[1][2] == 0) s[1][2] = 2;
		else if(s[0][2] == 2 && s[2][0] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[0][2] == 2 && s[1][1] == 2 && s[2][0] == 0) s[2][0] = 2;
		else if(s[2][0] == 2 && s[1][0] == 2 && s[0][0] == 0) s[0][0] = 2;
		else if(s[2][0] == 2 && s[0][0] == 2 && s[1][0] == 0) s[1][0] = 2;
		else if(s[2][0] == 2 && s[2][1] == 2 && s[2][2] == 0) s[2][2] = 2;
		else if(s[2][0] == 2 && s[2][2] == 2 && s[2][1] == 0) s[2][1] = 2;
		else if(s[2][0] == 2 && s[1][2] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[2][0] == 2 && s[1][1] == 2 && s[1][2] == 0) s[1][2] = 2;
		else if(s[2][2] == 2 && s[1][2] == 2 && s[0][2] == 0) s[0][2] = 2;
		else if(s[2][2] == 2 && s[0][2] == 2 && s[1][2] == 0) s[1][2] = 2;
		else if(s[2][2] == 2 && s[2][0] == 2 && s[2][1] == 0) s[2][1] = 2;
		else if(s[2][2] == 2 && s[2][1] == 2 && s[2][0] == 0) s[2][0] = 2;
		else if(s[2][2] == 2 && s[0][0] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[2][2] == 2 && s[1][1] == 2 && s[0][0] == 0) s[0][0] = 2;
		else if(s[0][1] == 2 && s[2][1] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[1][0] == 2 && s[1][2] == 2 && s[1][1] == 0) s[1][1] = 2;
		else if(s[1][2] == 2 && s[1][1] == 2 && s[1][0] == 0) s[1][0] = 2;
		else if(s[2][1] == 2 && s[1][1] == 2 && s[0][1] == 0) s[0][1] = 2;
		else if(s[1][0] == 2 && s[1][1] == 2 && s[1][2] == 0) s[1][2] = 2;
		else if(s[0][1] == 2 && s[1][1] == 2 && s[2][1] == 0) s[2][1] = 2;
		else if(s[0][0] == 1 && s[0][1] == 1 && s[0][2] == 0) s[0][2] = 2;
		else if(s[0][0] == 1 && s[0][2] == 1 && s[0][1] == 0) s[0][1] = 2;
		else if(s[0][0] == 1 && s[2][2] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[0][0] == 1 && s[2][0] == 1 && s[1][0] == 0) s[1][0] = 2;
		else if(s[0][0] == 1 && s[1][0] == 1 && s[2][0] == 0) s[2][0] = 2;
		else if(s[0][0] == 1 && s[1][1] == 1 && s[2][2] == 0) s[2][2] = 2;
		else if(s[0][2] == 1 && s[0][0] == 1 && s[0][1] == 0) s[0][1] = 2;
		else if(s[0][2] == 1 && s[0][1] == 1 && s[0][0] == 0) s[0][0] = 2;
		else if(s[0][2] == 1 && s[1][2] == 1 && s[2][2] == 0) s[2][2] = 2;
		else if(s[0][2] == 1 && s[2][2] == 1 && s[1][2] == 0) s[1][2] = 2;
		else if(s[0][2] == 1 && s[2][0] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[0][2] == 1 && s[1][1] == 1 && s[2][0] == 0) s[2][0] = 2;
		else if(s[2][0] == 1 && s[1][0] == 1 && s[0][0] == 0) s[0][0] = 2;
		else if(s[2][0] == 1 && s[0][0] == 1 && s[1][0] == 0) s[1][0] = 2;
		else if(s[2][0] == 1 && s[2][1] == 1 && s[2][2] == 0) s[2][2] = 2;
		else if(s[2][0] == 1 && s[2][2] == 1 && s[2][1] == 0) s[2][1] = 2;
		else if(s[2][0] == 1 && s[1][2] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[2][0] == 1 && s[1][1] == 1 && s[1][2] == 0) s[1][2] = 2;
		else if(s[2][2] == 1 && s[1][2] == 1 && s[0][2] == 0) s[0][2] = 2;
		else if(s[2][2] == 1 && s[0][2] == 1 && s[1][2] == 0) s[1][2] = 2;
		else if(s[2][2] == 1 && s[2][0] == 1 && s[2][1] == 0) s[2][1] = 2;
		else if(s[2][2] == 1 && s[2][1] == 1 && s[2][0] == 0) s[2][0] = 2;
		else if(s[2][2] == 1 && s[0][0] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[2][2] == 1 && s[1][1] == 1 && s[0][0] == 0) s[0][0] = 2;
		else if(s[0][1] == 1 && s[2][1] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[1][0] == 1 && s[1][2] == 1 && s[1][1] == 0) s[1][1] = 2;
		else if(s[1][2] == 1 && s[1][1] == 1 && s[1][0] == 0) s[1][0] = 2;
		else if(s[2][1] == 1 && s[1][1] == 1 && s[0][1] == 0) s[0][1] = 2;
		else if(s[1][0] == 1 && s[1][1] == 1 && s[1][2] == 0) s[1][2] = 2;
		else if(s[0][1] == 1 && s[1][1] == 1 && s[2][1] == 0) s[2][1] = 2;
		else if(s[0][0] == 1 && s[2][2] == 1 && s[1][1] == 2 && s[2][1] == 0) s[2][1] = 2;
		else if(s[0][2] == 1 && s[2][0] == 1 && s[1][1] == 2 && s[2][1] == 0) s[2][1] = 2;
		else if(s[0][0] == 1 && s[1][1] == 2 && s[0][2] == 0) s[0][2] = 2;
		else if(s[0][2] == 1 && s[1][1] == 2 && s[0][0] == 0) s[0][0] = 2;
		else if(s[2][0] == 1 && s[1][1] == 2 && s[2][2] == 0) s[2][2] = 2;
		else if(s[2][2] == 1 && s[1][1] == 2 && s[2][0] == 0) s[2][0] = 2;
		else
		{
			//cout << "here!" << endl;
			for(int x = 0; x < 3; x++)
			{
				for(int y = 0; y < 3; y++)
				{
					if(s[x][y] == 0)
					{
						s[x][y] = 2;
						breaktf = 1;
						break;
					}
				}
				if(breaktf == 1) break;
			}
		}
	}
}
 
int main()
{
	cout << "This is O and X" << endl;
	cout << "Made by Skyzhou" << endl;
	cout << "If you want to start, please press 0, else press 1: ";
	cin >> over;
	while(over == 0)
	{
		checkend = false;
		for(int x = 0; x < 3; x++)
		for(int y = 0; y < 3; y++) s[x][y] = 0;
		cout << "You go first(1) or computer go first(0): ";
		cin >> gofirst;
		if(gofirst == 1) tf = 0;
		else if(gofirst == 0) tf = 1;
		print();
		while(checkend == false)
		{
			bool inputtf = true;
			if(tf % 2 == 0)
			{
				while(inputtf)
				{
					cout << "Which place do you want to choose?" << endl;
					cout << "row: ";
					cin >> row;
					cout << "column: ";
					cin >> column;
					row--;
					column--;
					if(s[row][column] != 0) 
					{
						cout << "This place can't choose, please reinput." << endl;
					}
					else inputtf = false;
				}
				s[row][column] = 1;
			}
			else computer();
			print();
			check();
			tf++;
		}
		cout << "If you want to play again, please press 0, else press 1: ";
		cin >> over;
	}
	return 0;
}

第一次发博客,多多关照,谢谢!

  • 14
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值