cocos2d-x 3.3 之黑白棋设计 NO.2 搜索

cocos2d-x 3.3 之黑白棋设计 NO.2 搜索,第1张

概述网上存在很多黑白棋的算法,但是最好自己先做然后再去看别人的. 一:玩家 *** 作 根据玩家点击的屏幕坐标转换为棋盘坐标: Point Game::locationcon(int col,int row){ Point point; point.x=(int)(col-50)/60; point.y=(int)(row-50)/60; return point;} 返回的参数是一个Point,

网上存在很多黑白棋的算法,但是最好自己先做然后再去看别人的.

一:玩家 *** 作

根据玩家点击的屏幕坐标转换为棋盘坐标:

Point Game::locationcon(int col,int row){	Point point;	point.x=(int)(col-50)/60;	point.y=(int)(row-50)/60;	return point;}

返回的参数是一个Point,这样更方便,但是需要强制转换成int型


二:开始搜索

根据这个棋盘坐标开始向八个方向寻找是否能下:set_Could(int turn,int dian_col,int dian_row)

以下是其中一小段代码:

	if(set_serch(turn,23,dian_col,dian_row))	{		chess[dian_col][dian_row]->shang=1;		flag=1;	}


三:单向搜索
serch函数的定义是set_serch(int turn,int dir,int col,int row)

这个函数的作用是根据dir来单向搜索:int dir;//23-上 21-下 12-左 32-右 13-上左 33-上右 11-下左 31-下右

//十位代表x轴,个位代表y轴,最后-2代表+1或者-1

int x,y;//方向变量
x=dir/10-2;
y=dir%10-2;

这样三步就能根据dir来计算出是向上或向右寻找

四:具体搜索步骤

	for(;		i<=9 && i>=0 && j<=9 && j>=0;		i+=x,j+=y)	{		if(chess[i][j]->qi_type == turn*(-1))		{			int ii=i+x;			int jj=j+y;			for(;				ii<=9 && ii>=0 && jj<=9 && jj>=0;				ii+=x,jj+=y)			{				if(chess[ii][jj]->qi_type == turn)				{					return true;				}				if(chess[ii][jj]->qi_type == 0)				{					return false;				}			}			return false;		}		if(chess[i][j]->qi_type == turn )		{			return false;		}		if(chess[i][j]->qi_type == 0)		{			return false;		}	}
在这之前需要先判断此次搜索是否刚开始就出界.

之后的绘图搜索,AI搜索都是以这个为基础而改进的

总结

以上是内存溢出为你收集整理的cocos2d-x 3.3 之黑白棋设计 NO.2 搜索全部内容,希望文章能够帮你解决cocos2d-x 3.3 之黑白棋设计 NO.2 搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存