【C语言】三子棋智能版(初学者必看)

人工智能三子棋-人机对弈-人人对弈,谁会是最终赢家? 阅读详情

三子棋智能版(初学者必看)

代码思路:

1.先创建一个二维数组,用来存放棋子,将行和列定义成宏,方便修改;
2.初始化数组,使这个数组里全为空格;
3.打印棋盘;
4.玩家下棋(需要判断玩家下棋位置的合法性);
5.电脑下棋(智能堵截玩家);
6.判断输赢(包括行,列,对角线);

菜单展示

1、首先是菜单打印,1是选择玩游戏,0是退出程序。

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

2、菜单打印完成后,用do while来实现多次游戏(为什么要用do while呢?—让程序一开始就执行一次菜单的打印)

void test()
{
   
   
	srand((unsigned)time(NULL));
	int input = 0;
	do
	{
   
   
		menu();
		printf("请输入您的选择>:");
		scanf("%d", &input);
		switch (input)
		{
   
   
		case 0:
			printf("退出游戏!\n");
			break;
		case 1:
			game();
			break;
		default:
			printf("输入错误,请重新输入!\n");
			break;
		}
	} while (input);
}
int main()
{
   
   
	test();
	system("pause");
	return 0;
}

以下开始是代码的主体部分

1、初始化数组,将数组的元素全部初始化成空

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

2、打印棋盘,为了让我们的棋盘不仅仅局限于3*3,所以这里用了for循环一组一组的打印

void DisplayBoard(char board[ROW][COL], int row, int col)
{
   
   
	int i = 0;
	int j = 0;
	for (i = 0; i < row; i++)
	{
   
   
		for (j = 0; j < col; j++)
		{
   
   
			printf(" %c ", board[i][j]);
			if (j < col - 1)
			{
   
   
				printf("|");
			}
		}
		printf("\n");

		if (i < row - 1)
		{
   
   
			for (j = 0; j < col; j++)
			{
   
   
				printf("---");
				if (j < col - 1)
				{
   
   
					printf("|");
				}
			}
			printf("\n");
		}
	}
}

在这里插入图片描述
3、开始玩家下棋
注意两点:
1,坐标和元素下标要区分开(要考虑非程序员玩家的感受0.0);----就是下标为0的位置玩家下时输入1
2,要检验输入的是否可用,是否在棋盘内,是否已经被占用。

void PlayerMove(char board[ROW][COL], int row, int col)
{
   
   
	int x = 0;
	int y = 0;
	printf("玩家走\n");
	while (1)
	{
   
   
		printf("请输入要走的坐标>:");
		scanf
【C语言】实现三子棋(详解) 大家好,我是Abert 今天我们用C语言来实现三子棋 文章目录 1.配置运行环境 2.实现各种功能并处理逻辑关系 2.1 创建游戏初始界面(进入\退出) 2.2 创建一个头文件game.h放入整个程序中需要的头文件 2.3创建一个game.c源文件并配置游戏实现的功能 2.4 创建整体实现部分test.c并处理运行逻辑 2.5 对以上各项进行完善 3.游戏创建思路 3.1 搭建棋... 阅读详情

相关推荐

【C语言五子棋、三子棋人机对战篇的详细介绍】

【C语言实现五子棋、三子棋人机对战,包含电脑人工智能对战(可攻可守)】(非标题党)内容有点繁杂,大家可以按照目录,依据个人需要查阅内容。在写这篇详细介绍的同时,我也发现了一些漏洞,本篇改动地地方在:①判断游戏输赢board_wolf( ) ②电脑智能下棋系统(包含计分)computer_calc( )中对八个方向进行扫描//八个方向进行扫描,改动了为了,if (y == 0 && x!然后将代码间的写了注释,基本恨不得每句都介绍了,希望对大家有所帮助。...

qq_64318258的博客 4210

【C语言实现五子棋、三子棋人机对战,包含电脑人工智能对战(可攻可守)】(非标题党)

C语言实现的五子棋、三子棋人机对战(通用),包含人工智能,电脑智能应对可攻可守,棋盘大小,游戏规则自由。

qq_64318258的博客 4047

用c语言写一个简单的三子棋(井字棋)

emmmm…大致就是这个效果 目录 目录 1.所需的知识 2.总体思路 3.详细实现 打印菜单 执行菜单 游戏主体 棋盘打印 玩家下棋 判断输赢 电脑下棋(核心) 判断盘满 3.效果演示 1.所需的知识 c语言基本语法,二维数组。 2.总体思路 将三子棋看作3x3的一个二维数组,由玩家和电脑分别填充这个数组。当行、列、叉能够达到三连时,就判...

H_Strong的博客 6756

【C语言】三子棋(智能下棋 + 阻拦玩家)

图文讲解实现三子棋 + 电脑智能下棋 + 堵棋

StackFrame 2346

Marin说PCB之LPDDR5的布线注意事项--03

这个规则中是把每个字节中的WCK to RDQS 以及DM / DQ to WCK等长规则都加到了DM / DQ这个等长规则中去了,因为芯片手册上的设计要求中的DM / DQ这个group的等长误差是+-50MIL, WCK to RDQS的等长group的规则是62.5MIL,DM / DQ to WCK等长group的规则是相对松一些是150MIL。其实上面的等长规则还是建少了一些的,例如手册上要求的每个channel的WCK0:1,WCK2:3等长误差在+-488MIL,这个规则建议还是补上去吧。

weixin_45223454的博客 1229

别再折腾框架了!用华为应用市场官方渠道搞定GBOX,安全安装谷歌全家桶(鸿蒙HarmonyOS 3/4实测)

本文详细介绍了如何在鸿蒙系统上通过华为应用市场官方渠道安全安装GBOX,实现谷歌全家桶的无损使用。该方法避免了传统破解方式的安全风险,利用沙箱技术隔离运行环境,确保系统稳定性和数据安全。特别适合鸿蒙HarmonyOS 3/4用户安全使用谷歌生态应用。

weixin_29305313的博客 4776

SecureCRT多种配色方案配置文件

位置 C:\Users%USERNAME%\AppData\Roaming\VanDyke\Config\Global.ini S:"SecureCRT Tab State"=1,1,1,0,0 S:"SecureFX Local Tab State"=1,-1,200 D:"Max Chat Window History"=000000c8 D:"Active Window Alpha Transparency"=000000f0 D:"Save Keymaps As Unicode"=00000000

神棍之路 3708

YOLO11涨点优化:损失函数优化 | 引入MPDIoU,利用边界框左上角和右下角距离,彻底解决重叠框匹配失效问题

【摘要】针对目标检测中重叠框匹配失效问题,本文提出基于MPDIoU损失函数的解决方案。MPDIoU通过同时约束边界框的左上角和右下角两点距离,有效解决了传统IoU损失在重叠场景下的优化歧义问题。文章首先分析YOLO系列在密集目标检测中的性能瓶颈,指出GIoU/CIoU等现有方法无法区分相同IoU值但偏移方向不同的预测框。随后详细解析MPDIoU的数学原理及其相对于主流损失函数的优势,证明两点距离约束能提供唯一优化方向。最后给出在YOLO11中实现MPDIoU的具体方案,包括核心代码修改点和架构适配建议。实验

2601_95807009的博客 172

SAP NetWeaver Business Client (NWBC) 的深入解析

SAP NetWeaver Business Client(NWBC)作为 SAP 提供的一种用户界面,旨在为终端用户提供无缝集成传统 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序的体验。SAP NetWeaver Business Client(NWBC)是 SAP 推出的用户界面,旨在为终端用户提供单一入口,集成传统的 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序。在实际业务场景中,NWBC 的应用提升了用户的工作效率和体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1605

三模冗余、纠错编码、单粒子翻转防护

本文探讨了高可靠性FPGA系统设计的三大关键技术:三模冗余(TMR)、纠错编码(ECC)和单粒子翻转(SEU)防护。TMR通过三个并行模块和表决器实现容错,但会增加硬件资源和功耗;ECC利用汉明码等编码方式检测和纠正数据错误,适用于存储器保护;SEU防护则针对高能粒子引发的位翻转问题,采用配置刷新、TMR和ECC等方法。文章还通过Verilog代码示例展示了这些技术的实现,并提出了一个综合应用案例,结合三种技术构建高可靠性控制系统。这些技术在航空航天、医疗设备等关键领域具有重要应用价值。

2301_79143213的博客 715

STM32芯片解锁读写保护:更改Option Byte [Error已解决]

解锁读保护:STLink更改Option Byte 变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1) 默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 RDP读保护级别 级别0,无保护, 级别1,使能读保护, 这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止); 当芯片处于级别1的时候,可以把选项字节

HowieXue 薛永浩的博客 2万+

【NIPS 2022】时序精选论文07|Non-stationary Transformers: 引入非平稳性信息的平稳化序列预测模型(代码解读附源码)

整体代码框架基本上与传统 Transformer 类似,基本上只有在内嵌的注意力机制模块有区别,因此这里只对关键部分进行讲解,代码整体框架可参考 Transformer。非平稳时序很难预测,尤其对模型泛化性影响很大,试想下推理阶段的数据分布变了,模型很难适应这种变化。,比如很早以前的差分就是一种平稳化操作。序列平稳化能增强数据的可预测性,但这时也会带来一个问题,叫。,通过MLP层进行定义,使得参数可学习,以便于更好的融合到注意力网络中。代码中整体注意力的计算方式与原生Transformer类似,

ViolenceTemper的博客 1493

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 初入编程!
下一篇: 【C语言】扫雷高级版:可进行展开
信手斩龙
博客等级 码龄8年 13粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值