c++井字棋

#include<iostream>
using namespace std;
int m[3][3];
int array[10001],step;
void paint(){
	string pho[7];// 
	pho[0] = "              ||";
	pho[1] = "▇▇          ▇▇||";
	pho[2] = "  ▇▇      ▇▇  ||";
	pho[3] = "    ▇▇  ▇▇    ||";
	pho[4] = "      ▇▇      ||";
	pho[5] = "  ▇▇▇▇▇▇▇▇▇▇  ||";
	pho[6] = "▇▇          ▇▇||";
	int quan[7] = {5,6,6,6,6,6,5};
	int cha[7] = {1,2,3,4,3,2,1};
	int kong[7] = {0,0,0,0,0,0,0};
	string tx;
	int i,j,r;
	for(i=0;i<3;i++){
		for(r=0;r<7;r++){
			for(j=0;j<3;j++){
				if(m[i][j]==0)
					tx = pho[kong[r]];
				else if(m[i][j]==1)
					tx = pho[quan[r]];
				else tx = pho[cha[r]];
				cout<<tx;
			}
			cout<<endl;
			if(r==6) cout<<"================================================"<<endl;
		}
	}
}
bool win(){
	int flag = 0;
	if(m[0][0]==m[0][1]&&m[0][1]==m[0][2]&&m[0][0]!=0) flag = m[0][0];
	if(m[1][0]==m[1][1]&&m[1][1]==m[1][2]&&m[1][0]!=0) flag = m[1][0];
	if(m[2][0]==m[2][1]&&m[2][1]==m[2][2]&&m[2][0]!=0) flag = m[2][0];
	if(m[0][0]==m[1][0]&&m[1][0]==m[2][0]&&m[0][0]!=0) flag = m[0][0];
	if(m[0][1]==m[1][1]&&m[1][1]==m[2][1]&&m[0][1]!=0) flag = m[0][1];
	if(m[0][2]==m[1][2]&&m[1][2]==m[2][2]&&m[0][2]!=0) flag = m[0][2];
	if(m[0][0]==m[1][1]&&m[1][1]==m[2][2]&&m[1][1]!=0) flag = m[1][1];
	if(m[0][2]==m[1][1]&&m[1][1]==m[2][0]&&m[1][1]!=0) flag = m[1][1];
	if(flag==1)cout<<"quan win!";
	else if(flag==2) cout<<"cha win!";	
	return flag;
}
void game(){
	int key,kk;
	if(step%2==0) cout<<"quan 第"<<step/2+1<<"手"<<endl;
	else cout<<"cha 第"<<step/2+1<<"手"<<endl;
	cin>>key;
	while(m[key/3][key%3]!=0){
		cout<<"重新输入";
		cin>>key; 
	}if(step>5){
		kk = array[step-5];
		m[kk/3][kk%3] = 0;
	}
	m[key/3][key%3] = step%2 + 1;
	array[++step] = key;
}
int main()
{
	for(int i=0;i<3;i++){
		for(int j=0;j<3;j++){
			m[i][j] = 0;
		}
	}
	while(!win()){
		game();
		paint();
		cout<<"step="<<step<<endl;
	}
	return 0;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值