C++制作五子棋

本文介绍了使用C++编程实现简易五子棋人机对战的思路和方法。作者通过分析棋盘状态,计算不同方向的棋子连接情况,以简单的计分规则决定落子策略。虽然没有涉及复杂的棋型匹配,但提供了基本的进攻和防守评分,实现了基本的人机对战功能。
摘要由CSDN通过智能技术生成

正文

01

思路

我没有选择专业的五子棋棋型,用我自己的逻辑(初高中玩五子棋的方法),去实现简单的人机对战。

首先因为要计算五子棋每一步的分数,那么你就要分析每一步形成的棋盘,以下图为例:

当你即将在红色方框区域内落子时,通过数据处理获取四个方向的棋子存储在数组里面,然后就是分析这个数组属于那种棋型。


以横向为例:

row相当于上图红色矩形区域的行坐标

col 相当于上图红色矩形区域的列坐标

player是这个位置即将落子的颜色,-1黑子    1 白子

int Game_score(int row, int col, int player)	//player = -1黑子	player = 1 白子
{

	char arr[4][9] = { 0 };	//存放四个方向的棋子
	int grade[4];			//存放四个方向的总分
	int begin = 0, end = 0;
	/*========左右========*/
	//从Map[row][col]处往左找四个棋子,遇到边界结束得到左边落子数量
	//从Map[row][col]处往右找四个棋子,遇到边界结束得到右边落子数量
	for (int index = 1; index <= 4; index++)
	{
		//往左找
		if (col - index >= 0)
		{
			begin = index;
		}
		//往右找
		if (col + index < 15)
		{
			end = index;
		}
	}
	for (int temp = 0, index = col - begin; index <= col + end; index++, temp++)
	{
		arr[0][temp] = Map[row][index];	//将Map[row][col]附近九个位置的棋子放入到arr里面分析
	}
	arr[0][begin] = player;			//将预测的落子位置由0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值