栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现小游戏【三子棋】注释详细 逻辑清晰 快来看看吧!!

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现小游戏【三子棋】注释详细 逻辑清晰 快来看看吧!!

三子棋_c语言实现

文章目录
  • 三子棋_c语言实现
  • 详细步骤
  • 一、game.h(头文件)
  • 二、game.c(游戏源文件)
  • 三、test.c(测试源文件)
  • 四、效果展示!
  • 总结


详细步骤 一、game.h(头文件)
#include 
#include 
#include 

#define ROW 3 //用define定义的棋盘行列大小  是因为方便后续扩大棋盘
#define COL 3

void initboard (char board[ROW][COL], int row, int col );//初始化棋盘
void displayboard (char board[ROW][COL], int row, int col );//打印棋盘
void playermove(char board[ROW][COL], int row, int col);//玩家下棋
void computermove(char board[ROW][COL], int row, int col);//电脑下棋

char is_win(char board[ROW][COL], int row, int col);//判断输赢或平局
二、game.c(游戏源文件)

代码如下(示例):

#include "game.h"


void initboard(char board[ROW][COL], int row, int col) 
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			board[i][j] = ' ';
		}
	}

}
void displayboard(char board[ROW][COL], int row , int col)
{
	//两部分 一部分打印数据 一部分打印分割行
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			printf(" %c ", board[i][j]);
			if(j
			for (j = 0; j < col; j++)
			{
				printf("---");
				if(j
	int x = 0;
	int y = 0;

	while (1)
	{
		printf("请输入坐标>");
		scanf("%d %d", &x, &y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)
		{
			if (board[x - 1][y - 1] == ' ')
			{
				board[x - 1][y - 1] = '*';//别再把赋值号打错了
			}
			else
			{
				printf("该位置已被占用。n");
			}
			break;
		}
		else
		{
			printf("坐标输入错误;n");
		}
	}


}
void computermove(char board[ROW][COL], int row, int col)
{
	int x = 0;
	int y = 0;


	while (1)
	{
		x = rand() % row;//利用rand 产生随机数 之所以%row 是因为剩余的数一定在0~row之间
		y = rand() % col;

		if (board[x][y] == ' ')
		{
			board[x][y] = '#';
			break;
		}
	}

}

static int if_full(char board[ROW][COL], int row ,int col )
{
	int i = 0;
	for (i = 0; i < row; i++)
	{
		int j = 0;
		for (j = 0; j < col; j++)
		{
			if (board[i][j] == ' ')
			{
				return 0;
			}
		}
	}
	return 1;
}

char is_win(char board[ROW][COL], int row, int col)
{
	//判断行
	int i = 0;
	for (i = 0; i < row; i++)
	{
		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
			return board[i][0]	;
	}
	//判断列
	 i = 0;

	for (i = 0; i < col;i++)
	{
		if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')
			return board[0][i];
	}
	//对角线
	if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ')
	{
		return board[0][0];
	}
	
	if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' ')
	{
		return board[0][2];
	}

	int m = 0;
	m = if_full(board, ROW, COL);
	if (m == 1)
	{
		return 'Q';
	}
	else
	{
		return 'c';
	}

}
三、test.c(测试源文件)
#include "game.h"

void menu()
{
	printf("*****************************n");
	printf("******** 1.play *************n");
	printf("******** 0.exit *************n");
	printf("*****************************n");

}
void game()
{

	char board[ROW][COL] = {0};
	initboard(board, ROW, COL);
	displayboard(board, ROW, COL);
	char ret = ' ';
	while (1)
	{
		playermove(board, ROW, COL);
		displayboard(board, ROW, COL);
		ret=is_win(board, ROW, COL);
		if (ret != 'c')
		{
			break;
		}

		computermove(board, ROW, COL);
		displayboard(board, ROW, COL);
		ret = is_win(board, ROW, COL);
		if (ret != 'c')
		{
			break;
		}
		
	}

	if (ret == '*')
	{
		printf("玩家获胜n");
	}
	else if (ret == '#')
	{
		printf("电脑获胜n");
	}
	else
	{
		printf("平局n");
	}


}
void test()
{

	int input = 0;
	do              //具体下棋步骤
	{
		menu();
		printf("请输入:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("现在开始三子棋>n");
			game();
			break;
		case 0:
			printf("退出n");
			break;
		default:
			printf("输入错误,请重新输入n");
			break;
		}


	} while (input);

}




int main()
{
	srand((unsigned int)time(NULL));
	test();
	return 0;
}
四、效果展示!


平局真的好难下!!!!!!下了好几局都没下出平局来 电脑太笨了

总结

这是由C语言实现的三子棋,有问题欢迎在评论区 或者 私聊我!!!

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号