LÖSUNG AUFGABE 4.01 bis 4.09
public class MyKara extends KaraSokoban {
int counter = 0;
public void act() {
String key = getKey();
if (key.equals("right")) {
setDirectionRight();
tryToMove();
}
if (key.equals("down")) {
setDirectionDown();
tryToMove();
}
if (key.equals("left")) {
setDirectionLeft();
tryToMove();
}
if (key.equals("up")) {
setDirectionUp();
tryToMove();
}
}
/**
* Kara macht einen Schritt. Diese Methode schaut zuerst, ob sich Kara
* bewegen kann oder ob er zuerst noch einen Pilz schieben muss.
*/
public void tryToMove() {
if (!treeFront()) {
if (mushroomFront()) {
if (canPushMushroom()) {
move();
counter++;
setNumberOfMoves(counter);
}
} else {
move();
counter++;
setNumberOfMoves(counter);
}
if (testLevelComplete()) {
saveHighscore();
levelComplete();
}
}
}
/**
* Diese Methode behandelt das Speichern der Highscore.
*/
public void saveHighscore() {
// Testen, ob in den Top 3.
if (isHighscoreTop3(counter)) {
// Ist in Top 3 --> Hinzufügen zur Highscore.
addHighscoreEntry(counter);
}
}
}