可根據地形的不同,以及角色能力的不同來判斷可移動區域。例如騎士在平地上可以移動更大的範圍。
**如下:
/*** 搜尋可走區域
* @param map 當前地圖表
* @param row 行
* @param col 列
* @param locomotivity 該角色的預設移動力
* @param direction 方向
*/public void scanmovablearea(byte map, int row, int col, int locomotivity, int direction)
/** 向下判斷 **/
if(direction != 2)
/** 向左判斷 **/
if(direction != 4)
/** 向右判斷 **/
if(direction != 8)
}/**
* 地形對移動力的消耗
* @param row 行
* @param col 列
* @return 移動力消耗值
*/public int mapexpendlocomotivity(int row, int col)
}//超出邊界
if(row < 0 || col < 0 || row > gamewidth || col > gameheight)
return 1000;
//具體的情況各位朋友可以根據自己的遊戲來設計。
找到可以移動的區域後,就可以確定要移動的具體位置。這時候又要涉及到找路演算法了。對於與a*演算法(以前有一位同事寫過)。不過下次我會用遞迴演算法來實現,速度更快,更簡單。
差點忘記說明了以上得到的map陣列怎麼使用。這時乙個記錄了剩餘移動力的陣列。在顯示可移動的區域的時候只要判斷map裡面的值是否為空,不為空就畫出乙個矩形,代表該區域可走。
int max = math.max(math.max((int)byte0, (int)byte1), math.max((int)byte2, (int)byte3));
if(max == byte0)
vector = scanpath(curx, cury, destx, desty - 1);
else
if(max == byte1)
vector = scanpath(curx, cury, destx, desty + 1);
else
if(max == byte2)
vector = scanpath(curx, cury, destx - 1, desty);
else
if(max == byte3)
vector = scanpath(curx, cury, destx + 1, desty);
vector.addelement((object)dest);
return vector;
}還有兩個陌生的變數就是 _map_height和_map_width ,這個很簡單了,就是slg地圖中的長度和寬度。
呵呵,希望這些**段對slg的朋友有些幫助。
刪除二叉搜尋樹中的某個結點
刪除操作的原型為 int deletebstree pnode proot,int data 返回型別int用來表示刪除是否成功,其中pnode表示如下 typedef int datatype typedef struct bstreenode node,pnode 刪除操作的原理為 首先在二叉搜...
繼安卓後 谷歌將在移動搜尋中展示iOS應用資訊
程式設計驛站 chinaz.com 5月28日訊息程式設計客棧 近日,谷歌發布官方部落格稱,將把ios應用併入搜尋引擎結果頁中,即在未來的谷歌搜尋結果頁中會顯示相關的ios應用資訊 orfxrh注 針對ios裝置使用者 這也是谷歌繼android應用之後,在app索引上的又一大動作。據了解,未來幾天...
搜尋某個字串在那個表的那個欄位中
搜尋某個字串在那個表的那個欄位中 declare str varchar 100 set str white 要搜尋的字串 declare s varchar 8000 declare tb cursor local for select s if exists select 1 from b.na...