【C语言】三子棋(详解+文末附全代码)

本文详细介绍了如何使用C语言实现三子棋游戏,包括创建菜单、建立棋盘、绘制棋盘、玩家和电脑落子、判断胜负以及游戏重置的流程。代码分为game.h、game.c和Main.c三个部分,适合初学者学习。
摘要由CSDN通过智能技术生成

【C语言】三子棋(详解+文末附全代码)

一.思想实现

三子棋又名井字棋,游玩方式就是在一个’井’字里画’X’或者’O’,直到出现下列三种情况则出现赢家:

1.三个’X’ 或 ‘O’ 在同一行;
2.三个’X’ 或 ‘O’ 在同一列;
3.三个’X’ 或 ‘O’ 在同一对角线;

在这里插入图片描述

那我们用C语言实现这个游戏,则需要经历下面的流程:

1.创建一个菜单界面可供玩家选择
2.创建棋盘
3.绘制棋盘
4.玩家落子
5.电脑落子
6.判断谁赢了游戏
7.返回空棋盘重新开始游戏

二.代码详解

1.创建一个菜单界面可供玩家选择

用switch()函数实现玩家的选择

void menu()//输出菜单界面
{
   
	printf("******************\n");
	printf("******0.exit******\n");
	printf("******1.play******\n");
	printf("******************\n");
}
int main()
{
   
	int input = 0;
	menu();//引入菜单栏  
	printf("请输入你的操作:\n");
	scanf("%d", &input);
	do
	{
   
		switch (input)//玩家进行选择是否玩游戏 
		{
   
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			break;
		}
	} while (input);
	system("pause");
	return 0;
}

2.创建棋盘

用一个二维数组实现棋盘的存放

void InitBoard(char board[][COL], int row, int col)
{
   
	for (int i = 0; i < row; i++)
	{
   
		for (int j = 0; j < col; j++)
		{
   
			board[i][j] = ' ';//在数组中填满空格
		}
	}
}

3.绘制棋盘

棋盘具体是什么样子呢?
在这里插入图片描述
这样看不够详细,来一行一行看:
第一行:
在这里插入图片描述
只有三组三个“空格”和两条“|”组成
第二行:
在这里插入图片描述
由三组三个“-”和两条“|”组成
第三、四行和第一二行一样
第五行则再次重复第一行
所有第一行的组成格式要输出三次,第二行的组成格式要输出两次
最终组成一个完整的棋盘

void ShowBoard(char board[][COL], int row, int col)//画棋盘
{
   
	printf("****************************\n");
	for (int i = 0; i < row; i++)
	{
   
		for (int j = 0; j < col; j++)
		{
   
			printf(" %c ", board[i][j]);//打印空格
			if (j < col - 1)
			{
   
				printf("|");//打印竖线
			}
		}
		printf("\n");
		//--- 控制行数
		if (i < row - 1)
		{
   
			//循环控制---的列数
			for (int j = 0; j < col; j++)
			{
   
				printf("---");
				if (j < col - 1)
				{
   
					printf("|");
				}
			}
			printf("\n");
		}
	}
	printf("****************************\n");
}

4.玩家落子

让玩家输入落子的坐标,然后判断此处是否落过棋子,若没落过,则放入‘X’。(自己改为’O’也可)

void PlayerMove(char board[][COL], int row, int col)//玩家放棋子
{
   
	int x = 0;
	int y = 0;
	while (1)
	{
   
		printf("请输入你的1-3坐标:\n");
		scanf("%d%d", &x, &y);//1 3 --> 0  2
		if (x >= 1 && x <= 3 && y >= 1 && y <= 3)
		{
   
			if (board[x - 1][y - 1] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值