極客戰記沙漠關卡雙間隙代碼問題
// 把英雄和農民帶到南方。
// 這個函數沿著中心線移動你的英雄。
function moveDownCenter() {
var x = 40;
var y = hero.pos.y - 12;
hero.moveXY(x, y);
}
// 該函數在東西右側建立一道圍欄。
function buildRightOf(something) {
// 建立一個在其右側的「圍欄」,以達到正確的目標。
hero.buildXY("fence", something.pos.x + 20, something.pos.y);
}
// 該函數在東西左側建立了一道圍欄。
function buildLeftOf(something) {
// 建一個20米左右的「圍欄」。
hero.buildXY("fence", something.pos.x - 20,something.pos.y);
}
while(true) {
var ogre = hero.findNearestEnemy();
var coin = hero.findNearestItem();
if (ogre) {
buildLeftOf(ogre);
}
if (coin) {
buildRightOf(coin);
}
moveDownCenter();
}
這一段代碼的整個意思是讓英雄帶著農民到最底下的紅色的叉號的位置,最上面的紫色圈裡面就是英雄和農民,剩下的紫色圈裡面是金幣(「coin」)。
moveDownCenter()這個函數就是讓英雄每次都往下走向紫色叉號的位置。剩下的代碼都有注釋就不用多說了。還有要說的就是必須在金幣(「coin)的右側建造圍欄(「fence」),否則農民就會去採集會把炸死,因為金幣(「coin」)是個陷阱。從上往下在第二個和第四個紫色叉號出的右側會出現食人魔(「ogre」),buildLeftOf(ogre)函數就會讓英雄在食人魔(「ogre」)左側建造圍欄(「fence」)來阻擋住食人魔(「ogre」)。
當我運行這段代碼的時候卻出現了一個問題當英雄向下走到第二個紫色叉號處的右側並建造圍欄之後他並沒有往下走了,而是不停地在第一個紫色叉號和第二個紫色叉號來回往返而且在紫色叉號的左側建造圍欄。
我想了一段時間,代碼錯誤的運行結果不是這個樣子的,而是英雄不會移動到第二個紫色叉號處,就是一直停留在第一個紫色叉號處不停地建造圍欄!所以我到現在還沒搞懂代碼究竟錯在什麼地方了!
2018年5月25日16:40:55
我再添加一個代碼運行的視頻。
https://www.zhihu.com/video/983386948353925120英雄一直在第一個和第二個口子出徘徊。
推薦閱讀:
※怎麼評價我和她的世界末日?
※新一波參考素材來襲,酷炫生物角色原畫作品欣賞
※MSA後台登錄、註冊、充值、激活賬戶、購買遊戲豆整套完整教程(MSA財富俱樂部專用)
※飢餓鯊世界遊戲攻略是什麼?
※射鵰英雄傳3D手游體力如何合理利用?
TAG:遊戲 |