The Queens Cupcake: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== 20px|Icon Übertragen von Geheimcode I == 300px|right Hallo, ich bin Robi-x01 und ich möchte mich…“
 
Martin.teufel (Diskussion | Beiträge)
 
(57 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== [[Datei:Icon_story.png|20px|Icon]] Übertragen von Geheimcode I ==
== [[Datei:Icon_story.png|20px|Icon]] Geschichte ==


[[Datei:Robo_mbit_morse.gif|300px|right]]
[[Datei:Cupcake_Story.png|300px]]
Hallo, ich bin Robi-x01 und ich möchte mich mit meiner Freundin unterhalten können, ohne dass dies jemand anderer versteht. Dazu verwenden wir eine Geheimsprache namens Morsecode. Diese Sprache hat genauso 2 Zeichen, einen Punkt und einen Strich.
* Wie soll das klappen?
 
* Wir werden den Micro:bit hier verwenden, um Informationen zu übertragen.
 
* Der Morsecode hatte früher eine große Bedeutung in der Nachrichtenübertragung. Lies dazu und zur Entstehung in Wikipedia [https://de.wikipedia.org/wiki/Morsecode **Morsecode**] nach.
 
* Eine erste Begrüßung an dich, verstehst du das? [[Datei:Gruss.png|50%]]  
 
Wenn man Geheimsprache vereinbart, dann muss der Sender und der Empfänger genau dieselbe Verschlüsselung und Entschlüsselung verwenden. Dazu gibt es Tabellen, die diese Schlüssel verraten. Unterhalb siehst eine solche Tabelle, die Morse-Tabelle. Diese Schlüsseltabelle dürfen bei Geheimprojekten natürlich nur der Sender und der Empfänger haben.


== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
== [[Datei:Icon_gluehbirne.png|20px|Icon]] Aufgabenstellung  ==
[[Datei:Morsetaster.jpg|right|500px|Morsegerät historisch]]
Pass auf, dass der Cupcake nicht vom silbernen Tablett rutscht, wenn er serviert wird! In diesem Spiel wird der Cupcake durch ein leuchtendes LED am BBC micro:bit simuliert. Das silberne Tablett wird durch den 5x5 LED-Raster des BBC micro:bit dargestellt. Der Spieler oder die Spielerin tragen den BBC micro:bit flach auf dem Handrücken im Raum herum und stellen sicher, dass sich der BBC micro:bit so wenig wie möglich bewegt. Mithilfe des Beschleunigungssensors stellt unser Programm fest, ob sich der BBC micro:bit neigt (vorwärts, rückwärts, links oder rechts). Ist das der Fall, bewegt sich der Cupcake (leuchtendes LED) auf dem silbernen Tablett (5x5 LED-Raster) in die jeweilige Richtung. Das Spiel endet, wenn sich das leuchtende LED im äußeren Rand des LED-Rasters befindet und der BBC micro:bit weiter geneigt wird. Ist das zu leicht? Dann versuche beim Servieren des Cupcakes zusätzlich ein Sportgerät (Pedalos, Hula-Hoop-Reifen, Basketball) zu verwenden.
Mit dem BBC micro:bit wirst du Morsezeichen anzeigen und auch übertragen. Entwickle ein Programm mit dem man eine Morsekombination für einen Buchstaben oder ein Wort anzeigen und versenden kann.
 
Folgende Aufgaben sollte dieses Programm ausführen können:
 
* Das Drücken der Taste A sollte einen Morsepunkt aussenden (.)
* Die Taste B sollte einen Morsestrich aussenden (-)
* Beim Empfänger sollten diese Symbole angezeigt werden
* Mehrere Morsesymbole (Punkte und Striche) ergeben einen Buchstaben - nun muss man noch mitteilen, wann ein Buchstabe abgeschlossen ist und der nächste beginnt,  - das passiert über eine Pause von etwa 1 Sekunde
* Damit haben wir einen einfachen Morseapparat
* Hier abgebildet ein echtes Morsegerät, wie es Jahre verwendet wurde:
 
* Durch schnelles Öffnen und Schließen des Stromkreises wurden elektrische Signale übersendet: Ein kurzes Signal entspricht dem Punkt, langes entspricht dem Strich.
 
* Die Regelmäßigkeit des Drückens der Tasten hat hier große Bedeutung für das Erkennen von Morsezeichen.
* Man muss extrem konzentriert arbeiten, damit man dem Gegenüber keine unlesbare Fehlernachricht übermittelt.


== [[Datei:icon_material.png|20px|Icon]] Materialien ==
== [[Datei:icon_material.png|20px|Icon]] Materialien ==
[[Datei:morse-tab.png|thumb|500px|Morsetabelle]]
* Ein BBC micro:bit
* Zwei BBC Micro:bit (Version V2 oder V1 mit Lautsprecher oder Kopfhörer)
*Sportgeräte:  
* Papier und Stift
**Bälle zum Prellen oder Tribbeln
* Das gedruckte Morsealphabet (ausdruckbar mit der rechten Maustaste und "Grafik kopieren" und drucken)
**Hula-Hoop-Reifen
**Yo-Yos
**Pedalos
**Kegel zum Setzen eines Parkours
**...


== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==
== [[Datei:icon_sanduhr.png|20px|Icon]] Zeitaufwand ==


* 2 Unterrichtseinheit
* 1-2 Unterrichtseinheit(en)


== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==
== [[Datei:Icon_puzzle3.png|20px|Icon]] Schwierigkeitsgrad ==


[[Datei:SternGelb.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]][[Datei:SternLeer.png|30px|borderless]]
[[Datei:SternGelb.png|30px|borderless]][[Datei:SternGelb.png|30px|borderless]][[Datei:SternGelb.png|30px|borderless]]


== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==
== [[Datei:Icon_brain.png|20px|Icon]] Kompetenzen ==


[[Datei:SOS_svg_gruen.png|thumb|400px|Das wichtigste Morsewort]]
Das solltest du bereits können:
Du solltest bereits
* Ein Koordinatensystem kennen
* Daten mit dem Micro:bit anzeigen können
* Bedingte Anweisungen kennen
* Tastenfunktionen (A und B) verwenden können
* Wissen, was [[Variablen]] sind und wofür sie benötigt werden
* Den Beschleunigungssensor anwenden können
* Einen Vergleich verstehen und erstellen




Beim Programmieren lernst bzw. übst du
Du lernst ...
 
* [[Schleifen]] zu verwenden
* [[Variable]] zu verwenden
* [[Operatoren]] zu verwenden
* [[Bedingungen]] zu verwenden
* [[Bedingungen]] zu verwenden
* [[Funkverbindungen]] aufzunehmen
* [[Bedingungen]] ineinander zu verschachteln
* [[Funksignale]] zu empfangen
* ein Sprite zu erstellen und zu bewegen
 
Bei dieser Aufgabe lernst du auch
* ein System für eine exakte Kommunikation zu entwerfen
* ein neues Programm zu erstellen
* ein neues Programm zu erstellen
* ein fremdes Programm zu lesen und zu ändern


== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==
== [[Datei:Icon faecher.png|20px|Icon]] Unterrichtsfächer ==


* Werken
* Informatik
* Informatik
* Deutsch
* Bewegung und Sport
* Physik


== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
== [[Datei:Icon_hilfe.png|20px|Icon]] Tipps und Hilfestellungen ==
[[Datei:Morse_d2.gif|thumb|Welcher Buchstabe wird hier im Bild angezeigt?]]
=== Erforderliche Programmierblöcke ===
=== Erforderliche Programmierblöcke ===
==== Ziel ====  
==== Ziel ====  


* Nach Programmstart sollte ein Symbol zeigen, dass der Micro:bit bereit ist
* Der Cupcake soll als "sprite" (eine leuchtende LED am Display) am micro:bit beim Starten in der Mitte des Displays angezeigt werden.
* '''Taste A''' soll einen Punkt, '''Taste B''' einen Strich auf das Display schicken
* Das Sprite soll sich nach oben, unten, links und rechts am Display bewegen, wenn der micro:bit in diese Richtung geneigt wird. Wenn du also den micro:bit nach vorne neigst, gleitet das sprite am Display nach vorne. Der Beschleunigungssensor hilft dabei.
* Per Funk sollte das Zeichen versendet werden
* Das Spiel dauert so lange wie der Cupcake (sprite) am Display leuchtet. Fällt er von der Platte, wird "Game Over" am micro:bit ausgegeben.
* Beim Empfänger soll das Zeichen angezeigt werden
* Erweiterung: Es sollte ein ganzes Wort versendet werden
 


==== Blöcke ====
==== Blöcke ====


* Ein Morsezeichen (. oder -) sollte per Tastendruck angezeigt werden <spoiler text="Block">
* Notwendige Variablen
**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">
input.onButtonPressed(Button.A, function () {
let cupcake = game.createSprite(2, 2)
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</pre>
</spoiler>
</spoiler>
* Zwei Micro:bit sollen mit Funk verbunden werden <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">
basic.showLeds(`
let cupcakeOnPlate = true
    . . # . .
    # # # # #
    . . # . .
    . # . # .
    # . . . #
    `)
radio.setGroup(25)
</pre>
</pre>
</spoiler>
</spoiler>
** Der Funkkanal muss für beide gleich lauten
**Mit der Variable "tolerance" kannst du den Schwierigkeitsgrad des Spieles einstellen. Setze den Wert für den Anfang auf 200. <spoiler text="Block">
** Kein anderes Kommunikations-Paar in der Klasse darf diesen Kanal benutzen (Kanal 1 bis 255 ist möglich)
<pre id="pre01">
* Daten müssen an den zweiten Micro.bit gesendet werden
let tolerance = 200
* Gesendet können nur Buchstaben, Texte oder Ziffern sein - aber keine Bilder
* Blöcke zum Senden von Daten <spoiler text="Block">
<pre id="pre02">
input.onButtonPressed(Button.A, function () {
    radio.sendString(".")
})
input.onButtonPressed(Button.B, function () {
    radio.sendString("---")
})
</pre>
</pre>
</spoiler>
</spoiler>
* Empfangen und Anzeigen von Daten <spoiler text="Block">
*Mit der "while do"- Schleife wiederholst du eine Bedingung, solange diese eintritt. Wenn dir das noch nicht klar ist, hilft dir diese [https://microbit.eeducation.at/wiki/Schleifen Seite] weiter. Mit dieser "while do"-Schleife wird das Programm so lange ausgeführt, so lange die Variable "cupcakeOnPlate" wahr ist. Fällt der Cupcake vom Teller, wird diese Variable auf falsch gesetzt und der Programmcode wird abgebrochen. <spoiler text="Block">
<pre id="pre02">
<pre id="pre01">
radio.onReceivedString(function(receivedString: string) {
let cupcakeOnPlate = true
    basic.showString(receivedString) 
while (cupcakeOnPlate == true) {
})
}
</pre>
</pre>
</spoiler>
</spoiler>
* Ausgeben von kurzem Sound <spoiler text="Block">
*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="pre02">
<pre id="pre01">
radio.onReceivedString(function(receivedString: string) {
let cupcakeOnPlate = false
     music.ringTone(Note.C)
let cupcake: game.LedSprite = null
if (cupcake.get(LedSpriteProperty.X) == 4) {
     cupcakeOnPlate = false
} else {
    cupcake.change(LedSpriteProperty.X, 1)
     basic.pause(200)
     basic.pause(200)
})
}
</pre>
</spoiler>
* Ausgeben von langem Sound <spoiler text="Block">
<pre id="pre02">
radio.onReceivedString(function(receivedString: string) {
    music.ringTone(Note.C)
    basic.pause(600)
})
</pre>
</pre>
</spoiler>
</spoiler>
 
*Der zuletzt angezeigte Block soll ausgeführt werden, wenn der micro:bit nach rechts geneigt wird. Mithilfe des Beschleunigungssensors kannst du das erkennen. Ist der gemessene x-Wert für die Neigung nach rechts dieses Sensors größer als die Variable "tolerance", soll der obere Block ausgeführt werden. Du brauchst also wieder eine bedingte Anweisung.<spoiler text="Block">
=== Eckpfeiler zur Umsetzung ===
 
* Versuche diese drei Zeichen (Strich, Punkt, Punkt) mit dem Micro:bit-Programm darzustellen auf dem Display darzustellen <spoiler text="Block">
<pre id="pre01">
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
let tolerance = 0
    basic.showLeds(`
if (input.acceleration(Dimension.X) > tolerance) {
        . . . . .
        . . . . .
}
        . . # . .
        . . . . .
        . . . . .
        `)
})
input.onButtonPressed(Button.B, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . # # # .
        . . . . .
        . . . . .
        `)
})
</pre>
</spoiler>
* Wenn gleiche Zeichen mehrmals hintereinander gesendet werden, kann man nicht erkennen, dass es mehrfach gesendet wurde (es wurde nur länger dargestellt): Sieh dir das Morsealphabet an, es bestehen manche Buchstaben beispielsweise aus 3 Punkten hintereinander, "...."
** Überlegt eine Lösung zur besseren Lesbarkeit
** Das Problem ist beim Anzeigen von "-.." bereits erkennbar.
** Untersuche dieses <spoiler text="Bild 1"> [[Datei:Morse_d2.gif|400px]]</spoiler>
und dieses Bild 2 (ohne Zwischenphasen) <spoiler text="Bild2"> [[Datei:Morse_d2_ohne_zwischenbild.gif|400px]]</spoiler>
* Du brauchst ein Lösung zur besseren Lesbarkeit <spoiler text="Tipp">
<pre id="pre01">
input.onButtonPressed(Button.A, function () {
    basic.showLeds(`
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        `)
})
</pre>
</pre>
</spoiler>
</spoiler>


===[[Lösung_morse1|Schritt für Schritt zur Lösung]]===
===[[The_Queens_Cupcake_Lösung|Schritt für Schritt zur Lösung]]===
:Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der [[Morse1_Lösung|Lösungsseite zu diesem Beispiel]]
:Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der [https://microbit.eeducation.at/wiki/The_Queens_Cupcake_L%C3%B6sung Lösungsseite zu diesem Beispiel]


==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
==[[Datei:presentation.png|20px|Icon]] Präsentation und Reflexion ==
[[Datei:Morse-Tafel.png|thumb|500px|Optimierte Morsetabelle zum schnellen Lesen]]
===Allgemein===
===Allgemein===
* Stelle dein Ergebnis vor! Was kann dein Produkt?  
* Stelle dein Ergebnis vor! Was kann dein Produkt?  
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
* Was hat dir bei der Entwicklung deines Produkts gefallen?  
* Welche Schwierigkeiten hattest? Wie konntest du diese lösen?
* Welche Schwierigkeiten hattest du? Wie konntest du diese lösen?
* Erläutere, wie du dein Produkt programmiert hast!
* Erläutere, wie du dein Produkt programmiert hast!
* Was war bei dieser Aufgabe interessant für dich?
* Was war bei dieser Aufgabe interessant für dich?
Zeile 216: Zeile 114:
===Projektspezifisch===
===Projektspezifisch===


* Welche Darstellungssymbole (-.) wurde für die beiden Morsezeichen auf dem Micro:bit gewählt, welche Darstellung könnte man noch verwenden?
* Kannst du erklären, warum die Variable "tolerance" benötigt wird? Warum brauchen wir sie?
* Wie habt ihr während der Übungen festgelegt, wer senden und wer empfangen darf?
* Welche Auswirkungen hätte es auf das Spiel, wenn die Variable "tolerance" den Wert 500 statt 200 hätte? Wäre das Spiel einfacher oder schwieriger?
* Wie funktionierte das Senden eines ganzen Wortes - habt ihr das versucht?
* Habt ihr das Senden und Empfangen auch in verschiedenen Räumen mit der Trennung von Sender und Empfänger probiert. Wenn ja, wie weit reicht das Signal des Micro:bit?
* Überlege, warum die Morsespezialistinnen diese rechts dargestellte Tabelle zum Nachschlagen der Morsezeichen lieber verwenden als die obere Liste? Suche beispielsweise das Zeichen .--- : es ist ein J.
* Welches wichtige Morsewort wird heute noch immer verwendet? Ein wichtiges Notsignal: ...  ---  ... 
* Wie könnte man Morsesignale ganz ohne Computer, mit sehr einfachen Mitteln produzieren?
* Wie könnte man ein Morsegerät mit dem Micro:bit programmieren, das nur Lichtsignal aussendet?
* Wie könnte ein von euch entworfenes Gehäuse für den Micro:bit aussehen, damit dieser "besser in der Hand liegt"?


==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==
==[[Datei:icon_plus.png|20px|Icon]] Weiterentwicklung ==


* Überlegt, wie man eine Bestätigung vom Empfänger programmieren könnte, damit der Sender immer weiß, dass das Zeichen richtig vom Empfänger gelesen werden konnte oder ob es wiederholt werden sollte und auch, ob das nächste gesendet werden kann.
* Der oder die Spieler*in muss eine festgelegte Route mit dem "Cupcake" gehen. Es soll dabei erfasst werden, wie lange er oder sie für das Servieren benötigt. Programmiere den micro:bit so, dass direkt nach der "3-2-1 Go"-Meldung die Zeitmessung startet. Drückt man den Knopf A soll die Zeitmessung gestoppt und der gemessene Wert angezeigt werden.
* Wie könnte man gleich einen ganzen Buchstaben durch einen Tastendruck senden? Dh. man sendet gleich ein A oder B in Morsekodierung aus.
* Wie könnte man auf dem Sender-Micro:bit einen Buchstaben auswählen und dann wird er als Morsecode versendet (anstatt als Programmiererin jedes Mal den Buchstaben umzuprogrammieren)?
* Überlege andere Symbole für eine Geheimsprache - probiert diese auch auf dem Micro:bit aus.
 
== Erweiterungsaufgabe ==
'''Analyse eines fremden Programmcodes:'''<br>
* Ein Ausblick: Was stellt dieser komplizierte Programmcode dar? [https://dlpl-mb.github.io/morse_01_bst_senden/  Arrays, die Supervariablen]
* Es gibt Erweiterungsbeispiele mit dem Namen '''Morse 2''', dort werden Anwendungen der hier gezeigten Beispiele dargestellt sein
* Es werden auch viele weitere neue Schritte des Programmierens gezeigt.
* Erweiterungsbeispiele: [[Morse2]]


== Erweiterungsaufgabe ==
* Der Code soll so angepasst werden, dass sich automatisch der Schwierigkeitsgrad ändert, wenn ein Spieler oder eine Spielerin beispielsweise 10 Sekunden lang gespielt hat, ohne den Cupcake fallen zu lassen (z.B. Toleranzänderung von 200 auf 100).


<htmlet>makecode_embed</htmlet>
<htmlet>makecode_embed</htmlet>

Aktuelle Version vom 17. Mai 2022, 07:59 Uhr

Icon Geschichte

Icon Aufgabenstellung

Pass auf, dass der Cupcake nicht vom silbernen Tablett rutscht, wenn er serviert wird! In diesem Spiel wird der Cupcake durch ein leuchtendes LED am BBC micro:bit simuliert. Das silberne Tablett wird durch den 5x5 LED-Raster des BBC micro:bit dargestellt. Der Spieler oder die Spielerin tragen den BBC micro:bit flach auf dem Handrücken im Raum herum und stellen sicher, dass sich der BBC micro:bit so wenig wie möglich bewegt. Mithilfe des Beschleunigungssensors stellt unser Programm fest, ob sich der BBC micro:bit neigt (vorwärts, rückwärts, links oder rechts). Ist das der Fall, bewegt sich der Cupcake (leuchtendes LED) auf dem silbernen Tablett (5x5 LED-Raster) in die jeweilige Richtung. Das Spiel endet, wenn sich das leuchtende LED im äußeren Rand des LED-Rasters befindet und der BBC micro:bit weiter geneigt wird. Ist das zu leicht? Dann versuche beim Servieren des Cupcakes zusätzlich ein Sportgerät (Pedalos, Hula-Hoop-Reifen, Basketball) zu verwenden.

Icon Materialien

  • Ein BBC micro:bit
  • Sportgeräte:
    • Bälle zum Prellen oder Tribbeln
    • Hula-Hoop-Reifen
    • Yo-Yos
    • Pedalos
    • Kegel zum Setzen eines Parkours
    • ...

Icon Zeitaufwand

  • 1-2 Unterrichtseinheit(en)

Icon Schwierigkeitsgrad

borderlessborderlessborderless

Icon Kompetenzen

Das solltest du bereits können:

  • Ein Koordinatensystem kennen
  • Bedingte Anweisungen kennen
  • Wissen, was Variablen sind und wofür sie benötigt werden
  • Den Beschleunigungssensor anwenden können
  • Einen Vergleich verstehen und erstellen


Du lernst ...

  • Schleifen zu verwenden
  • Bedingungen zu verwenden
  • Bedingungen ineinander zu verschachteln
  • ein Sprite zu erstellen und zu bewegen
  • ein neues Programm zu erstellen

Icon Unterrichtsfächer

  • Informatik
  • Bewegung und Sport

Icon Tipps und Hilfestellungen

Erforderliche Programmierblöcke

Ziel

  • Der Cupcake soll als "sprite" (eine leuchtende LED am Display) am micro:bit beim Starten in der Mitte des Displays angezeigt werden.
  • Das Sprite soll sich nach oben, unten, links und rechts am Display bewegen, wenn der micro:bit in diese Richtung geneigt wird. Wenn du also den micro:bit nach vorne neigst, gleitet das sprite am Display nach vorne. Der Beschleunigungssensor hilft dabei.
  • Das Spiel dauert so lange wie der Cupcake (sprite) am Display leuchtet. Fällt er von der Platte, wird "Game Over" am micro:bit ausgegeben.

Blöcke

  • Notwendige Variablen
    • Die Variable "cupcake" stellt mittels eines "sprite" (Computergrafik, eine leuchtende LED am micro:bit) den Cupcake dar.<spoiler text="Block">
let cupcake = game.createSprite(2, 2)

</spoiler>

    • Die Variable "cupcakeOnPlate" brauchst du, um überprüfen zu können, ob der Cupcake noch am Teller ist. <spoiler text="Block">
let cupcakeOnPlate = true

</spoiler>

    • Mit der Variable "tolerance" kannst du den Schwierigkeitsgrad des Spieles einstellen. Setze den Wert für den Anfang auf 200. <spoiler text="Block">
let tolerance = 200

</spoiler>

  • Mit der "while do"- Schleife wiederholst du eine Bedingung, solange diese eintritt. Wenn dir das noch nicht klar ist, hilft dir diese Seite weiter. Mit dieser "while do"-Schleife wird das Programm so lange ausgeführt, so lange die Variable "cupcakeOnPlate" wahr ist. Fällt der Cupcake vom Teller, wird diese Variable auf falsch gesetzt und der Programmcode wird abgebrochen. <spoiler text="Block">
let cupcakeOnPlate = true
while (cupcakeOnPlate == true) {
		
}

</spoiler>

  • 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">
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)
}

</spoiler>

  • Der zuletzt angezeigte Block soll ausgeführt werden, wenn der micro:bit nach rechts geneigt wird. Mithilfe des Beschleunigungssensors kannst du das erkennen. Ist der gemessene x-Wert für die Neigung nach rechts dieses Sensors größer als die Variable "tolerance", soll der obere Block ausgeführt werden. Du brauchst also wieder eine bedingte Anweisung.<spoiler text="Block">
let tolerance = 0
if (input.acceleration(Dimension.X) > tolerance) {
	
}

</spoiler>

Schritt für Schritt zur Lösung

Hinweise zur Lösungsfindung und auch eine mögliche, komplette Lösung findest du auf der Lösungsseite zu diesem Beispiel

Icon Präsentation und Reflexion

Allgemein

  • Stelle dein Ergebnis vor! Was kann dein Produkt?
  • Was hat dir bei der Entwicklung deines Produkts gefallen?
  • Welche Schwierigkeiten hattest du? Wie konntest du diese lösen?
  • Erläutere, wie du dein Produkt programmiert hast!
  • Was war bei dieser Aufgabe interessant für dich?

Projektspezifisch

  • Kannst du erklären, warum die Variable "tolerance" benötigt wird? Warum brauchen wir sie?
  • Welche Auswirkungen hätte es auf das Spiel, wenn die Variable "tolerance" den Wert 500 statt 200 hätte? Wäre das Spiel einfacher oder schwieriger?

Icon Weiterentwicklung

  • Der oder die Spieler*in muss eine festgelegte Route mit dem "Cupcake" gehen. Es soll dabei erfasst werden, wie lange er oder sie für das Servieren benötigt. Programmiere den micro:bit so, dass direkt nach der "3-2-1 Go"-Meldung die Zeitmessung startet. Drückt man den Knopf A soll die Zeitmessung gestoppt und der gemessene Wert angezeigt werden.

Erweiterungsaufgabe

  • Der Code soll so angepasst werden, dass sich automatisch der Schwierigkeitsgrad ändert, wenn ein Spieler oder eine Spielerin beispielsweise 10 Sekunden lang gespielt hat, ohne den Cupcake fallen zu lassen (z.B. Toleranzänderung von 200 auf 100).