[投稿] mazebot core code已刪文
這是mazebot的核心部分
kulic有硬解mazemap的code
但是仍然有人在自己寫其他模式的mazebot的時候遇到一些問題
先解說核心概念
1. 當前座標 pos.x, pos.y
2. 移動
#var dir 1
1-north
2-east
3-south
4-west
#AL move
{
#case @dir {north} {east} {south} {west};
}
2. 更改方向的ALIAS
#AL cdircw //change direction clockwise
{
#if (@dir>3) {#math dir 1} {#add dir 1}
}
#AL cdirccw //change direction counter clockwise
{
#if (@dir=1) {#math dir 4} {#add dir -1}
}
3. 移動讀取當格座標 XXXX{(}%1,%2{)}
#TR {XXXX{(}%1,%2{)}}
{
#if (@pos.x=%1 && @pos.y=%2) {cdirccw} {
#math pos.x %1;
#math pos.y %2;
cdircw};
#ALA +1 {#if !@fight move}
}
核心概念就是,移動了之後座標沒變=移動失敗,移動方向逆時針修正
移動了之後座標有改=移動成功,移動方向順時針修正(同時更新座標)
4. (如果進入一格是依序下k)確認是否清空(可以移動)
#AL checkmob
{
cdircw;
look
}//因為要look,look的結果等於無移動->座標不會動,其結果會導致cdirccw
//所以要先cdircw來補償
5. 有人提到有些maze的結構會導致直接繞外側到出口
因為maze的出口座標會跟前一格顯示相同,會cdirccw一次
如果要回maze內(第一次遇到出口),那就cdirccw再一次
如果要離開maze(第二次遇到出口),那就cdircw一次
所以
在進入maze前先設定
#math wayout 0;
#TR {出口}
{
#add wayout 1;
#if (@wayout<2) {cdirccw} {cdircw}
}
這樣的話如果第二次遇到出口,一秒後沒有進入戰鬥,就會離開maze
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.191.211 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/mud_jy/M.1687242836.A.E69.html
※ 編輯: deathcustom (211.23.191.211 臺灣), 06/20/2023 14:49:19
mud_jy 近期熱門文章
PTT遊戲區 即時熱門文章