Im в настоящее время кодирует змею игры. И чтобы быть коротким, у меня возникла проблема относительно if-утверждения. Часть, которая дает мне проблемы, - это метод проверки, или змея сталкивается с самим собой.Если инструкция не работает должным образом
если заявление выглядит следующим образом:
public void checkCol(){
for(int i = 0; i < snake.getLength(); i++){
if((snake.getXPosArray()[snake.getLength() - 1] == snake.getXPosArray()[i])
&& (snake.getYPosArray()[snake.getLength() - 1] == snake.getYPosArray()[i])){
gameOver();
}
}
}
медведь со мной на стене текста здесь. То, что я пытаюсь сказать с помощью этого кода: Если голова змеи имеет те же координаты, что и любая другая часть тела змей, ее гейвер.
Первоначально длина змей равна 3 и управляется массивом координат. Таким образом, первый раунд в цикле будет проверять, если:
xPos[2] == xPos[0] and the same with yPos[2] == yPos[0]
xPos[2] = 88 , xPos[0] = 66 , yPos[2] = 55 , yPos[0] = 55.
змея останавливает immidiately, когда я запустить программу. Wierd, потому что я проверил значения, которые получит метод. Значения, показанные выше, являются значениями, которые проверяет инструкция my if. Теперь я считаю, что 88 и 66 не равны друг другу.
Я оглянулся на форуме для лучшего объяснения оператора & &, а после сказал мне, что & & только проверяет оба утверждения, если первое верно. И один & будет проверять, являются ли оба аргумента истинными. Но я получил тот же результат с & и & &.
Могу ли я пропустить что-то глупое здесь? я устал? Можете ли вы увидеть что-то не так с этим заявлением? И скажите мне, почему он думает 88 == 66?
Спасибо за ваше время!
Вы пробовали распечатать значения внутри 'if'? – Christian
Ваша идея хорошая, но вы не должны сравнивать голову с собой. – Ingo
Я добавил -1 к длине массива. Теперь это работает как шарм. Огромное спасибо! должен лечь спать сейчас ..: D примет ответ, когда предел 5minute закончен. – Surangie