s n h m r u

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

Spiel verbessern

Neue Ausreisser

Bisher wird das Spielfeld immer leerer. Spannender wird es, wenn während des Spiels neue Tiere ausbüxen. Dafür ergänzen wir die Methode act des Spielfelds - hier sind zwei Vorschläge:

// Vorschlag 1
if((1..50).random() == 1) {
    addObject(Ausreisser(), 300, 200)
}
// Vorschlag 2
if(schritte % 50 == 0) {
    addObject(Ausreisser(), 300, 200)
}

(1..50).random() würfelt eine Zufallszahl von 1 bis 50. Der Operator % (sprich: modulo) liefert den Rest einer Division: 17 % 5 ergibt 2, denn 17 geteilt durch 5 ist 3, Rest 2.

Mehr zu Zufallszahlen findest du im Abschnitt Tipps zu Kotlin.

Aufgabe 1

Analysiere die beiden Vorschläge: Wann genau büxt bei Vorschlag 1 ein neues Tier aus, wann bei Vorschlag 2? Probiere beide aus. Beide funktionieren - aber das Spiel fühlt sich unterschiedlich an. Beschreibe den Unterschied und entscheide dich für einen Vorschlag.

Aufgabe 2

Bei beiden Vorschlägen erscheinen die neuen Tiere immer an derselben Position (300, 200). Sorge dafür, dass jedes neue Tier an einer zufälligen Position erscheint. Achte darauf, dass die Tiere nicht direkt am Rand landen.

Abwechslung bei den Ausreissern

Bisher sehen alle Tiere gleich aus, denn im init-Block der Klasse Ausreisser steht das Bild fest. Schöner wäre es, wenn bei jedem neuen Tier der Zufall entscheidet, welches Tier ausbüxt. Im Ordner images liegen dafür z.B. cat.png, dog.png und frog.png.

Die Idee: Eine Zufallszahl entscheidet mit einer Fallunterscheidung, welches Bild gesetzt wird.

init {
    val nummer = (1..3).random()
    // Setze je nach Wert von nummer eines der Bilder
    // cat.png, dog.png oder frog.png.
}

Aufgabe 3

Vervollständige den init-Block, sodass jedes Tier zufällig eines von drei Bildern bekommt. Wenn du möchtest, kannst du im images-Ordner schauen, welche Bilder es dort noch gibt, oder auch eigene Bilder ablegen und diese verwenden.
Hilfe zum zufälligen Bild

Du brauchst eine Fallunterscheidung mit mehreren Fällen: Wenn nummer == 1 gilt, setzt du das erste Bild, sonst prüfst du mit else if auf nummer == 2 und setzt das zweite Bild - und im else-Fall das dritte.

Mehr Hilfe zum zufälligen Bild

Bringe die Fallunterscheidung für drei mögliche Tierbilder in die richtige Reihenfolge.

init {                                      §§fest
    val nummer = (1..3).random()            §§fest
    if (nummer == 1) {
        image = Image("cat.png")             §§gruppe=bild
    } else if (nummer == 2) {
        image = Image("dog.png")             §§gruppe=bild
    } else {
        image = Image("frog.png")            §§gruppe=bild
    }
}                                           §§fest

Aufgabe 4

Alle Tiere laufen beim Start in dieselbe Richtung los. Sorge im init-Block dafür, dass jedes Tier in eine zufällige Richtung startet. Das geerbte Attribut rotation hilft dir dabei: Es enthält die Blickrichtung in Grad, also einen Wert von 0 bis 359.

Dein eigenes Spiel

Du kannst das Spiel auch noch weiter verändern und verbessern. Hier sind ein paar Ideen:

  • Im Ordner images liegen noch mehr Bilder - neben den Tieren zum Beispiel auch apple.png, pizza.png, hamburger.png und icecream.png. Statt Tiere einzufangen, können ebenso gut Lebensmittel weggeklickt werden.
  • Die Ausreisser könnten auch noch andere Eigenschaften bekommen, z.B. Geschwindigkeiten. Die Geschwindigkeit wird beim Aufruf der Methode move als Parameter übergeben. Sie kann über die Lebensdauer des Tieres konstant bleiben oder sich ändern.
  • Die Richtung der Tiere könnte sich nach einer zufälligen Zeit ändern,
  • Die Klasse World besitzt die Methode setBackground, mit der du den Hintergrund des Spielfelds ändern kannst. Schau in der Dokumentation zu BluePlay nach, wie du sie benutzt.

Aufgabe 5

Mache das Spiel zu deinem eigenen und verbessere es nach deinen Vorstellungen.

Suche

v
100.123.2.2.7 Spiel verbessern
Kopieren durch Anklicken

Rückmeldung geben