Programmier-Projekt

Das Programmier-Projekt

In den folgenden Wochen werdet ihr - erneut - an einem Spiel arbeiten. Das Spiel soll folgende Voraussetzungen erfüllen:

  • Mindestens eine Spieler-Klasse, über die der Spieler gesteuert werden kann. Wer mag, gerne auch ein Mehrspieler-Spiel z.B. Spieler 1 WASD, Spieler 2 Pfeiltasten.
  • Mehrere weitere Klassen, z.B. eine Klasse pro Screen / Level / Gegner / Hindernis / Gegenstand, etc.
  • Ein Klasse, die den Startbildschirm mit Infos zum Spiel und den Autoren darstellt.

Abgesehen vom Code sollt ihr auch folgende Dokumente erstellen:

  • Zu jeder Klasse auch ein Klassendiagramm
  • Ein kurzer Leitfaden, wie das Spiel / Programm funktioniert

Ganz unten findet ihr eine Vorlage für Processing. Diese ist als Vorschlag zu verstehen, ihr müsst sie nicht verwenden.

Beispiel: TicTacToe
Nehmen wir als Beispiel das TicTacToe-Projekt aus der E-Phase:
  • Hier gibt es mehrere Screens:
    • Der SplashScreen zeigt am Anfang Informationen über das Spiel.
    • Der PlayingScreen zeichnet das eigentliche Spiel.
    • Der GameOverScreen erscheint, wenn das Spiel beendet ist.
    • Alle drei Screens habe die drei Methoden void draw(), void keyPressed() und void mouseClicked() gemeinsam. Das kann man in dem so genannten Interface interface Screen als Gemeinsamkeiten zusammenfassen.
    • Lediglich der PlayingScreen hat noch mehr Methoden, die für die eigentliche Spielelogik verantwortlich sind.
    • Außerdem muss der GameOverScreen den zugehörigen PlayingScreen kennen, da er diesen im Hintergrund zeichnet.
  • Ebenso gibt es zwei Spieler, Cross und Circle.
    • Diese haben ebenfalls Gemeinsamkeiten: Sie können mit void draw() gezeichnet werden und man kann mit boolean isSame(Player player) feststellen, ob ein anderer Spieler zur gleichen "Kategorie" gehört.
Screenvoiddraw()voidkeyPressed()voidmouseClicked()GameOverScreenPlayingScreenscreen;GameOverScreen(PlayingScreenscreen)voiddraw()voidkeyPressed()voidmouseClicked()SplashScreenvoiddraw()voidkeyPressed()voidmouseClicked()PlayingScreenPlayer[]gamePlayercurrentPlayerint[]winnerIndicesbooleangameIsDrawStringhighScoreTextintsizeintxOffsetintyOffsetintcellSizePlayingScreen()voiddraw()voidkeyPressed()voidmouseClicked()voiddrawBoard()voiddrawWinnerIndices()voiddrawPlayerMarkers()voidcheckWinner()voidendGame(int[]idx,Playerm,booleandraw)
Playervoiddraw(int x, int y, int xOffset, int yOffset, int cellSize)voidisSame(Playerplayer)Crossvoiddraw(int x, int y, int xOffset, int yOffset, int cellSize)voidisSame(Playerplayer)Circlevoiddraw(int x, int y, int xOffset, int yOffset, int cellSize)voidisSame(Playerplayer)