Arbeitsblatt: Pong - ein altes Videospiel neu entdeckt
Material-Details
Arduinoprojekt für Medien & Informatik oder TTG.
"Pong" gilt als das erste Videospiel überhaupt und ist sehr simpel. Zwei Tennisschläger spielen sich einen Ball zu. Wer den Gegner dazu bring, den Ball zu verfehlen, erhält einen Punkt.
PDF Arbeitsblatt mit Bau- und Programmieranleitung und Beschaffungsquelle der Hardware (diese ist sehr simpel). Kulturelle Inhalte rund um das Gaming runden die Lerneinheit ab.
>Ab der 6. Klasse
>6 - 16 Lektionen
>Support über Webseite
Informatik
Programmieren
6. Schuljahr
8 Seiten
Statistik
195061
839
6
15.09.2020
Autor/in
Rolf Beck
Land: Schweiz
Registriert vor 2006
Textauszüge aus dem Inhalt:
Das Arbeiten zu Hause mit minimalen Mitteln bietet die Chance, neue Inhalte Step-By-Step von Grund auf zu erkunden. Mit einem einfachen Mikrocontroller können, ohne Bauen und Basteln, spannende Experimente rund um die Robotik gemacht werden. Dies bietet viele Anknüpfungspunkte für spätere Schulprojekte im Makerspace, TTG oder Werken. 1. Pong ein altes Videospiel neu entdeckt Das 1972 von Atari veröffentlichte «Pong» wurde zum ersten weltweit beliebten Videospiel und in den 1970erJahren zunächst auf Geräten in Spielhallen bekannt. Es gilt als Urvater der Videospiele und lässt sich mit einem einfachen Neopixel Strip leicht nachbauen und programmieren. Das Spielprinzip von Pong ist simpel und ähnelt dem des Tischtennis: Ein Punkt (Ball) bewegt sich auf dem Bildschirm hin und her. Jeder der beiden Spieler steuert einen senkrechten Strich (Schläger), den er mit einem Drehknopf (Paddle) nach oben und unten verschieben kann. Lässt man den Ball am Schläger vorbei, erhält der Gegner einen Punkt (Quelle: Wikipedia). 1Bildschirmansicht Pong. Quelle: de.pong-2.com 1.1. Videospiele vom simplen Geschicklichkeitsspiel zum vielschichtigen Geschichtenerzähler Als erstes Videospiel überhaupt, darf das Spiel «Tennis for two» angesehen werden. Es wurde 1958 in einem Forschungszentrum für Kernenergie im Bundesstaat New York als Nebenbeschäftigung entwickelt, jedoch nie verkauft. Dennoch war mit «Tennis for two» der Grundtyp aller Videospiele geboren: ein Bildschirm an den zwei Handcontroller angeschlossen sind (Bild 3). 3 Tennis for two. Quelle: www.m-e-g-a.org 2 Spielkonsole Pong von Atari. Quelle: Wikipedia Während die ersten Videospiele vor allem sportliche Geschicklichkeitsspiele waren, sind die heutigen Games komplexe virtuelle Welten, in denen sich Spieler*innen frei bewegen- und individuelle Abenteuer bestehen können. Dank der globalen Vernetzung über das Internet, entstehen Gamer Communitys in denen ganze Teams gegeneinander antreten. Computerspiele sind damit zu einer der wichtigsten Freizeitaktivitäten für Jugendliche geworden und haben eine Weltweite Industrie entstehen lassen, welche eng mit der Filmindustrie verbunden ist. Trotz dieser weitreichenden Entwicklung geht es auch beim Gaming der heutigen Zeit im Wesentlichen um die Fähigkeit, mit einem Steuergerät ein Ziel anzusteuern und durch Drücken eines Buttons treffen. Mit dem Arduino Mikrocontroller und einem Neopixel Streifen wollen wir genau dies tun und das Spiel «Pong» auf einfache Art selber bauen und programmieren. 2. Recherche Schaue das Video «Tennis fort wo» youtu.be/s2E9iSQfGdg Spiele «Pong» online unter de.pong-2.com/ Schaue die Sendung «Medienkompetenz: Games» unter srf.ch/sendungen/myschool/games-2 (15 Min.) und finde heraus: welcher Spielertyp bist du? 3. Material Neopixel Stripe mit 71 Pixeln (letzten Pixel abschneiden, damit der Stripe einen Mittelpunkt hat) Mikrocontroller «Pixel» oder «Komfort» Zwei Schalter an den Sensoreingängen S1 und S2 Zwei Potentiometer an den Sensoreingängen S3 und S4 1 Powerbank 4. Aufgabe Pong bauen und programmieren Baue und programmiere «Pong» nach der nachfolgenden Anleitung. Entwickle ein Gehäuse/Spieltisch für das Spiel welches durch sein Design eine eigene Geschichte rund um das Spiel erzählt. Erfinde eigene Erweiterungen und Zusatzfunktionen und gebe dem Spiel einen eigenen Namen. 4.1. Anschlussschema mit Mikrocontroller «Pixel» Um Pong zu bauen brauchst du einen Mikrocontroller, einen Neopixel Stripe mit 71 Pixeln und einen oder zwei Schalter (single oder two-player Modus). Im Anschlussschema siehst du wie die Teile verbunden werden. Für das Verlöten der Komponenten folge diesen Videos: Schalter und Litzen löten: Video 1 Mikrocontroller Pixel löten: Video 2 Die beiden Potentiometer brauchst du nur anzuschliessen, wenn du eine der Erweiterungen aus Kapitel 7 umsetzen möchtest. 4 Anschlussschema (Quelle: 4.2. Aufbau des Programms in 4 Ebenen Um das Pong-Programm besser zu verstehen, stellen wir uns den Neopixel-Stripe als mehrere übereinander gelagerte Ebenen vor. Als Betrachter siehst du immer das, was von oben her sichtbar ist, wenn du dir die dunkeln Pixel transparent vorstellst. Damit funktionieren Neopixel-Ebenen gleich wie Photoshop-Ebenen. Ebene 1: Der Ball läuft auf dem Neopixel-Stripe hin und her. An den Enden gibt es je eine Abprall-Zone Ebene 2: An den Enden des Neopixel-Stripes gibt es zwei Schläger Optionen in Ebenen 3 und 4: Ebene 3: Der mittlere Pixel symbolisiert das Netz Ebene 4: Alle Pixel leuchten grün. Das ist der Rasen im Hintergrund Abprall-Zone 2 Ball Abprall-Zone 1 Ebene 1 «Ball» Ebene 2 «Schläger» Ebene 3 «Netz» Ebene 4 «Rasen» 1 2 3 4 68 69 70 71 4.3. Ebene 1: den Ball auf dem LED-Stripe hochlaufen lassen Da in «Pong» mehrere Dinge gleichzeitig ablaufen sollen, programmieren wir mit der Technik des Multitaskings. Lerne unter workshop.pglu.ch Sketch Zeit-in-ms, wie das mit Arduino funktioniert. Der Ball (ein Pixel) soll sich alle 10ms einen Pixel nach rechts verschieben. Dies machst du mit der einfachen Rechnung: PositionPosition1 Später sollen zeitlich parallel zu dieser Verschiebung noch die beiden Taster (Schläger 12) abgefragt werden, ob sie gedrückt sind. Sobald dein Programm zwei Dinge gleichzeitig tun muss, spricht man von Multitasking. Das ist der Grund, weshalb dieser Programmteil auf den ersten Blick etwas kompliziert aussieht. Mehr dazu erfährst du unter workshop.pglu.ch Sketch Zeit-in-ms. 5 Den Ball Pixel für Pixel den Stripe hochlaufen lassen (Multitasking fähig) 4.4 Ebene 1: Der Ball wechselt die Laufrichtung, wenn eine der Abprall-Zone erreicht wird An beiden Enden des Stripes befinden sich Abprall-Zonen. Erreicht der Ball eine solche Zone, soll er automatisch seine Laufrichtung ändern: Abprall-Zone 1: Pixel 01 05 Abprall-Zone 2: Pixel 67 71 1 2 3 4 Abprall-Zone 2 Ball Abprall-Zone 1 5 67 68 69 70 71 In Bild 5 geschieht das Hochlaufen des Pixels mit diesem Block: Erweitere diesen Block so, dass die Position des Balls bei Erreichen der Abprall-Zone 2 um «1» vermindert wird. Dies programmierst du, indem das Vorzeichen der Zahl «1» vertauscht wird (/-). Damit der Ball rückwärtslaufen kann, brauchst du also die Rechnung: PositionPosition-1 anstatt PositionPosition1 Um die Laufrichtung genau an den Enden des LED-Stripes zu wenden, müssen folgende Fragen gestellt werden: Wenn Position kleiner als Beginn Abprall-Zone 1 (Pixel 5), dann wende die Laufrichtung Wenn Position grösser als Beginn Abprall-Zone 2 (Pixel 67), dann wende die Laufrichtung Gebe den Variablen einen sinnvollen Startwert Neu Wende die Laufrichtung des Balls bei Erreichen der Abprall-Zone 1 Wende die Laufrichtung des Balls bei Erreichen der Abprall-Zone 2 6 Programm für automatisches Pingpong 4.5 Ebene 1: Die Laufrichtung wechseln, wenn die Abprall-Zonen erreicht sind und der Button gedrückt ist Bis jetzt hast du die Laufrichtung des Balls dann geändert, wenn die Abprall-Zonen erreicht wurden. Damit das Programm aber zu einem echten Geschicklichkeits-Spiel wird, bauen wir noch eine zweite Bedingung ein, die zum Wenden des Balls erforderlich ist: 1. Der Ball muss sich in der Abprall-Zone befinden (das haben wir ja schon programmiert) und 2. Der Button an Sensor 1 muss gedrückt sein Neu 7 Grundprogramm Pong mit 1 Button für single player Modus Dies ist das Grundprogramm, welches den Tennisball hin- und herfliegen lässt, sobald der Button gedrückt wird. Kannst du dir aber vorstellen, was geschieht, wenn der Button nicht gedrückt wird und der Ball ins Out geht? In diesem Fall läuft dein Programm nämlich ganz normal weiter, ausser dass du keinen Ball mehr siehst. Dieser befindet sich eben im Out, was bedeutet, dass die Variable «Position Ball» ins unendliche hochgezählt wird, bis du den Button drückst. Teste das! 5. Zusatzfunktion: Fehleranzeige und automatischer Neustart Dein Spiel ist nun fertig programmiert aber noch nicht perfekt. Was geschieht, wenn du beim Spielen einen Fehler machst und den Ball verpasst? Füge darum diese Frage ein. Sie lässt den ganzen Stripe für 1 Sekunde rot leuchten (Fehler), sobald der Ball den Tennisplatz verlässt und versetzt den Ball wieder in die Ausgangsposition in der Mitte des Spielfeldes! Du kannst diese Einstellung auf «LED-Strip» lassen, da die Fehleranzeige (ganzer Strip rot) nur aus einer Farbebene besteht. Reduziere mit 40% den Stromverbrauch, um Flackern zu vermeiden 5.1. Ebenen 2-4: Grüner Hintergrund, orange Schläger und hellblaues Netz Füge deinem Spiel einen grünen Hintergrund (Rasen/Pingpongtisch) und ein Netz in der Mitte hinzu. Setze dafür diese Blöcke zuoberst in deinen Hauptloop ein! Grüner Rasen Netz Schläger 2 Schläger 1 6. «Pong-1D Deluxe» als Video auf Vimeo anschauen Kopiere diesen Code und füge ihn in den PGLU-Editor Code XML ein: LaufrichtungPosition BallTempoSteigerung TempoZeitstempel71100Laufrichtung1Position Ball36Tempo1011MODE217112010020MODE236122550100MODE26931510060MODE2131510060MODE2Position Ball11200100GTMINUSZeitstempelMINUSTempoSteigerung TempoPosition BallADDPosition BallLaufrichtungZeitstempelANDLTEPosition Ball5STANDARDSENSOR1LOWMODE21760100100Laufrichtung1Tempo640ANDGTEPosition Ball67STANDARDSENSOR1LOWMODE265760100100Laufrichtung-1Tempo640ORLTPosition Ball1GTPosition Ball71TempoADDTempo0.1Steigerung TempoADDSteigerung Tempo0.0003grüner RasenNetzSchläger 2Schläger 1BallPosition des Balls im Verlauf der ZeitAbfrage Schläger 1Wende der LaufrichtungAbfrage Schläger 2Wende der LaufrichtungFehler, falls Ball im OutLässt Ball in der Luft langsamer werdenLässt Spiel mit der Zeit schneller werdenFehleranzeigeMODE1171010040Tempo10Position Ball36Steigerung Tempo01000Unterprogramm Fehler Auch diese Version hat noch Schwächen: Wird der Button ständig niedergehalten, kann nie ein Fehler passieren und der Ball fliegt ewig hin und her. Ändere das, indem du das Programm so erweiterst, dass ein Drücken des Buttons ausserhalb der Abprall-Zone zu einem Fehler führt! 7. Erweiterungen Programmiere Erweiterungen, die das Spiel spannender machen: Beschleunigung des Spiels mit zunehmender Spieldauer Die Möglichkeit, den Schläger für einen Angriff (Volley) mit einem Potentiometer zum Netz zu verschieben Zweispieler Modus und Punktezähler Ein zweiter Ball, der nach einer bestimmten Zeit ins Spiel kommt Soundeffekte (siehe workshop.pglu.ch/Aktor/Piezo-Element) 8.1. Zeit 4-16 Lektionen (Je nach Bau und Design) 8.2. Erforderliche Komponenten für diese Aktivität Neopixel Stripe mit 72 Pixeln Mikrocontroller «Pixel» oder «Komfort» Zwei Schalter an S1 und S2 Zwei Potentiometer an S3 und S4 1 Powerbank Mac oder PC mit USB-Anschluss 8.3. Mikrocontroller mit dem PC verbinden Video Arbeiten zu Hause Video Arbeiten in der Schule mit Lerngruppen 8.4. Erforderliche Komponenten für alle Aktivitäten der Serie Mikrocontroller «Komfort» Sensor Schalter Sensor Potentiometer Sensor Mikrofon Sensor Ultraschallsensor Aktor Neopixel Jumper Kabel Stecker-Buchse PC oder Mac mit USB Schraubenzieher Grösse 0 oder 1 Klebstreifen 9. Unterstützung Impressum PGLU.CH Seminarstrasse 68 5430 Wettingen