В моем приложении (которое является игрой для Android) у меня есть метод, который проверяет, жив ли игрок, и если нет, запускает анимацию, и игра заканчивается.
В настоящее время доступно 3 различных анимации в зависимости от того, как игрок проигрывает.
Так, например, они могут упасть с экрана, ударить птицу или раздавиться чем-то, упавшим с неба. У каждого своя анимация.
В основном, что я делаю, так это:
Когда игрок проигрывает, я задаю метод, по которому это произошло, например, если его сбила птица:
hero.setKilledBy(hero.HITBIRD);
Затем я действую, переключаясь в моем методе checkGameOver(). Однако я в замешательстве. Я должен проверить это так: (Обратите внимание, в моих случаях я должен поставить 0, 1, 2):
switch(hero.killedBy()){
case 0: {
fallOffScreenAnimation();break;
}
case 1: {
hitBirdAnimation();break;
}
case 2: {
squashedAnimation();
}
}
в классе моего объекта-героя у меня есть следующие методы
int killedBy;
final int FELLOFFSCREEN = 0;
final int HITBIRD = 1;
final int SQUASHED = 2;
int killedBy(){
return killedBy;
}
int setKilledBy(int value){
killedBy = value;
}
Итак, мой вопрос: почему я не могу сделать что-то вроде этого:
switch(hero.killedBy()){
case hero.HITBIRD {
fallOffScreenAnimation();break;
}
//............... and so on.......
В операторе switch мой объект hero не распознается? Почему это? Если я все равно наберу его (случай hero.HIITBIRD), я получу эту ошибку:
case выражения должны быть постоянными выражениями
Очевидно, для удобочитаемости я бы предпочел использовать имена переменных, которые я установил, а не необработанные числовые значения......