Unable to load the Are You a Human PlayThru™. Please contact the site owner to report the problem.

Neugraben Online – Wir sind Neugraben

10. Dezember 2013

Selbst programmiertes Spiel

Im Programmierworkshop ist ein kleines Spiel entstanden, das wir hier vorstellen.


Ein einfaches Spiel

In unserem Workshop mit Niklas haben wir bisher gelernt, wie Computer denken, warum die WLAN-Verbindung immer so schlecht ist und vor allem an Details der Website gebastelt, die man als Besucher normalerweise nicht sieht. Dabei wurden kleine Fehler korrigiert und neue Features eingefügt und wir stellten uns so Fragen wie: Wie wird ein eingereichter Artikel verarbeitet? Wie viele Besucher waren auf der Seite? Wie viele Kommentare wurden schon geschrieben?

Jetzt haben wir zur Übung ein einfaches kleines Spiel selbst programmiert, in dem man eine Figur über ein Feld steuert, um einen Gegenstand einzusammeln und dafür Punkte zu bekommen.

Hier könnt ihr es ausprobieren! Oder holt euch eine Kopie vom Quellcode, dafür braucht ihr aber einen Webserver wie XAMPP

Wenn die Meldungen fehlerhaft angezeigt werden, müsst ihr in eurem Browser unter Ansicht->Textcodierung (oder ähnlich) auf UTF-8 einstellen!

Weil das so viel Spaß gemacht hat, wollen wir auch die nächsten Wochen noch daran weiter basteln und laden alle ein, mitzumachen.

Damit ihr direkt einsteigen könnt, beschreiben wir hier, wie das Ganze unter der Haube funktioniert:

  1. Unsichtbar, also im Speicher, wird ein Feld mit vorgegebener Größe erstellt.
    1. Dazu erzeugen wir erst einmal ein Array, das ist eine Liste von Zahlen. Beispiel: [1,2,3].
    2. Dann ersetzen wir jede Zahl wiederum mit genau so einer Liste, sodass wir eine Liste von Listen haben. Beispiel: [[1,2,3],[1,2,3],[1,2,3]].
    3. Wir können uns das Ganze vorstellen wie eine Tabelle mit Zeilen (die äußere Liste) und Spalten (die inneren Listen). Jeder Punkt in diesem Feld kann benannt werden mit der Nummer der Zeile und der Nummer der Spalte. Beispiel: [1,2] bedeutet erste Zeile, zweite Spalte.
  2. Beim ersten Aufruf des Spiels, immer noch unsichtbar, geben wir der Figur eine zufällige Position. Dazu wird eine Zahl jeweils für die Zeile und die Spalte gewürfelt, die zwischen 1 und der Größe des Felds liegt. Die Kombination wird gespeichert.
  3. Danach setzen wir den Gegenstand auf die selbe Weise und prüfen, ob die zufällige Zahl vielleicht die selbe geworden ist wie die Position der Figur. Wenn ja, wird sie neu gewürfelt und wieder geprüft, bis sie eine andere ist.
  4. Jetzt wird das Feld angezeigt. Dazu geht das Programm jede einzelne Zelle durch und vergleicht, ob sein Wert der selbe ist wie der von der Figur oder des Gegenstandes. Wenn wir auf die Figur oder den Gegenstand treffen, setzen wir das passende Bild ein, anderenfalls wird das Bild für ein leeres Feld eingesetzt. Sobald die Zeile wechselt, sehen wir auch in der Anzeige eine neue Zeile. Beispiel: Figur ist auf [1,2], Gegenstand auf [2,2]. [1,1] -> leer, [1,2] -> Figur, [1,3] -> leer, neue Zeile, [2,1] -> leer, [2,2] -> Gegenstand, usw.
  5. Es wird anschließend eine kurze Meldung über die letzte durchgeführte Aktion angezeigt sowie die Punktzahl. Am Anfang werden die Positionen gewürfelt ("Auf zufällige Positiong gesetzt...") und die Punktzahl ist null.
  6. Ganz unten wird die Steuerung angezeigt. Jeder Knopf sorgt dafür, dass die Seite neu aufgerufen und dabei der jeweilige Befehl (oben, unten, links rechts) ausgewertet wird.
  7. Wenn wir einen Knopf drücken, beginnt die Auswertung des Befehls. Das Programm wird dabei von ganz vorne ausgeführt.
  8. Das heißt, es wird wieder ein Feld erzeugt. Wir brauchen aber nicht erneut zufällig platzierte Figuren und Gegenstände, weshalb das Programm vorher noch überprüft, ob ein Befehl mitgeschickt wurde oder nicht. Wenn nicht, passiert das oben schon genannte. Wenn doch, wird der Befehl übernommen, der die letzte Position der Figur enthält und eine Anweisung, wie diese verändert werden soll. Auch die Position des Gegenstandes wird übernommen.
  9. Je nach Befehl wird die Position der Figur verändert. Beispiel: Position [1,2]. Befehl: "rechts". Der Wert für die Spalte müsste also um eins erhöht werden. Ergebnis: [1,3].
  10. Was passiert, wenn die Figur mit der Bewegung außerhalb des Feldes geraten würde? Wir müssen also auch überprüfen, ob die Veränderung einen ungültigen Wert erzeugt. Beispiel: Position [1,3]. Befehl: "rechts". Bei einem 3x3 Feld wäre das Ergebnis ungültig. Wenn das Ergebnis also größer ist als das Feld, wird die alte Position beibehalten. Eine passende Meldung wird vorbereitet: "Grenze erreicht!"
  11. Das Feld wird wie oben erklärt mit den neuen Positionen neu angezeigt.
  12. Dann gibt das Programm wieder eine Meldung über die letzte Aktion aus. Beispiel: "Nach rechts bewegt!".
  13. Der alte Punktestand wird bei Sendung eines Befehls ebenfalls übergeben. Wir ziehen einen Punkt vom Punktestand ab, denn jeder Schritt kostet einen Punkt, und geben den aktuellen Punktestand aus (momentan darf er auch negativ sein).
  14. Was, wenn die Figur mit dem aktuellen Zug auf den Gegenstand trifft? Dann wird eine entsprechende Meldung angezeigt und wir geben 20 Punkte zum Punktestand dazu. Außerdem wird eine neue zufällige Position für den Gegenstand ausgesucht, die wieder nicht mit der der Figur übereinstimmen darf.
  15. Das Spiel hat noch kein Ende, sondern man kann unbegrenzt Punkte sammeln und durch Züge abgezogen bekommen.

Es ist in Wirklichkeit noch ein bisschen komplizierter. Beispielsweise beginnt bei Arrays die Zählung bei 0 statt bei 1 und die Informationen über Punktestände, Meldungen und Befehle müssen in Variablen gespeichert werden, die wir dann bei Bedarf abrufen, miteinander vergleichen oder verändern. Außerdem muss alles nach den Regeln der Programmiersprache (hier PHP) geschrieben sein.

Wir möchten das Spiel noch um einige Features erweitern. Beispielsweise soll die Karte mit jedem gesammelten Geschenk größer werden, der Spieler verlieren, wenn er keine Punkte mehr hat und zufällig Hindernisse erzeugt werden, um die man herum gehen muss. Wenn ihr noch Vorschläge habt, könnt ihr gerne einen Kommentar schreiben oder einfach zum Treffen kommen.

Redaktion

Tags: Freizeit Redaktion

Zurück

Kommentar schreiben

Name:

Kommentar:

Eine automatische E-Mail Benachrichtigung bei weiteren Kommentaren ist bald möglich!

Kommentare zu "Selbst programmiertes Spiel"

Niklas am 12.12.2013 um 23:00 Uhr:

Man lernt am besten beim Spielen. Daher ist die Entwicklung eines Spiels spaßig, lehrreich und interessant.

Spielt es auch und kommt das nächste Mal im neuen Jahr vorbei und macht mit!



Zurück