8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| (33 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
{{NNavigation}} | {{NNavigation}}__NOTOC__ | ||
{{Aufgabe:Start}} | {{Aufgabe:Start|Icon=BlueJ Logo.png | ||
}} | |||
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.''' | |||
{{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 13: | Zeile 18: | ||
Im Programm sollen zwei Spieler im Wechsel ziehen können, bis einer gewonnen hat. Die Wahl des Spielfeldes erfolgt jeweils durch die Eingabe der Feldkoordinaten (siehe Abbildung) auf der Kommandozeile. | Im Programm sollen zwei Spieler im Wechsel ziehen können, bis einer gewonnen hat. Die Wahl des Spielfeldes erfolgt jeweils durch die Eingabe der Feldkoordinaten (siehe Abbildung) auf der Kommandozeile. | ||
{| | {| {{prettytable}} | ||
| (0,2) || (1,2) || (2,2) | | (0,2) || (1,2) || (2,2) | ||
|- | |- | ||
| Zeile 20: | Zeile 25: | ||
| (0,0) || (1,0) || (2,0) | | (0,0) || (1,0) || (2,0) | ||
|} | |} | ||
Die Ausgabe des Spielfeldes kann als Text auf der Kommandozeile vorgenommen werden. | |||
== Objektorientierte Modellierung == | |||
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]] | |||
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]] | |||
Die beiden Klassen oben haben etwa diese Definitionen: | |||
{{Spalten:Start}} | |||
{{Spalte| | |||
<pre> | |||
*TicTacToe* | |||
-- | |||
spielfeld: Zahl[][] | |||
-- | |||
spielErstellen | |||
spielStarten | |||
istSpielVorbei: Wahrheitswert | |||
</pre>}} | |||
{{Spalte| | |||
<pre> | |||
*Spieler* | |||
-- | |||
name: Text | |||
-- | |||
ziehen | |||
</pre>}} | |||
{{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.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. | |||
# 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> | |||
# Speichert auch dieses Diagramm im Projektordner ab und ''committed'' es in das Repository. | |||
{{Aufgabe:End}} | |||
== Umsetzungshinweise == | |||
* Für die Eingabe auf der Kommandozeile kann die Klasse [[Befehlsreferenz_Java#java.util.Scanner|Scanner]] benutzt werden. | |||
* 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. | |||
* Prüfe, ob die Eingaben der Spieler gültige Koordinaten sind und entscheide auch, wie du im Fehlerfall vorgehen möchtest. | |||
* Versuche das Spiel für die Benutzer / Spieler möglichst komfortabel zu gestalten. | |||
== Hilfestellungen == | |||
Folgende Seiten helfen dir bei der Arbeit: | |||
* [[Befehlsreferenz Java]] | |||
* [[Lernpfad:Objektorientierte Programmierung mit Java]] | |||
* [[Lernpfad:Würfelspiel in Java]] | |||
<references/> | |||
== Erweiterungen des Spiels == | |||
Hier sind einige Ideen für optionale Erweiterungen des Spiels, falls du nach Umsetzung des Basisspiels noch Zeit hast: | |||
* Implementiere einen Computerspieler. | |||
* 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}} | |||