三子棋
  • 板块灌水区
  • 楼主yu25
  • 当前回复12
  • 已保存回复13
  • 发布时间2024/8/21 12:59
  • 上次更新2024/8/21 13:49:56
查看原帖
三子棋
1400707
yu25楼主2024/8/21 12:59

闲话少说,先上代码:

CODE

#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-- 即可.

2024/8/21 12:59
加载中...