Textfeld:

Kegeln auf Java

Bericht

Im PPS Vom Spiel zur Wissenschaft ging es darum, Spiel und Wissenschaft zu verknüpfen. Es sollte ein Spiel entwickelt werden, das dem Spieler einen wissenschaftlichen Zusammenhang näher bringt. Dabei sollte es nicht zu schwer sein, so dass er gleich wieder aufhört zu spielen, aber auch nicht so leicht, dass es langweilig wird.


Nachdem wir die Gruppen gebildet hatten, brauchten wir als erstes natürlich eine Idee, was wir denn konkret machen wollen. Wir liessen uns von einigen alten Projekten inspirieren und kamen zuerst auf die Idee einer Kugelbahn. Bei der ersten Besprechung liessen wir diese Idee aber wieder fallen und uns wurde vorgeschlagen, ein Kegel- oder Bowlingspiel zu entwickeln, da dieses, ebenfalls auf Mechanik beruhende Spiel, doch mehr praktische Anwendungen aufwies. Ziel des Spiels sollte es sein, alle Kegel eines Levels stets mit einem Strike, das heisst alle Kegel mit einer einzigen Kugel, abzuräumen, danach würde jeweils das nächste Level kommen. Wir entschieden uns, Java als Programmiersprache zu verwenden und entwickelten darauf ein Java-Applet, hierbei war der Inhalt der parallel laufenden Informatik II Vorlesung sehr nützlich.


Die nächste Frage war, wie man ein Kegelspiel richtig modellieren will. Zunächst befassten wir uns mit der Kugel. Ein Kegelspieler steuert sein Spiel ausschliesslich über die Kugel, indem er diese richtig nach vorne wirft. Diesen Umstand modellierten wir mit verschiedenen Eingabeparametern, die im Spiel als Schieberegler implementiert wurden. Wir waren uns einig, dass es hierbei vier Werte benötigte: Einmal die Anfangsposition der Kugel, dann den Winkel, in welchem die Kugel geworfen wird. Weiter sollte man die Geschwindigkeit der Kugel bestimmen können. Der letzte Wert schliesslich ist der Drall, welcher die Kugel nach links oder rechts abdriften lässt. Zusätzlich bauten wir noch zwei Buttons ein, ein ‘run‘-Button um die Kugel starten zu lassen und ein ‘reset‘-Button, um die Situation zurückzusetzen.


Als nächstes mussten wir die Kegel implementieren, was sich als den herausfordernste Teil des ganzen Spiels herausstellte. Während wir die Kugel auf der zweidimensionalen Spielbahn als Kreis modellieren konnten, waren die Kegel nur solange Kreise, wie sie stehen blieben. Beim Umfallen interpretierten wir sie als zwei verbundene Kreise mit maximalem Abstand. Anschliessend mussten noch Funktionen her, um den Zusammenprall mit Kugel und anderen Kegeln darzustellen. Das Mühsame dabei war, dass die Kegel meistens mit einem gewissen Winkel zur Bahn stehen, weshalb die Abfrage, ob die Kugel den Kegel trifft nur nach einer Koordinatentransformation als triviale Intervallabfrage implementiert werden kann. Nach einigem Experimentieren und Ausmerzen von Fehlüberlegungen im Code schien das ganze dann auch endlich zu funktionieren.


Wir programmierten nun einige Levels, dabei fiel auf, dass es ungemein schwer ist, alle Kegel immer mit einem Strike abzuräumen, ebenfalls war es frustrierend für den Spieler, immer wieder von vorne anzufangen. Wir definierten, dass für jedes Level 3 Kugeln zur Verfügung stehen und dass man bei 3 Fehlversuchen höchstens 5 Levels zurückgeworfen wird. Der ‘reset‘-Button wurde durch ein ‘next ball‘- bzw. ‘next level‘- Button ersetzt.

Wir führten das Spiel danach Prof. C. Hafner vor. Wir bekamen noch Vorschläge für schiefe und gewölbte Bahnen, ebenso für krumme Bahnen, Dellen in der Bahn und für schwarze Kegel, die man nicht treffen darf. Einige dieser Ideen hatten wir dann auch umgesetzt: Für die Levels lässt sich die Bahn nach links und nach rechts neigen. Ebenso ist es möglich, eine Art U-Wölbung zu generieren sowohl nach innen als auch nach aussen. Eine konkave oder konvexe Delle mit variablem Radius konnte ebenfalls irgendwo auf der Bahn plaziert werden. Auch die schwarzen Kegel haben wir umgesetzt. Insgesamt wurde das Spiel dadurch abwechslungsreicher und sicherlich auch attraktiver. Allerdings wurde auch das Spiel-Niveau um einiges schwerer, weshalb wir uns einigten, bei einem Fehlversuch nur das jeweilige Level zu wiederholen und nicht mehrere Level zurückgeworfen zu werden.


Das Kegelspiel ist nun fertig und besitzt 20 relativ abwechslungsreiche Levels mit unterschiedlichsten Schwierigkeiten, aber insgesamt konstant ansteigendem Schwierigkeitsgrad. Der wissenschaftliche Hintergrund ist die Anwendung der Theorien der Newtonschen Mechanik, ähnlich wie sie auch beim Billard vorkommen. Als schönes Beispiel wären die Levels mit Wölbung zu nennen, wo mit der Kugel anschaulich eine Schwingung erzeugt werden kann.

 2007 Biber & PhiSch