В моето приложение (което е игра за 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 обект не се разпознава? Защо е това? Ако все пак просто го напиша (case hero.HITBIRD), получавам тази грешка:
case изразите трябва да бъдат постоянни изрази
Очевидно, за четливост бих предпочел да използвам имената на променливите, които съм задал, вместо необработените числени стойности......