上周跟大家分享了Cocos2d-x跳棋制作如何建立工程和界面编写,今天来 跟大家分享一下如何实现棋子相关动作及AI思想。
在跳棋中棋子有两种动作:移动、跳跃。
在工程建立时我们便为棋子建立了类Chess,我们只需要在类中声明相应的动作方法并在方法中 对动作进行封装即可。
棋子移动动作比较简单,在2d-x中有相应的Action实现。代码如下:
<span style="font-size:14px;">/****************
函数名:moveto
参数:x(移动目标的x坐标) y(移动目标的y坐标)
返回值:无
作用:将棋子移动到指定坐标
****************/
MoveTo* Chess::moveto(int x,int y)
{
this->x = x; //将x坐标存到Chess.x中
this->y = y; //将y坐标存到Chess.y中
ActionInterval *moveto = MoveTo::create(0.3,Point(332+x*tmp,166 + 44.5*y*(sqrt(3)/2))); //定义MoveTo对象设置移动动作
return moveto;
}</span>
在移动方法实现中我们用到MoveTo来实现棋子的移动动作,并且在移动完成后将Chess的坐标 x、y更改。
MoveTo中第一个参数表示动作完成时间,第二个参数为移动目标位置坐标。
棋子跳跃动作的实现比较麻烦,我们先把跳跃动作分成两个部分,第一部分是棋子的跳起及落 下,第二部分是棋子移动到指定位置,这两部分是同时进行的,在这里我们用的Spawn对象,Spawn是 组合动作中的一种,它的参数中是动作对象表示参数中的动作对象时同时执行的。其次第一部分棋子跳 起和落下