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

前端之家收集整理的这篇文章主要介绍了cocos2d-x 3.3 之黑白棋设计 NO.2 搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

一:玩家操作

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

  1. Point Game::locationcon(int col,int row)
  2. {
  3. Point point;
  4. point.x=(int)(col-50)/60;
  5. point.y=(int)(row-50)/60;
  6. return point;
  7. }

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


二:开始搜索

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

以下是其中一小段代码:

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


三:单向搜索
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来计算出是向上或向右寻找

四:具体搜索步骤

  1. for(;
  2. i<=9 && i>=0 && j<=9 && j>=0;
  3. i+=x,j+=y)
  4. {
  5. if(chess[i][j]->qi_type == turn*(-1))
  6. {
  7. int ii=i+x;
  8. int jj=j+y;
  9. for(;
  10. ii<=9 && ii>=0 && jj<=9 && jj>=0;
  11. ii+=x,jj+=y)
  12. {
  13. if(chess[ii][jj]->qi_type == turn)
  14. {
  15. return true;
  16. }
  17. if(chess[ii][jj]->qi_type == 0)
  18. {
  19. return false;
  20. }
  21. }
  22. return false;
  23. }
  24. if(chess[i][j]->qi_type == turn )
  25. {
  26. return false;
  27. }
  28. if(chess[i][j]->qi_type == 0)
  29. {
  30. return false;
  31. }
  32. }
在这之前需要先判断此次搜索是否刚开始就出界.

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

猜你在找的Cocos2d-x相关文章