Kapitel 4: Sokoban Spiel

Lösungen

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);
		}
	}
}