三子棋

本文分享了一款由作者独立开发的三子棋游戏代码。使用C++语言,通过Windows API和标准输入输出库实现。游戏支持两名玩家交替下棋,棋盘采用3x3格布局,具备基本的输入验证和胜利条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我个人做的三子棋。(真的自己做的)
希望大家能接受。

#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;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值