J2ME平臺A-RPG遊戲怪物尋路演算法初探
最近似乎在手機上A-RPG遊戲很受歡迎,當然,我最近也在幫公司寫一款A-RPG類的遊戲。以前從沒寫過這樣的遊戲,從有到無的寫出來了。也碰到不少問題,包括螢幕滾動時地圖title陣列索引的校驗、整個遊戲框架的搭建、地圖資料的處理、分層的處理、主角技能的處理、碰狀檢測。
這些問題有空我會做為小專題一個一個的寫出來,這個話題裡我們來一起討論下A-RPG遊戲裡怪物尋路演算法的確定。
很顯然,在手機這樣的裝置上,A*演算法不適合。因為A*中大量的節點會把手機記憶體爆掉,這個是我直觀的感覺,沒親自去實踐,如果有人能在手機上精確的實現了A*演算法的話,請告訴我一聲。
那麼,在J2ME裡該如何處理怪物尋路演算法呢?
我在這個遊戲裡用的是A*演算法的簡化版本,暫時稱其為A* Simple演算法。
我們可以建立一個怪物的類,這個類裡包括不同版本的怪物、相應的圖片、相應的尋路演算法、相應的攻擊技能、相應的碰撞檢測等。如果不建立這個類的話,實在很難想象這個遊戲到後期如何擴充套件。
那麼我們就可以在這個類裡面做如下的判斷:
if(!walking){
if(spriteX < theRoleX&&spriteY > theRoleY)
{
direction = 3;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(spriteX < theRoleX&&spriteY < theRoleY)
{
direction = 2;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(spriteY < theRoleY&&spriteX > theRoleX)
{
direction = 0;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(spriteY > theRoleY&&spriteX > theRoleX)
{
direction = 1;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(theRoleX-spriteX > 8+spriteWidth&&spriteY == theRoleY)
{
direction = 2;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(theRoleX-spriteX <= 8+spriteWidth&&spriteY == theRoleY&&theRoleX-spriteX>0)
{
spriteX = theRoleX - 8 - spriteWidth;
attackFlash(g,2);
}else if(spriteX-theRoleX > 8+spriteWidth&&spriteY == theRoleY)
{
direction = 1;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(spriteX-theRoleX <= 8+spriteWidth&&spriteY == theRoleY&&spriteX>theRoleX)
{
spriteX = theRoleX+8+spriteWidth;
attackFlash(g,1);
}
else if(spriteY-theRoleY > spriteHeight&&spriteX == theRoleX)
{
direction = 3;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(spriteY-theRoleY <= spriteHeight&&spriteX == theRoleX&&spriteY-theRoleY > 0)
{
spriteY = theRoleY+spriteHeight;
attackFlash(g,3);
}else if(theRoleY-spriteY > height&&spriteX == theRoleX)
{
direction = 0;
walking = true;
drawByDirection(g,spriteImage,spriteX,spriteY,direction*3);
}else if(theRoleY-spriteY <= height&&spriteX == theRoleX)
{
spriteY = theRoleY-height;
attackFlash(g,0);
}
在這個尋路演算法中,怪物類會先判斷“權值”,即橫向和豎向到目標地的距離的大小。
然後根據“權值”做出相應的動作。
比如,怪物如果在主角的左下方,那麼它會先逼近主角的正下方,然後從下方逼近主角。
當然,這個演算法可以寫的更精確寫,那要以犧牲效能為代價了。
如何在精確和效能上做出平衡,也是我所要尋找的。
歡迎有類似經驗的同行一起討論。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=744476
相關文章
- J2ME平臺A-RPG遊戲地圖資料處理遊戲地圖
- 遊戲尋路中 A* 演算法的改進遊戲演算法
- 遊戲AI尋路——八叉樹+A*尋路遊戲AI
- 尋路之 A* 搜尋演算法演算法
- 跨平臺開發框架 Lynx 初探框架
- Java 9 平臺模組系統初探Java
- 初探富文字之搜尋替換演算法演算法
- 演算法:塔防遊戲中的路徑尋找演算法遊戲
- 一種高效的尋路演算法 - B*尋路演算法演算法
- 塗鴉智慧物聯網平臺初探
- 演算法修養--A*尋路演算法演算法
- 移動裝置的應用開發平臺――J2ME(原)
- 海南網路遊戲智慧稽核監管平臺正式授牌遊戲
- 尋路演算法之A*演算法詳解演算法
- 用Elasticsearch構建電商搜尋平臺Elasticsearch
- 搜狗搜尋推廣平臺下線
- GOG打造PC玩家遊戲聚合平臺 囊括所有平臺及主機遊戲Go遊戲
- 關於尋路演算法的一些思考(11):尋路演算法的其他應用演算法
- 直播平臺開發,基礎搜尋方式之拼音搜尋
- kmp字串匹配,A星尋路演算法KMP字串匹配演算法
- A*尋路演算法詳細解讀演算法
- 地鐵圖快速尋路演算法演算法
- 遊戲中的自動尋路-A*演算法(走斜線篇——帶DEBUG)遊戲演算法
- J2ME裡排序演算法探究排序演算法
- 巨人網路確認間接持股雲遊戲平臺海馬雲遊戲
- 手遊折扣平臺 遊戲打折扣的平臺推薦遊戲
- 尋路演算法-貪婪最佳優先演算法演算法
- PageRank演算法初探演算法
- JPS/JPS+ 尋路演算法演算法
- 大豬網網頁遊戲平臺網頁遊戲
- 在 Pygame 遊戲中放置平臺GAM遊戲
- 遊戲平臺採集資料遊戲
- 一站式機器學習平臺Deepthought的建設與初探機器學習
- 《怪物獵人:世界》將於2018年1月26日登陸Xbox One平臺
- 關於尋路演算法的一些思考(9):尋路者的移動成本演算法
- 演算法初探--遞迴演算法演算法遞迴
- 十大變態遊戲平臺排行榜 玩變態遊戲哪個平臺好遊戲
- Unity實現A*尋路演算法學習2.0Unity演算法