1.4 Die Dokumentation ..................................................................................................
1.5 Die Community ..........................................................................................................
1.6 Die Entwicklungsumgebung (IDE) ...........................................................................
8
2 Ball – Einstieg in die Spiele programmierung
3 Pong – mal anders
4 Snail – Bitmaps einbinden
5 Flappy Bird – Spielspaß mit Game Engine
6 Anhang
1
1
1
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 310223-0 Spieleprogrammierung mit dem Arduino_03.indd 314.09.2016 08:37:5414.09.2016 08:37:54
4
EINFÜHRUNG
1
Vor Ihnen liegen die Bauteile für das Spielepaket. Neben der Schnellstartanleitung fi nden Sie vor sich das LCD-Display-Shield und das JoypadShield. Beide Platinen wurden speziell für den Arduino Uno entwickelt
und passgenau abgestimmt. Sie ermöglichen Ihnen, die vorgestellten
Beispiele auszuprobieren oder eigene Spiele zu entwickeln. Schauen Sie
sich die beiden Shields einmal genauer an. Es gibt viel zu entdecken.
1.1 | Das Display-Shield
Das Display-Shield
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 410223-0 Spieleprogrammierung mit dem Arduino_03.indd 414.09.2016 08:37:5414.09.2016 08:37:54
Bei dem Display-Shield handelt es sich um eine Platine, die das LCD-Display 12864 LCD ST7565 zusammen mit zwei Hardwarebuttons Arduinokompatibel macht. Das Display hat eine Aufl ösung von 128 x 64 px und
wird über SPI (Serial Peripheral Interface) angesteuert. Zu den techni-
schen Daten:
Display-Shield Arduino-Uno-kompatibles Shield
Display DXDCG12864-4330
Displaycontroller ST7565
Aufl ösung 128 x 64 px
Betriebsspannung 3,3 V
Peripherie 2 Onboard-Taster (an A4 und A5)
Displaygröße 38 x 20 mm
Sonstiges verkürzte Bauform – 14 freie I/O-Ports am Arduino
Sie müssen sich allerdings nicht allzu sehr in die Details der Displayansteuerung einarbeiten, denn eine Library nimmt Ihnen den Großteil der
Arbeit ab, sodass Sie sich voll auf die Programmierung von Spielen konzentrieren können. Wenn Sie Interesse an detaillierteren Informationen
rund um die Ansteuerung des Displays und dessen Eigenschaften haben, empfehle ich Ihnen das Lernpaket „Franzis Maker Kit Grafi kdisplays
programmieren“.
1.2 | Das Joypad-Shield
5
Das Joypad-Shield
Das Joypad-Shield wurde speziell für dieses Projekt entwickelt, und es
ermöglicht Ihnen, Spiele praktisch und intuitiv zu bedienen. Es befi nden
sich sechs Buttons auf dem Shield. Vier davon sind zu einem Steuerkreuz angeordnet, sodass Richtungen intuitiv eingegeben werden können. Zwei weitere Buttons werden individuell dem Spiel entsprechend
mit Funktionen belegt. Insgesamt haben Sie also acht Buttons zur Verfügung, mit denen sich eine ganze Menge Spiele und Funktionen realisieren lassen.
Neben den Buttons ist auch noch ein kleiner Piezo-Schallwandler als
Lautsprecher auf der Platine verbaut. Sie können also nicht nur über das
Display Informationen übermitteln, sondern auch akustisch Feedbacks
geben. Zu den technischen Daten:
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 510223-0 Spieleprogrammierung mit dem Arduino_03.indd 514.09.2016 08:37:5414.09.2016 08:37:54
6 1 | Einführung
g
g
-
g
g
0
ese
ebseite:
1.3 | Montage
Wie eingangs erwähnt, passen beide Shields optimal auf einen Arduino
Uno. Dabei sollten Sie darauf achten, dass das Display-Shield mit den
oberen Steckplätzen des Arduino Uno exakt abschließt.
Das Joypad-Shield passt dann genau auf die unteren Steckleisten, wie
in der Abbildun
Handhabun
in die Hand nehmen und bedienen.
zu sehen ist. In dieser Konstellation haben Sie die beste
und können den Arduino auch zusammen mit dem Shield
1.4 | Die Dokumentation
Diese Schnellstartanleitung liefert Ihnen erste Informationen und einfa
che Beispiel für einen gelungenen Einstieg in die Spieleprogrammierung.
Den Hauptteil der Informationen fi nden Sie in dem online verfü
Handbuch zur Spielepro
erunterladen unter:
-
Zusätzlich zu dem Handbuch fi nden Sie dort auch die benötigte Library
nd die vorgestellten Beispiele.
rammierung. Sie können das vollständige PDF
ttp://www.buch.cd
Der dazugehörige Code lautet
baren
1.5 | Die Community
ls Erweiterung zu dem Projekt fi nden Sie zusätzliche Informationen
h auf di
ttp://tiny.systems/spielekonsole
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 610223-0 Spieleprogrammierung mit dem Arduino_03.indd 614.09.2016 08:37:5514.09.2016 08:37:55
r W
1 | Einführung 7
g
d
h-
j
.
g
duino
ebs-
:
j
g
-
g
n
-
.
-
-
g
-
0
auf
n
g
Hier können Sie nicht nur auf zukünftige Updates zur Library oder den
rammen zugreifen, sondern auch auf einige weiterführende Projekte
Pro
Informationen der beiden Autoren. Darüber hinaus werden hier wic
un
tige Onlinetools bereitgestellt, die Sie für die Bearbeitung Ihrer eigenen
und der Beispielpro
ekte benötigen
1.6 | Die Entwicklungsumgebung (IDE)
Damit Sie überhaupt etwas entwickeln können, benötigen Sie zunächst
ine möglichst einfach zu handhabende Entwicklungsumgebung (kurz:
IDE) sowie eini
-IDE verwendet. Sie fi nden die aktuellste Version für Ihr Betri
Ar
system auf der Seite
www.Arduino.cc/Downloads
e Tools. Als IDE wird hier die bekannte und oft genutzte
Wir haben in unseren Pro
Anleitun
en in diesem Buch sollten auch mit neueren Versionen funkti
ekten mit der Version 1.6.7 gearbeitet, aber die
nieren. Nach dem Download und der Installation der Umgebung wählen
Sie noch das richti
e Board und den richtigen Port unter Einstellunge
aus, und schon können Sie Ihren Arduino bzw. Ihre Spielkonsole pro
rammieren
Neben Arduino werden noch ein paar andere Tools genutzt, unter ande
rem eine Software zum Erstellen und Bearbeiten von Grafi ken. In die
sem Buch wurden sowohl das Windows-Programm Paint als auch der
Open-Source-Editor Gimp verwendet. Mit einem Onlinetool auf tiny.systems können Sie schließlich diese Grafi ken in ein kompatibles Format
umwandeln – doch dazu später mehr.
Zunächst ist es noch wichti
spiele von der Seite
ttp://www.buch.cd.
, dass Sie die Library inklusive der Bei
er dazugehörige Code lautet
10223-
herunterladen und installieren. Zum Installieren der Library müssen Sie
infach die Zip-Datei über den Library-Manager einbinden. Klicken Sie
zu
Sketch -> Bibliothek einbinden -> .Zip-Bibliotheknzufüge
und wählen Sie dort die eben heruntergeladene Library-Zip-Datei aus.
Schon sollte unten eine Erfol
smeldung erscheinen.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 710223-0 Spieleprogrammierung mit dem Arduino_03.indd 714.09.2016 08:37:5514.09.2016 08:37:55
8 1 | Einführung
g
i-
g
g
,
o.
g
g
1.7 | Hardwaretest
Die IDE und die Beispielprogramme sind nun eingerichtet – Zeit, das erste
ramm auf den Arduino zu laden. Öffnen Sie dazu über
Pro
spiele -> GameEngine -> Starter das erste Programm und klicken Sie
auf den Upload-Button. Nach kurzer Zeit sehen Sie eine Erfol
nten im Debug-Fenster. Das Display sollte nun in etwa so aussehen wie
auf der Abbildun
Buttons direkt unterhalb des Displays herum. Auf diese Weise stellen Sie
den Kontrast des Displays ein und beheben damit die wahrscheinlichste Ursache dafür
ichts auf dem Display zu erkennen sein, überprüfen Sie die Position der
iden Shields auf dem Arduin
atei -> Be
smeldung
unten. Ist das nicht der Fall, spielen Sie mit den beiden
dass Sie noch nichts sehen können. Sollte dennoch
Stellen Sie nun den für Sie optimalen Kontrastwert ein und merken Sie sich
diesen Wert. In den fol
en, damit das Display auch immer gut lesbare Anzeigen liefert.
eintra
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 810223-0 Spieleprogrammierung mit dem Arduino_03.indd 814.09.2016 08:37:5514.09.2016 08:37:55
enden Projekten müssen Sie ihn in das Programm
1 | Einführung 9
g
-
g
r
g
In diesem Beispielpro
ramm können Sie außerdem die verschiede
nen Funktionen der Shields testen. Drücken Sie beispielsweise einen
Joypad-Button, wird dieser auf der Anzei
e hervorgehoben. Auch den
Sound können Sie testen. Sie sollten nun also die volle Funktionalität alle
Komponenten überprüfen, bevor es richti
losgeht.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 910223-0 Spieleprogrammierung mit dem Arduino_03.indd 914.09.2016 08:37:5614.09.2016 08:37:56
10
{
l(ball
);
;
;
;
;
BALL EINSTIEG
2
IN DIE SPIELE
PROGRAMMIERUNG
Sie haben nun also alles eingerichtet und getestet –
Zeit, sich der tatsächlichen Spieleentwicklung zu widmen. Öffnen Sie dazu das Beispielprogramm Ball über
Datei -> Beispiele -> GameEngine -> Ball.
In diesem ersten, einfachen Beispielprogramm geht es
um das Zeichnen und Bewegen eines einfachen Ob-
jekts, eines Balls. Passen Sie zunächst den Kontrast
in der Programmzeile 9 an. In dieser Zeile befi ndet sich innerhalb der
Setup-Routine der Befehl engine.init(20). Die Zahl 20 in den Klammern
können Sie durch Ihren individuellen Kontrastwert ersetzen. Dies wird
auch in den folgenden Projekten nötig sein. Anschließend können Sie
das Programm auf den Arduino laden. Nach erfolgreichem Upload sehen
Sie ein einfaches Objekt in der Mitte des Displays. Doch wie wurde dies
programmiertechnisch realisiert?
001void drawBall()
002 engine.drawPixe
3 engine.drawPixel(ballX + 1, ballY)
004 engine.drawPixel(ballX - 1, ballY)
5 engine.drawPixel(ballX, ballY + 1)
006 engine.drawPixel(ballX, ballY - 1)
}
X, ballY
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1010223-0 Spieleprogrammierung mit dem Arduino_03.indd 1014.09.2016 08:37:5614.09.2016 08:37:56
Mit der Funktion, die den passenden Namen drawBall() trägt, wird der
Ball auf das Display gebracht. Es sind nur ein paar einfache Zeilen notwendig, um die passenden Pixel auf dem Display zu aktivieren. Dies liegt
vor allen daran, dass die meiste Arbeit im Hintergrund von der Game
Engine übernommen wird. Die aktuelle Position des Balls ist über die Variablen ballX und ballY bekannt. Durch die drawPixel()-Funktionsaufrufe,
die an der aktuellen Position des Balls und in seiner direkten Umgebung
des Balls die Pixel aktivieren, wird der gesamte Ball gezeichnet. Sie können die Form des Balls auch anpassen, indem Sie variieren, welche Pixel
rund um die Ballposition ebenfalls aktiviert werden sollen. Beachten Sie,
ll() {
;
;
;
5
{
)){
1;
}
{
;
}
dass sich in der oberen linken Ecke das Pixel mit der Position 0,0 befi ndet.
001void moveBa
002 ballX = ballX + 1
ballX = ballX % 128
ballY = ballY % 64
00
11
Mit der Funktion moveBall() wird schließlich Bewegung in den Ball gebracht. Jedes Mal, wenn diese Funktion aufgerufen wird, erhöht sich die
x-Position des Balls um 1. Im Klartext bedeutet dies, dass sich der Ball
auf dem Display nach rechts bewegt. Die beiden Zeilen darunter sorgen
dafür, dass der Ball nicht die Dimensionen des Displays verlässt.
Über die Modulo-Funktion ist gewährleistet, dass die x-Koordinate nie
größer als 128 sein kann und die y-Koordinate nie größer als 64 – also
genau entsprechend den 128 x 64 Pixeln, die Ihnen auf dem Display zur
Verfügung stehen.
001void controlBall()
if(engine.joypad.isPressed(UP
ballY = ballY -
if(engine.joypad.isPressed(DOWN))
006 ballY = ballY + 1
007
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1110223-0 Spieleprogrammierung mit dem Arduino_03.indd 1114.09.2016 08:37:5614.09.2016 08:37:56
12 2 | Ball – Einstieg in die Spiele programmierung
g
g
g
g
-
g
erden.
{
()){
;
{
}
ll()
9
g
-
()
-
ber die controlBall()-Funktion können Sie nun den Ball auch steuern.
Die Tasten des Joypads werden dabei auf einfache Weise ab
ine.joypad.isPressed(UP) gibt den Wert TRUE zurück, wenn
erade gedrückt ist. Dann wird die y-Position des Balls um ein
ert, was zur Folge hat, dass sich der Ball dem oberen Dis-
;
2
Funktion en
die Taste
Pixel verrin
layrand nähert. Analog dazu gibt es die Funktion engine.joypad.isPres
ed(DOWN). Sie können also über die Richtungstasten nach oben und
nten die Höhe des Balls beeinfl ussen, während er sich auf dem Display
ach rechts bewegt. Erreicht er das eine Ende des Displays, erscheint er
wieder am anderen Ende. Damit diese drei Funktionen
pielen, müssen sie an passender Stelle in der loop-Routine aufgerufen
Dazu gibt es in Arduino die loop-Funktion, die dauerhaft durchläuft. Über
die Funktion en
tionen, wie das Zeichnen des Balls und das Auswerten der Tasten, ausge-
ührt wurden, bevor der nächste Durchgang durchlaufen wird. Die Funk-
tion moveBall
ur alle 20 Frames aufgerufen. Es wird also zunächst 20-mal der Inhalt
des Displays aktualisiert, bevor sich die Position des Balls verändern darf.
Der Grund dafür ist, dass sich der Ball sonst viel zu schnell bewegen wür
de.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1210223-0 Spieleprogrammierung mit dem Arduino_03.indd 1214.09.2016 08:37:5614.09.2016 08:37:56
ine.update() wird sichergestellt, dass alle Engine-Funk
hat allerdings noch eine weitere Einschränkung – sie wird
2 | Ball – Einstieg in die Spiele programmierung 13
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1310223-0 Spieleprogrammierung mit dem Arduino_03.indd 1314.09.2016 08:37:5614.09.2016 08:37:56
14
PONG MAL
3
ANDERS
In dem nun folgenden Beispielprogramm geht es um das bekannte Spiel
Pong, allerdings etwas anders, als Sie es vermutlich kennen. Anstatt einen der Schläger zu bedienen, beeinfl ussen Sie hier den Ball durch die
Richtungstasten. Ganz nebenbei lernen Sie zudem neue Elemente der
Spieleprogrammierung kennen.
Pong wurde 1972 von Atari veröffentlicht und ist eines der bekanntesten Spiele überhaupt. Es ist angelehnt an das Spiel Ping Pong oder auch
Tischtennis. In der klassischen Version spielen zwei Spieler gegeneinander. Auf den beiden gegenüberliegenden Seiten eines virtuellen Spielfelds gibt es je einen Schläger in Form eines Strichs. Ein Ball bewegt sich
nun über den Bildschirm, und der Spieler muss versuchen, mit seinem
Schläger den Ball abzuwehren und in Richtung des Gegners zurückzuspielen. Gelingt ihm das nicht, bekommt der Gegner einen Punkt.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1410223-0 Spieleprogrammierung mit dem Arduino_03.indd 1414.09.2016 08:37:5614.09.2016 08:37:56
In dieser Version spielen Sie die Rolle des Balls, während die beiden
Schläger vom Computer gesteuert werden. Sie müssen versuchen, den
Ball möglichst lange im Spiel zu halten.
Das Beispielprogramm öffnen Sie mit einem Klick auf:
Das Programm enthält viel bereits Bekanntes. Auch dieses Mal gibt es
beispielsweise die Funktion drawBall(), die – abhängig von der aktuellen Position – einen Ball auf das Spielfeld malt. Analog dazu gibt es die
Funktionen drawPlayer() und drawField(), die die beiden Schläger auf
das Display zeichnen. Dabei gibt es bei drawField() noch eine neue Funk-
tion, nämlich drawValue(), die an der angegebenen Position das aktuelle
{
{
}
{
}
{
;
}
{
;
;
}
;
;
8
{
{
Level bzw. den Punktestand zeichnet. Das aktuelle Level ändert sich immer dann, wenn der Ball erfolgreich abgewehrt wurde. Dies wird über die
Funktion moveBall() überprüft.
Wie Sie sehen, gibt es verschiedene Abfragen über die Position des Balls.
Befi ndet er sich an der x-Position bei 1 oder 127, bedeutet dies, dass er
nicht erfolgreich abgewehrt wurde und am linken oder rechten Rand aus
dem Spielfeld gefl ogen ist. In diesem Fall wird die Setup-Routine aufgerufen, und das Spiel kann von vorne beginnen. Befi ndet sich der Ball an
der y-Position 1 oder 63, prallt der Ball an der oberen bzw. unteren Kante
ab, indem die collisionY-Variable negiert und somit die Richtung der Ballbewegung umgekehrt wird. In den beiden Abfragen
wird festgestellt, ob der Ball an einem Schläger refl ektiert wird, indem
überprüft wird, ob der Ball nah genug am Schläger ist und ob er auf den
Schlägers trifft. Ist dies der Fall, wird die Bewegungsvariable in x-Richtung umgekehrt und das Level erhöht.
001void movePlayer()
if (player1Y < 7)
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1510223-0 Spieleprogrammierung mit dem Arduino_03.indd 1514.09.2016 08:37:5714.09.2016 08:37:57
Damit der zeitliche Ablauf aller Funktionen gut koordiniert ist, müssen
sie in der loop-Routine nacheinander auf
isFrameCount() wird dazu verwendet, die Geschwindi
erufen werden. Die Funktion
keit von Ereignis
sen zu steuern. Die Position des Balls wird alle 10 Bildaufbauten und die
des Schlä
also häufi
ein
somit die Bewe
schwieri
ers alle 25 Bildaufbauten verändert. Die Ballbewegung wird
er aktualisiert. Zudem ist auch der Schwierigkeitsgrad hier
ebaut. Mit jedem Level wird das Updateintervall etwas kürzer und
schneller. Das Spiel wird mit der Zeit daher immer
er.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1710223-0 Spieleprogrammierung mit dem Arduino_03.indd 1714.09.2016 08:37:5714.09.2016 08:37:57
18
SNAIL BITMAPS
4
EINBINDEN
In den vorangegangenen Beispielen wurden die Spielelemente vor allem
durch Linien und Pixel dargestellt. In diesem Beispiel erfahren Sie nun,
wie Sie auch komplexere Grafi ken in ein Spiel integrieren. Dazu lernen
Sie den Onlinekonverter auf Tiny.systems kennen.
Auf der Internetseite
http://tiny.systems/article/mosaic.html
befi ndet sich ein Tool, mit dem Sie sehr einfach Zeichnungen erstellen
können. Auf dieser Webseite fi nden Sie in der Mitte eine graue Fläche.
Wenn Sie nun an eine beliebige Stelle in der Fläche klicken, aktivieren
Sie damit ein Pixel. Klicken Sie auf dasselbe Pixel noch einmal, verschwindet es wieder. Klicken Sie und halten Sie die Maustaste gedrückt,
während Sie den Mauszeiger über die Fläche bewegen. Wie Sie sehen,
können Sie so auch ganze Zeichnungen erstellen. Die Zeichenfl äche hat
zunächst eine Größe von 16 x 16 px. Für größere Zeichnungen können Sie
die Fläche durch einen Klick auf das rechte Symbol unter der Zeichenfl äche vergrößern. Sollten Sie mit Ihrer Zeichnung unzufrieden sein, können
Sie mit einem Klick auf das X die gesamte Fläche löschen.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1810223-0 Spieleprogrammierung mit dem Arduino_03.indd 1814.09.2016 08:37:5714.09.2016 08:37:57
Für den ersten Versuch können Sie eine Spielfi gur der Größe 16 x 16 px
erstellen. Wenn Sie fertig sind, klicken Sie auf den Haken unten links.
Es erscheint ein recht langer Hex-Code, den Sie in das Snail-Programm
kopieren müssen. Öffnen Sie dazu das Programm mit einem Klick auf
Datei -> Beispiele -> GameEngine -> GameEngine1 -> Snail. In Zeile 10
des Programms fi nden Sie die Variable snail, die schon mit einer anderen
Grafi k gefüllt ist. Fügen Sie anstelle der vorhandenen Hex-Zahlen nun die
neuen von der Mosaic-Seite generierten ein. Sie können das Programm
anschließend hochladen und werden feststellen, dass die von Ihnen
gezeichnete Grafi k auf dem Display erscheint (vergessen Sie nicht, den
Kontrastwert anzupassen). Mit den Richtungstasten können Sie die Grafi k über den Bildschirm bewegen. Dafür ist eine neue Funktion der Library zuständig, die drawBitmap() heißt:
engine.drawBitmap(snailX, snailY, 16, 16, snail);
Die ersten beiden Parameter der Funktion bestimmen die Position der
Grafi k auf dem Display, während die folgenden beiden die Größe der
Grafi k angeben. An letzter Stelle in der Parameterliste steht die Variable
selbst, in der Sie die Grafi kdaten hinterlegt haben. So einfach kann das
Darstellen von Grafi ken auf dem Display sein.
19
Es gibt aber noch eine zweite Möglichkeit, Arduino-kompatible Grafi kdaten mit der Mosaic-Seite zu erstellen. Vielleicht ist Ihnen der Button, der
mit Datei auswählen beschriftet ist, schon aufgefallen. Es ist nämlich
möglich, Bitmap-Dateien auf die Seite hochzuladen und automatisch
in Hex-Code formatieren zu lassen. Beachten Sie aber, dass sich nicht
alle Bitmap-Dateien so einfach konvertieren lassen. Sie müssen darauf
achten, dass es sich um ein monochromes (einfarbiges) Bitmap handelt. Am einfachsten ist es, sich selbst mit einem Malprogramm wie MS
Paint ein solches Bitmap zu erstellen. Alternativ ist z.B. das Zeichenprogramm Gimp gut dafür geeignet.
So Speichern Sie das Bild in Paint richtig.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 1910223-0 Spieleprogrammierung mit dem Arduino_03.indd 1914.09.2016 08:37:5714.09.2016 08:37:57
20 4 | Snail – Bitmaps einbinden
-
ese Date
d
,
g
Dem Beispielordner dieses Programms liegt bereits ein passend for
atiertes Bild bei. Es trägt den Namen
ie Mosaic-Seite hochladen, und als Ausgabe bekommen Sie
l. snail) auf dem Display, sobald Sie das Programm hochladen.
4
Sie auf
die Bildinformation in Form von Hex-Zahlen. Diese Hex-Zahlen kopieren
Sie nun wieder in die snail-Variable
(en
nail.bmp Di
und schon erscheint eine Schnecke
i können
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 2010223-0 Spieleprogrammierung mit dem Arduino_03.indd 2014.09.2016 08:37:5714.09.2016 08:37:57
4 | Snail – Bitmaps einbinden 21
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 2110223-0 Spieleprogrammierung mit dem Arduino_03.indd 2114.09.2016 08:37:5814.09.2016 08:37:58
22
FLAPPY BIRD
5
Flappy Birds auf
dem Display
SPIELSPASS MIT
GAME ENGINE 1
Dies ist das letzte Beispiel in dieser Schnellstartanleitung, und hier steht
in erster Linie der Spaß im Vordergrund. Bei dem folgenden Programm
handelt sich um ein kleines Geschicklichkeitsspiel, ursprünglich für
Smartphones entwickelt, das sich vor allem am Anfang des Jahres 2014
großer Popularität erfreute. Der Entwickler Dong Nguyen entschied sich
allerdings im Februar desselben Jahres, das Spiel aus den App-Stores zu
nehmen. Dennoch gibt es aktuell etliche Klone, sodass das Spielprinzip bis
heute populär ist.
Das Programm öffnen Sie über Datei -> Beispiele -> GameEngine -> Game Engine1 -> FlappyBirdClone. Ziel des Spiels ist es, mit einem kleinen
Vogel zwischen zwei Rohren hindurchzufl iegen. Das Display ist bei diesem Spiel seitlich gedreht, sodass Sie die Länge des Displays ausnutzen
können. Die Steuerung ist leicht zu merken, denn man benötigt nur den
normalerweise nach links zeigenden Hardwarebutton, mit dem man dem
Vogel einen kurzen Aufschwung geben kann. Dennoch ist eine Menge Geschicklichkeit gefragt, denn drückt man zu lange auf den Button, stößt der
Vogel oben am Kanalrohr an, der Schwung reicht nicht aus, und der Vogel
stürzt ab. Dazu erhöht sich der Schwierigkeitsgrad mit jedem Hindernis,
da die Lücke zwischen den beiden Röhren immer kleiner wird. Wenn der
Vogel scheitert, wird die Anzahl der überwundenen Hürden angezeigt. Mit
erneutem Druck auf die Taste kann man von vorne starten.
Das Programm ist ein nettes Geschicklichkeitsspiel für zwischendurch
– und zugleich Anlass für eine Menge Frust. Es macht dennoch sehr viel
Spaß, gegen Freunde im direkten Vergleich anzutreten. Damit Sie den
Controller mit dem Display auch mobil nutzen können, gibt es die Möglichkeit, eine Batterie anzuschließen. Dabei sollten Sie allerdings immer
darauf achten, die Stromversorgung nach dem Spielen wieder zu trennen,
denn das Arduino-Board ist mit ca. 70 mA ein ziemlich energiehungriger
Verbraucher.
Der Quelltext des Projekts ist sehr umfangreich und wird an dieser Stelle
nicht genauer erläutert. Es werden allerdings ausschließlich Funktionen
aus der Ihnen nun bekannten Game Engine 1 verwendet. Sie sehen also,
wie viel sich bereits mit diesen Mitteln realisieren lässt. Das eingangs erwähnte Onlinehandbuch taucht noch tiefer in die Spieleprogrammierung
ein. Es stellt weitere Spiele vor, gibt Beispiele, und auch zusätzliche GameEngines werden vorgestellt; somit erweitern sich die Arten und Möglichkeiten der Spiele. Neben einem Super-Mario-Ableger und einem Point-nClick-Adventure lernen Sie auch die wichtigsten Spielelemente kennen
und können zum Schluss Ihre ganz eigenen Spiele programmieren.
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 2210223-0 Spieleprogrammierung mit dem Arduino_03.indd 2214.09.2016 08:37:5814.09.2016 08:37:58
ANHANG
)
el
y-
)
der
ue
y-
uezeichnet eine
)
eCount
e
e
p
Eine kurze Zusammenfassung der wichtigsten Befehle der Game Engine 1:
23
6
yte contrast
0–63
update-Update der Game Engine
rawPix
drawLinebyte x1, byte y1
rawVal
drawBitmapbyte x, byte y, byte
Fram
joypad.isPressedbyte buttongibt TRUE zurück, wenn der Button
byte x, byte y (x-,
Position
(Punkt 1) byte x2,
byte y2 (Punkt 2)
byte x, byte y (x-,
Position), byte
val
width, byte height,
const byte bitmap[]
byte fram
Initialisierung des Displays mit zu
übergebendem Kontrastwert
zeichnet eine Linie zwischen den
beiden Punkten (x1, y1) und (x2, y2)
n Punktestand an einer
beliebigen Position (x, y
zeichnet eine Bitmap an Position x, y
mit der Länge (width) und der Breite
(height)
gibt TRUE zurück, wenn die in
Klammern angegebene Anzahl an
Bildern (Frames) gezeichnet wurde;
Verwendung: zeitgesteuerte Abläuf
gedrückt wird (RIGHT, LEFT, DOWN,
UP, A, B)
bee
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 2310223-0 Spieleprogrammierung mit dem Arduino_03.indd 2314.09.2016 08:37:5814.09.2016 08:37:58
erzeugt einen Beep (Ton)
Impressum
g
f
r
.
h
i
.
n
m
r
n
g
z
.
n
e
stellen be
.
2016 Franzis Verlag GmbH, 85540 Haar bei München
www.elo-web.de
Autor: Fabian Kainka und Thomas Baum
Produktmanager: Dr. Markus Stäuble
ISBN 978-3-645-10223-0
Produziert im Auftrag der Firma Conrad Electronic SE, Klaus-Conrad-Str. 1, 92240 Hirschau
lle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherun
n elektronischen Medien. Das Erstellen und Verbreiten von Kopien auf Papier, au
atenträger oder im Internet, insbesondere als PDF, ist nur mit ausdrückliche
enehmigung des Verlags gestattet und wird widrigenfalls strafrechtlich verfolgt
ie meisten Produktbezeichnungen von Hard- und Software sowie Firmennamen und
irmenlogos, die in diesem Werk genannt werden, sind in der Regel gleichzeitig auc
eingetragene Warenzeichen und sollten als solche betrachtet werden. Der Verlag folgt be
en Produktbezeichnungen im Wesentlichen den Schreibweisen der Hersteller
lle in diesem Buch vorgestellten Schaltungen und Programme wurden mit der größtmögliche
Sorgfalt entwickelt, geprüft und getestet. Trotzdem können Fehler im Buch und in
er Software nicht vollständig ausgeschlossen werden. Verlag und Autor haften in Fällen
es Vorsatzes oder der groben Fahrlässigkeit nach den gesetzlichen Bestimmungen. I
brigen haften Verlag und Autor nur nach dem Produkthaftungsgesetz wegen de
erletzung des Lebens, des Körpers oder der Gesundheit oder wegen der schuldhafte
erletzung wesentlicher Vertragspfl ichten. Der Schadensersatzanspruch für die Verletzun
wesentlicher Vertragspfl ichten ist auf den vertragstypischen, vorhersehbaren Schaden
egrenzt, soweit nicht ein Fall der zwingenden Haftung nach dem Produkthaftungsgeset
egeben ist
Elektrische und elektronische Geräte dürfen nicht über den Hausmüll entsorgt werden!
ntsorgen Sie das Produkt am Ende seiner Lebensdauer gemäß den geltenden gesetzliche
orschriften. Zur Rückgabe sind Sammelstellen eingerichtet worden, an denen Si
lektrogeräte kostenlos abgeben können. Ihre Kommune informiert Sie, wo sich solche
mmel
fi nden.
Dieses Produkt ist konform zu den einschlägigen CE-Richtlinien, soweit Sie es gemäß der
eiliegenden Anleitung verwenden. Die Beschreibung gehört zum Produkt und muss mitgegeben
werden, wenn Sie es weitergeben
10223-0 Spieleprogrammierung mit dem Arduino_03.indd 2410223-0 Spieleprogrammierung mit dem Arduino_03.indd 2414.09.2016 08:37:5814.09.2016 08:37:58
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.