diff --git a/_projects/de/2025-04-07-flappybird.md b/_projects/de/2025-04-07-flappybird.md new file mode 100644 index 00000000..6758d1e3 --- /dev/null +++ b/_projects/de/2025-04-07-flappybird.md @@ -0,0 +1,86 @@ +--- +layout: project_page +date: 2025-04-07 +author: Ben +title: "Flappy Bird" +abstract: "Nutze die Sensebox als Spiele konsole." +thumbnail: /images/projects/FlappyBird/TitelBild.png +image0: /images/projects/AufbauBild.jpeg +image1: /images/projects/FlappyBird/Bild2.svg +image2: /images/projects/FlappyBird/Bild3.svg +image3: /images/projects/FlappyBird/Bild4.svg +image4: /images/projects/FlappyBird/Bild5.svg +image4: /images/projects/FlappyBird/Bild1.svg + +material: + - senseBox MCU-S2 + - LED-Matrix + - 1x qwiic Kabel + +ide: blockly +version: ["edu", "mini v1"] +lang: de +tags: ["Informatik", "Spiel"] +difficult: schwehr +--- + +# Flappy Bird {#head} + +In diesem Projekt programmieren wir das klassische Spiel **Flappy Bird**. + +{% include image.html image=page.thumbnail %} + +## Aufbau + +Wichtig ist zunächst zu verstehen, dass du eine **LED-Matrix** benötigst, um das Spiel am Ende spielen zu können. +{% include image.html image=page.image0 %} + +## Programmierung + +### Schritt 1: `setup()` + +Um die LED-Matrix verwenden zu können, musst du sie zunächst in der Funktion `setup()` initialisieren. +Außerdem solltest du hier schon die Variable für den **Vogel** anlegen. Damit dieser in der Mitte des Spielfelds startet, gibst du ihm den Wert **4**, da die LED-Matrix nur 8 Pixel hoch ist. + +{% include image.html image=page.image5 %} + +### Schritt 2: Bewegung des Vogels + +Zuerst solltest du ein Intervall erstellen, damit das Spiel nicht zu schnell abläuft. +Dann fügst du das Löschen der LED-Matrix ein. +Wechsle nun zur Kategorie „Logik“ und nimm dir ein **„wenn, dann“**-Element. +Füge einen Button-Sensor ein und prüfe, ob der Button gedrückt ist. Wenn ja, bewegt sich der Vogel nach **oben** – wenn nicht, nach **unten**. + +{% include image.html image=page.image1 %} + +### Schritt 3: Hindernisse + +Erstelle zwei weitere Variablen: `XAchse` und `Gegenstände`. +Setze `XAchse` auf einen beliebigen Wert zwischen **3 und 6**, und `Gegenstände` auf **12**, damit die Hindernisse nicht direkt vor dem Spieler erscheinen. +Verwende wieder ein **„wenn, dann“**, um die Variable `Gegenstände` zurückzusetzen und eine neue Zufallszahl zu generieren. So entstehen die Hindernisse in unterschiedlichen Abständen. +Setze `XAchse` dann wieder auf 12. +Pack das Ganze in eine „wenn, dann“-Abfrage, die überprüft, ob `XAchse == 0` ist. + +{% include image.html image=page.image2 %} + +### Schritt 4: Hindernisse visualisieren + +Verringere den Wert von `XAchse` regelmäßig um 1, sodass sich die Hindernisse auf den Spieler zu bewegen. +Jetzt wird der Code aus Schritt 3 nützlich: +Du kannst mit der Zufallszahl die oberen und unteren Wände berechnen – zum Beispiel durch `+2 bis +6` und `-2 bis -6`. In diesen Bereichen füllst du dann die entsprechenden Pixel. + +{% include image.html image=page.image3 %} + +### Schritt 5: Kollisionen + +Erstelle eine weitere **„wenn, dann“**-Abfrage. +Darin prüfst du, ob sich `XAchse` der Hindernisse an der gleichen Position wie der Vogel befindet **und** ob der Vogel mit einer Wand kollidiert oder die Y-Achse des Vogels außerhalb des Spielfelds liegt. +Wenn das passiert, soll ein trauriges Motiv auf der LED-Matrix angezeigt werden. + +{% include image.html image=page.image4 %} + +## Gesamter Code + +Den vollständigen Blockly-Sketch findest du [hier](https://blockly.sensebox.de/). + +Damit du Flappy Bird auch unterwegs spielen kannst, empfiehlt es sich, die **senseBox** mit einer Powerbank zu betreiben. Herzlichen Glückwunsch – du hast das Projekt erfolgreich abgeschlossen und kannst jetzt **Flappy Bird** spielen, ganz ohne Smartphone! \ No newline at end of file diff --git a/images/projects/FlappyBird/AufbauBild.jpeg b/images/projects/FlappyBird/AufbauBild.jpeg new file mode 100644 index 00000000..1fc93865 Binary files /dev/null and b/images/projects/FlappyBird/AufbauBild.jpeg differ diff --git a/images/projects/FlappyBird/Bild1.svg b/images/projects/FlappyBird/Bild1.svg new file mode 100644 index 00000000..b32dd622 --- /dev/null +++ b/images/projects/FlappyBird/Bild1.svg @@ -0,0 +1,1042 @@ + + ">Setup()Endlosschleife()4SchreibeintYLED-Matrix initialisierenPort:AHelligkeit: 20 \ No newline at end of file diff --git a/images/projects/FlappyBird/Bild2.svg b/images/projects/FlappyBird/Bild2.svg new file mode 100644 index 00000000..0de293d8 --- /dev/null +++ b/images/projects/FlappyBird/Bild2.svg @@ -0,0 +1,1042 @@ + + ">4SchreibeintYLED-Matrix initialisierenPort:AHelligkeit: 20Buttonist gedrücktPin:on Board2verringereYum1erhöheYum1intYPixel setzenPort:AZeige sofortXYFarbewennmachesonstMatrix leerenPort:AIntervall: Interval400msSetup()Endlosschleife() \ No newline at end of file diff --git a/images/projects/FlappyBird/Bild3.svg b/images/projects/FlappyBird/Bild3.svg new file mode 100644 index 00000000..c3bd0c78 --- /dev/null +++ b/images/projects/FlappyBird/Bild3.svg @@ -0,0 +1,1042 @@ + + ">4412SchreibeintXSchreibeintiSchreibeintYLED-Matrix initialisierenPort:AHelligkeit: 20Buttonist gedrücktPin:on Board2verringereYum1erhöheYum1intYintX0<inti1=1verringereiuminti2=2verringereiuminti3=3verringereiuminti4=4verringereiuminti5=5verringereiuminti6=6verringereiuminti7=7verringereiuminti8=8verringereium36ganzzahliger Zufallswert zwischenbis13erhöheXumerhöheiumwennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachewennmachePixel setzenPort:AZeige sofortXYFarbewennmachesonstMatrix leerenPort:AIntervall: Interval400msSetup()Endlosschleife() \ No newline at end of file diff --git a/images/projects/FlappyBird/Bild4.svg b/images/projects/FlappyBird/Bild4.svg new file mode 100644 index 00000000..8c6c33c8 --- /dev/null +++ b/images/projects/FlappyBird/Bild4.svg @@ -0,0 +1,1042 @@ + + ">4412SchreibeintXSchreibeintiSchreibeintYLED-Matrix initialisierenPort:AHelligkeit: 20Buttonist gedrücktPin:on Board2verringereYum1erhöheYum1intYPixel setzenPort:AZeige sofortXYFarbe1intXinti6-intXinti5-intXinti4-intXinti3-intXinti2-intXinti2+intXinti3+intXinti4+intXinti5+intXinti6+Pixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbeverringereXumwennmachesonstMatrix leerenPort:AIntervall: Interval400msSetup()Endlosschleife() \ No newline at end of file diff --git a/images/projects/FlappyBird/Bild5.svg b/images/projects/FlappyBird/Bild5.svg new file mode 100644 index 00000000..f6896a3e --- /dev/null +++ b/images/projects/FlappyBird/Bild5.svg @@ -0,0 +1,1042 @@ + + ">4412SchreibeintXSchreibeintiSchreibeintYLED-Matrix initialisierenPort:AHelligkeit: 20Buttonist gedrücktPin:on Board2verringereYum1erhöheYum1intYintX0<inti1=1verringereiuminti2=2verringereiuminti3=3verringereiuminti4=4verringereiuminti5=5verringereiuminti6=6verringereiuminti7=7verringereiuminti8=8verringereium36ganzzahliger Zufallswert zwischenbis13erhöheXumerhöheiumwennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmachesonst wennmache1intXinti6-intXinti5-intXinti4-intXinti3-intXinti2-intXinti2+intXinti3+intXinti4+intXinti5+intXinti6+intX1=intYinti2-intYinti2+oderundintY-1intY9oderoderMotivsadZeige BitmapPort:AMotivwennmachePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbePixel setzenPort:AZeige sofortXYFarbeverringereXumwennmachePixel setzenPort:AZeige sofortXYFarbewennmachesonstMatrix leerenPort:AIntervall: Interval400msSetup()Endlosschleife() \ No newline at end of file diff --git a/images/projects/FlappyBird/Screenshot 2025-04-10 143746.png b/images/projects/FlappyBird/Screenshot 2025-04-10 143746.png new file mode 100644 index 00000000..e4ae48b2 Binary files /dev/null and b/images/projects/FlappyBird/Screenshot 2025-04-10 143746.png differ diff --git a/images/projects/FlappyBird/TitelBild.png b/images/projects/FlappyBird/TitelBild.png new file mode 100644 index 00000000..31baeab8 Binary files /dev/null and b/images/projects/FlappyBird/TitelBild.png differ