Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:q1:oop:l5-projekt

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
info:sek-ii:q1:oop:l5-projekt [2023-11-26 12:47] – [BetterBox#3] christian.weberinfo:sek-ii:q1:oop:l5-projekt [2024-01-18 12:32] (aktuell) – [BetterBox#1] yannik.wehr
Zeile 7: Zeile 7:
  
   * 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.   * 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 **Level** / **Gegner** / **Hindernis** / **Gegenstand**, etc.+  * 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.   * 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.
  
 </info> </info>
Zeile 23: Zeile 30:
     * 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.     * 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.     * 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**.   * 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.     * 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.
 </bbox> </bbox>
-<video w3>+<video w3|**Demo: TicTacToe**>
 {{ :info:sek-ii:e2:processing:screencast_from_18.06.2022_18_32_06.webm }} {{ :info:sek-ii:e2:processing:screencast_from_18.06.2022_18_32_06.webm }}
 </video> </video>
Zeile 86: Zeile 94:
  
 interface Player { interface Player {
-+ **void** draw()++ **void** draw(int x, int y, int xOffset, int yOffset, int cellSize)
 + **void** isSame(**Player** player) + **void** isSame(**Player** player)
 } }
  
 class Cross implements Player { class Cross implements Player {
-+ **void** draw()++ **void** draw(int x, int y, int xOffset, int yOffset, int cellSize)
 + **void** isSame(**Player** player) + **void** isSame(**Player** player)
 } }
  
 class Circle implements Player { class Circle implements Player {
-+ **void** draw()++ **void** draw(int x, int y, int xOffset, int yOffset, int cellSize)
 + **void** isSame(**Player** player) + **void** isSame(**Player** player)
 } }
Zeile 103: Zeile 111:
 </uml> </uml>
 </center> </center>
-<bbox white dotted collapsed center|Code> +</beispiel> 
-<tabbox TicTacToe+<lösung w1 collapsed center|**Code zur objektorientierten Variante von TicTacToe**
-<code java TicTacToe.pde>+<tabbox TicTacToeOOP
 +<code java TicTacToeOOP.pde>
 Screen screen; Screen screen;
    
Zeile 150: Zeile 159:
 } }
 </code> </code>
-<tabbox Player, Cross, Circle>+<tabbox Player>
 <code java Player.pde> <code java Player.pde>
 interface Player { interface Player {
Zeile 156: Zeile 165:
   boolean isSame(Player player);   boolean isSame(Player player);
 } }
 +</code> 
 +<tabbox Cross> 
 +<code java Cross.pde>
 class Cross implements Player { class Cross implements Player {
   void draw(int x, int y, int xOffset, int yOffset, int cellSize) {   void draw(int x, int y, int xOffset, int yOffset, int cellSize) {
Zeile 167: Zeile 178:
   }   }
 } }
 +</code> 
 +<tabbox Circle> 
 +<code java Circle.pde>
 class Circle implements Player { class Circle implements Player {
   void draw(int x, int y, int xOffset, int yOffset, int cellSize) {   void draw(int x, int y, int xOffset, int yOffset, int cellSize) {
Zeile 178: Zeile 191:
 } }
 </code> </code>
-<tabbox Playing+<tabbox PlayingScreen
-<code java Playing.pde>+<code java PlayingScreen.pde>
 class PlayingScreen implements Screen { class PlayingScreen implements Screen {
   final int[][] WINNING_COMBINATIONS = {    final int[][] WINNING_COMBINATIONS = { 
Zeile 366: Zeile 379:
 } }
 </code> </code>
-<tabbox GameOver+<tabbox GameOverScreen
-<code java GameOver.pde>+<code java GameOverScreen.pde>
 class GameOverScreen implements Screen { class GameOverScreen implements Screen {
   private PlayingScreen playingScreen;   private PlayingScreen playingScreen;
Zeile 432: Zeile 445:
 </code> </code>
 </tabbox> </tabbox>
-</bbox+</lösung> 
-</beispiel>+<lösung w1 collapsed center|**Vorlage für ein eigenes Spiel**> 
 +{{ :info:sek-ii:q1:oop:gameskeletonoop_new.zip |Vorlage}} 
 +</lösung>
 </grid> </grid>
info/sek-ii/q1/oop/l5-projekt.1700999224.txt.gz · Zuletzt geändert: 2023-11-26 12:47 von christian.weber