cocos2d-x 3.3 之黑白棋设计 NO.2 搜索
发布时间:2020-12-14 21:04:12 所属栏目:百科 来源:网络整理
导读:网上存在很多黑白棋的算法,但是最好自己先做然后再去看别人的. 一:玩家操作 根据玩家点击的屏幕坐标转换为棋盘坐标: Point Game::locationcon(int col,int row){Point point;point.x=(int)(col-50)/60;point.y=(int)(row-50)/60;return 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;//方向变量 这样三步就能根据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搜索都是以这个为基础而改进的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |