8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| (18 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
}} | }} | ||
Implementiere mit einem Partner/einer Partnerin deiner Wahl das Spiel "Tic-Tac-Toe". Koordiniert euch dabei über ein gemeinsames Git-Repository. | Implementiere mit einem Partner/einer Partnerin deiner Wahl das Spiel "Tic-Tac-Toe". Koordiniert euch dabei über ein gemeinsames Git-Repository. | ||
(Einigt euch, wessen Repository aus dem {{Pfad|12|letzten Schritt}} ihr benutzen wollt und fügt den anderen als Mitarbeiter mit Schreibrechten hinzu: Öffne das Repository in {{Gitea}} und dann „Einstellungen“ —> „Mitarbeiter“.) | |||
'''Bearbeitet dazu zunächst die Aufgaben auf dieser Seite fertig.''' | '''Bearbeitet dazu zunächst die Aufgaben auf dieser Seite fertig.''' | ||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
Zum Abschluss der Wiederholung der | Zum Abschluss der Wiederholung der objektorientierten Programmierung mit Java sollst du nun noch ein Mini-Projekt umsetzen: das Spiel "Tic-Tac-Toe". | ||
{{Zitat| | {{Zitat| | ||
| Zeile 28: | Zeile 30: | ||
== Objektorientierte Modellierung == | == Objektorientierte Modellierung == | ||
Als ersten Schritt muss das Projekt '' | Als ersten Schritt muss das Projekt ''modelliert'' - also geplant - werden. Dazu wird die Modellierungssprache [[wikipedia:UML|UML]] verwendet. Folgendes ''Entwurfsklassendiagramm'' zeigt den Grundaufbau des Spiels. Du kannst das Modell beliebig verändern und ergänzen, wenn du möchtest. | ||
[[Datei:UML Tic-Tac-Toe.svg|center]] | [[Datei:UML Tic-Tac-Toe.svg|center]] | ||
Zur Erzeugung von UML-Diagrammen nutzen wir das Programm | Zur Erzeugung von UML-Diagrammen nutzen wir das Programm {{UMLet|link}}. Es erlaubt die Erzeugung (einfacher) UML-Diagramme aus Text-Definitionen. Wenn du {{UMLet}} öffnest, siehst du rechts eine Auswahl an UML-Elementen. Durch einen Doppelklick wird es in den Editor links übernommen. Dann siehst du unten ("Properties") die Text-Definition dieses Elements. Dort kannst du Änderungen vornehmen. | ||
[[Datei:UMLet GUI.png|center|600px]] | [[Datei:UMLet GUI.png|center|600px]] | ||
Die beiden Klassen oben haben | Die beiden Klassen oben haben etwa diese Definitionen: | ||
{{Spalten:Start}} | {{Spalten:Start}} | ||
| Zeile 59: | Zeile 61: | ||
{{Spalten:End}} | {{Spalten:End}} | ||
{{Hinweis|Hilfen zu den Methoden der UML-Modellierung findest du im Buch<ref>Informatik Band 2: ''Modellierung, Datenstrukturen und Algorithmen'', [https://www.westermann.de/artikel/978-3-14-037122-3/Informatik-Lehrwerk-fuer-die-gymnasiale-Oberstufe-Schuelerband-2 978-3-14-037122-3]</ref> auf Seite 196ff.}}{{Aufgabe:Start|Icon=Umlet. | {{Hinweis|Hilfen zu den Methoden der UML-Modellierung findest du im Buch<ref>Informatik Band 2: ''Modellierung, Datenstrukturen und Algorithmen'', [https://www.westermann.de/artikel/978-3-14-037122-3/Informatik-Lehrwerk-fuer-die-gymnasiale-Oberstufe-Schuelerband-2 978-3-14-037122-3]</ref> auf Seite 196ff.}}{{Aufgabe:Start|Icon=Umlet.png}} | ||
# Erstelle ein neues Entwurfsklassendiagramm in {{UMLet}} und füge die Klassen oben in das Diagramm ein. Modifiziere dann (gemeinsam mit deinem Partner/deiner Partnerin) das Diagramm für euer Spiel. Überlegt euch, welche ''Klassen'', ''Objektvariablen'' und ''Methoden'' ihr benötigt. Plant ggf. auch schon etwaige Erweiterungen (s.u.) mit ein. | # Erstelle ein neues Entwurfsklassendiagramm in {{UMLet}} und füge die Klassen oben in das Diagramm ein. Modifiziere dann (gemeinsam mit deinem Partner/deiner Partnerin) das Diagramm für euer Spiel. Überlegt euch, welche ''Klassen'', ''Objektvariablen'' und ''Methoden'' ihr benötigt. Plant ggf. auch schon etwaige Erweiterungen (s.u.) mit ein. | ||
# Speichert das Diagramm im Projektordner ab und | # Speichert das Diagramm im Projektordner ab und ''committed'' es in das Repository. | ||
# Transformiert das ''Entwurfsklassendiagramm'' in ein ''Implementierungsklassendiagramm''.<ref>Siehe dazu im Buch Seite 30.</ref> | # Transformiert das ''Entwurfsklassendiagramm'' in ein ''Implementierungsklassendiagramm''.<ref>Siehe dazu im Buch Seite 30.</ref> | ||
# Speichert auch dieses Diagramm im Projektordner ab und | # Speichert auch dieses Diagramm im Projektordner ab und ''committed'' es in das Repository. | ||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
== Umsetzungshinweise == | == Umsetzungshinweise == | ||
* Für die Eingabe auf der Kommandozeile kann die Klasse [[Befehlsreferenz_Java#java.util.Scanner|Scanner]] benutzt werden. | * Für die Eingabe auf der Kommandozeile kann die Klasse [[Befehlsreferenz_Java#java.util.Scanner|Scanner]] benutzt werden. | ||
* Das Spielfeld besteht aus 3-mal-3 Feldern und kann als | * Nutze für die Ausgabe die Methoden [[Befehlsreferenz_Java #Ausgaben|print, println und printf]] von System.out. | ||
** <code>printf</code> nimmt als ersten Parameter einen [http://public.beuth-hochschule.de/~grude/PrintfAppletHilfe.html Formatierungsstring] entgegen und dann so viele Werte, wie im Formatstring definiert werden. Ein Wert wird mit einem Prozentzeichen (<code>%</code>) eingeleitet, gefolgt von einem Buchstaben, der den Typ definiert: | |||
*** Text: <code>printf("%s", "String")</code> | |||
*** Ganzzahl: <code>printf("%d", 5)</code> | |||
*** Dezimalzahl: <code>printf("%f", 2.4)</code> | |||
*** Mehrere Werte: <code>printf("Hallo %s! Es ist %d Uhr.", "Hansi", 10)</code> | |||
** Zwischen <code>%</code> und Buchstabe können weitere Formatierungszeichen stehen. Zum Beispiel bedeutet eine Zahl, dass der Wert nach links mit Leerzeichen aufgefüllt werden soll, bis er so viele Zeichen hat: | |||
*** <code>printf("|%4d|", 5) // Ergibt "| 5|"</code> | |||
** Zusätzlich können in jedem String folgende Steuerzeichen vorkommen: | |||
*** <code>\n</code>: Zeilenumbruch | |||
*** <code>\t</code>: Tabulator | |||
* Das Spielfeld besteht aus 3-mal-3 Feldern und kann als [[Lernpfad:Objektorientierte_Programmierung_mit_Java/Komplexe_Arrays#Mehrdimensionale_Arrays|zweidimensionales Array]] gespeichert werden. Wählen einen geeigneten [[Befehlsreferenz_Java #Datentypen|Datentyp]] für das Array. | |||
* Hauptteil des Spiels ist die Prüfung, ob einer der Spieler gewonnen hat. Überlege dir, welche Endsituationen es im Spiel geben kann. | * Hauptteil des Spiels ist die Prüfung, ob einer der Spieler gewonnen hat. Überlege dir, welche Endsituationen es im Spiel geben kann. | ||
* Prüfe, ob die Eingaben der Spieler gültige Koordinaten sind und entscheide auch, wie du im Fehlerfall vorgehen möchtest. | * Prüfe, ob die Eingaben der Spieler gültige Koordinaten sind und entscheide auch, wie du im Fehlerfall vorgehen möchtest. | ||
| Zeile 85: | Zeile 98: | ||
* Implementiere einen Computerspieler. | * Implementiere einen Computerspieler. | ||
* Implementiere eine [[Lernpfad:Würfelspiel_in_Java/GUIs_mit_dem_Java-Editor|grafische Benutzeroberfläche]]. | * Implementiere eine [[Lernpfad:Würfelspiel_in_Java/GUIs_mit_dem_Java-Editor|grafische Benutzeroberfläche]]. | ||
* Vergrößere das Spielfeld (oder mache es [[wikipedia:Qubic|dreidimensional]]). | |||
* Implementiere eine Variante von [https://imgur.com/rR6csce Upgraded Tic-Tac-Toe]: | |||
*: {{#ev:youtube|CsWwnOvaa6Y}} | |||