The Queens Cupcake Lösung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
(Detailschritte)
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Detailschritte ==
 
== Detailschritte ==
Beginne das Beispiel damit, dass du alle notwendigen Variablen erstellst:
+
*Beginne das Beispiel damit, dass du alle notwendigen Variablen erstellst:
*Die Variable "cupcake" stellt mittels eines "sprite" (Computergrafik, eine leuchtende LED am Micro:bit) den Cupcake dar.<spoiler text="Block">
+
**Die Variable "cupcake" stellt mittels eines "sprite" (Computergrafik, eine leuchtende LED am Micro:bit) den Cupcake dar.<spoiler text="Block">
 
<pre id="pre01">
 
<pre id="pre01">
 
let cupcake = game.createSprite(2, 2)
 
let cupcake = game.createSprite(2, 2)
 
</pre>
 
</pre>
 
</spoiler>
 
</spoiler>
*Die Variable "cupcakeOnPlate" brauchst du, um überprüfen zu können, ob der Cupcake noch am Teller ist. <spoiler text="Block">
+
**Die Variable "cupcakeOnPlate" brauchst du, um überprüfen zu können, ob der Cupcake noch am Teller ist. <spoiler text="Block">
 
<pre id="pre01">
 
<pre id="pre01">
 
let cupcakeOnPlate = true
 
let cupcakeOnPlate = true
 
</pre>
 
</pre>
 
</spoiler>
 
</spoiler>
*Mit der Variable "tolerance" kannst du den Schwierigkeitsgrad des Spieles einstellen. Setze den Wert für den Anfang auf 200. <spoiler text="Block">
+
**Mit der Variable "tolerance" kannst du den Schwierigkeitsgrad des Spieles einstellen. Setze den Wert für den Anfang auf 200. <spoiler text="Block">
 
<pre id="pre01">
 
<pre id="pre01">
 
let tolerance = 200
 
let tolerance = 200
 
</pre>
 
</pre>
 
</spoiler>
 
</spoiler>
Fällt der Cupecake vom Teller, ist das Spiel beendet. Die "while do" - Schleife überprüft genau das für dich. Während das Sprite (Cupcake) auf der Anzeige des Micro:bits ist, wird alles innerhalb der Schleife ausführt. Fällt das Sprite vom Teller, wird ein Code übermittelt, der die "while do" - Schleife beendet und "Game over" wird am Display ausgegeben.<spoiler text="Block">
+
*Fällt der Cupecake vom Teller, ist das Spiel beendet. Die "while do" - Schleife überprüft genau das für dich. Während das Sprite (Cupcake) auf der Anzeige des Micro:bits ist, wird alles innerhalb der Schleife ausführt. Fliegt das Sprite vom Display, wird die Variable "cupcakeOnPlate" auf falsch gesetzt. Die "while do" - Schleife ist damit beendet und "Game over" wird am Display ausgegeben.<spoiler text="Block">
 
<pre id="pre01">
 
<pre id="pre01">
 
let cupcakeOnPlate = false
 
let cupcakeOnPlate = false
Zeile 25: Zeile 25:
 
</pre>
 
</pre>
 
</spoiler>
 
</spoiler>
Wenn der Micro:bit in eine Richtung (links, rechts, vor, zurück) geneigt wird, soll das erkannt und ein Programmcode (Cupcake soll am Display in die richtige Richtung wandern) ausgeführt werden. Der Beschleunigungssensor liefert den Wert dafür sowohl für die x-Achse (links rechts) als auch für die y-Achse (vor, zurück). Für die 4 Richtungen, in die sich das Sprite bewegen kann, brauchst du also 4 Bedingungen.<spoiler text="Block">
+
*Wenn der Micro:bit in eine Richtung (links, rechts, vor, zurück) geneigt wird, soll das erkannt und ein Programmcode (Cupcake soll am Display in die richtige Richtung wandern) ausgeführt werden. Der Beschleunigungssensor liefert den Wert dafür sowohl für die x-Achse (links rechts) als auch für die y-Achse (vor, zurück). Für die 4 Richtungen, in die sich das Sprite bewegen kann, brauchst du also 4 Bedingungen.<spoiler text="Block">
 
<pre id="pre01">
 
<pre id="pre01">
 
let cupcakeOnPlate = false
 
let cupcakeOnPlate = false
Zeile 42: Zeile 42:
 
     if (input.acceleration(Dimension.Y) < -1 * tolerance) {
 
     if (input.acceleration(Dimension.Y) < -1 * tolerance) {
 
    
 
    
 +
    }
 +
}
 +
basic.showString("Game Over")
 +
</pre>
 +
</spoiler>
 +
*Damit das Sprite in die gewünschte Richtung wandert, muss es entsprechend der Bedingung verändert werden: Wird der Micro:bit beispielsweise nach rechts geneigt, soll das Sprite um eine Position entlang der x-Achse wandern. Wenn das Sprite allerdings schon am vierten und letzten Punkt des rechten Displayrands steht und der Micro:bit weiterhin nach rechts geneigt ist, fällt der Cupcake von der Platte und das Spiel ist vorbei. Mit einer weiteren bedingten Anweisung, kannst du genau das programmieren:
 +
*Mit dieser bedingten Anweisung überprüfst du, ob sich der Cupcake (Sprite) noch am Tablett befindet. Ist das nicht der Fall, wird die Variable "cupcakeOnPlate" auf falsch gesetzt und das Spiel ist beendet. Andernfalls wandert der Cupcake um eine Position nach rechts.<spoiler text="Block">
 +
<pre id="pre01">
 +
let cupcakeOnPlate = false
 +
let cupcake: game.LedSprite = null
 +
if (cupcake.get(LedSpriteProperty.X) == 4) {
 +
    cupcakeOnPlate = false
 +
} else {
 +
    cupcake.change(LedSpriteProperty.X, 1)
 +
    basic.pause(200)
 +
}
 +
</pre>
 +
</spoiler>
 +
*Zum Schluss musst du diese beiden bedingten Anweisungen nur mehr richtig verschachteln und für die übrigen drei Richtungen (links, oben und unten) anpassen. Hier siehst du, wie der fertige Code aussieht, damit der Cupcake beim Neigen des BBC micro:bit nach rechts, auch nach rechts wandert und vom Tablett fällt.<spoiler text="Block">
 +
<pre id="pre01">
 +
basic.showString("3-2-1 Go")
 +
let cupcake = game.createSprite(2, 2)
 +
let cupcakeOnPlate = true
 +
let tolerance = 200
 +
while (cupcakeOnPlate == true) {
 +
    if (input.acceleration(Dimension.X) > tolerance) {
 +
        if (cupcake.get(LedSpriteProperty.X) == 4) {
 +
            cupcakeOnPlate = false
 +
        } else {
 +
            cupcake.change(LedSpriteProperty.X, 1)
 +
            basic.pause(200)
 +
        }
 
     }
 
     }
 
}
 
}

Aktuelle Version vom 15. Februar 2022, 09:35 Uhr

Detailschritte

  • Beginne das Beispiel damit, dass du alle notwendigen Variablen erstellst:
    • Die Variable "cupcake" stellt mittels eines "sprite" (Computergrafik, eine leuchtende LED am Micro:bit) den Cupcake dar.Block
    • Die Variable "cupcakeOnPlate" brauchst du, um überprüfen zu können, ob der Cupcake noch am Teller ist. Block
    • Mit der Variable "tolerance" kannst du den Schwierigkeitsgrad des Spieles einstellen. Setze den Wert für den Anfang auf 200. Block
  • Fällt der Cupecake vom Teller, ist das Spiel beendet. Die "while do" - Schleife überprüft genau das für dich. Während das Sprite (Cupcake) auf der Anzeige des Micro:bits ist, wird alles innerhalb der Schleife ausführt. Fliegt das Sprite vom Display, wird die Variable "cupcakeOnPlate" auf falsch gesetzt. Die "while do" - Schleife ist damit beendet und "Game over" wird am Display ausgegeben.Block
  • Wenn der Micro:bit in eine Richtung (links, rechts, vor, zurück) geneigt wird, soll das erkannt und ein Programmcode (Cupcake soll am Display in die richtige Richtung wandern) ausgeführt werden. Der Beschleunigungssensor liefert den Wert dafür sowohl für die x-Achse (links rechts) als auch für die y-Achse (vor, zurück). Für die 4 Richtungen, in die sich das Sprite bewegen kann, brauchst du also 4 Bedingungen.Block
  • Damit das Sprite in die gewünschte Richtung wandert, muss es entsprechend der Bedingung verändert werden: Wird der Micro:bit beispielsweise nach rechts geneigt, soll das Sprite um eine Position entlang der x-Achse wandern. Wenn das Sprite allerdings schon am vierten und letzten Punkt des rechten Displayrands steht und der Micro:bit weiterhin nach rechts geneigt ist, fällt der Cupcake von der Platte und das Spiel ist vorbei. Mit einer weiteren bedingten Anweisung, kannst du genau das programmieren:
  • Mit dieser bedingten Anweisung überprüfst du, ob sich der Cupcake (Sprite) noch am Tablett befindet. Ist das nicht der Fall, wird die Variable "cupcakeOnPlate" auf falsch gesetzt und das Spiel ist beendet. Andernfalls wandert der Cupcake um eine Position nach rechts.Block
  • Zum Schluss musst du diese beiden bedingten Anweisungen nur mehr richtig verschachteln und für die übrigen drei Richtungen (links, oben und unten) anpassen. Hier siehst du, wie der fertige Code aussieht, damit der Cupcake beim Neigen des BBC micro:bit nach rechts, auch nach rechts wandert und vom Tablett fällt.Block


Zurück zur Aufgabe