Hallo....gegeben sei folgende Aufgabe:
Tic Tac Toe
Entwerfen und implementieren Sie das Spiel „Tic Tac Toe“ (auch bekannt als „Dodelschach“).
Spielregeln (von http://de.wikipedia.org/wiki/Tic_Tac_Toe): Auf einem 3×3 Felder großen
Spielfeld machen die beiden Spieler abwechselnd ihre Zeichen (Kreuze und Kreise). Der Spieler,
der als erstes drei seiner Zeichen in einer Reihe, Spalte oder einer der beiden Hauptdiagonalen
setzen kann, gewinnt.
Modellieren Sie das Spielfeld, dessen 3×3 Felder entweder Kreuze oder Kreise enthalten können,
und finden Sie einen Algorithmus, der den Gewinn eines Spielers erkennt. Die Ausgabe des
Spielfeldes soll textuell auf der Konsole erfolgen.
Es gibt verschiedene Arten von Spielern, die beliebig kombiniert werden können: Eine Person gibt
den nächsten Zug auf der Konsole ein, während der Computer automatisch seinen nächsten Zug
durchführt. Dabei kann der Computer nach unterschiedlichen Regeln setzen. Implementieren Sie
zumindest zwei verschiedene Algorithmen: Beim ersten soll der Computer rein zufällig setzen,
beim zweiten die aktuelle Stellung berücksichtigen (er muss nicht perfekt spielen, soll aber keine
Trivialfehler machen).
Hinweise:
• Das Hauptaugenmerk dieser Übung ist, eine gute Klassenhierarchie und
Methodenschnittstelle zu erstellen. Sie müssen ihre Datenstrukturen und den Weg, wie sie
dazu gekommen sind, in Ihrer Abgabe argumentieren.
• Achten Sie auf die Erweiterbarkeit Ihrer Lösung. Es soll z.B. einfach möglich sein, neue
Arten von Spielern und neue Benutzeroberflächen (z.B. eine graphische Oberfläche)
hinzuzufügen.
• Für die Speicherung der Daten, z.B. des Spielfeldes, steht Ihnen die Datenstruktur frei.
Begründen Sie, warum Sie Ihre Lösung gewählt haben.
Zuerst muss ich ja mal die Klassenhierarchie entwerfen sonst kann ich ja nicht mal anfangen....und die ist nicht gerade einfach finde ich....vielleicht könnt ihr mir ein paar Tipps geben:
Ich hab mir mal gedacht dass ich eine Hauptklasse TicTacToe implementiere:
Passt das so mal oder habt ihr da noch bessere Ideen...vor allem das mit der graphischen Implementierung für
später bzw. ob ich wirklich für jeden Algo in der Klasse Computer eine eigene Klasse machen soll bereitet mir Kopfzerbrechen.....
mfg,
Han
Tic Tac Toe
Entwerfen und implementieren Sie das Spiel „Tic Tac Toe“ (auch bekannt als „Dodelschach“).
Spielregeln (von http://de.wikipedia.org/wiki/Tic_Tac_Toe): Auf einem 3×3 Felder großen
Spielfeld machen die beiden Spieler abwechselnd ihre Zeichen (Kreuze und Kreise). Der Spieler,
der als erstes drei seiner Zeichen in einer Reihe, Spalte oder einer der beiden Hauptdiagonalen
setzen kann, gewinnt.
Modellieren Sie das Spielfeld, dessen 3×3 Felder entweder Kreuze oder Kreise enthalten können,
und finden Sie einen Algorithmus, der den Gewinn eines Spielers erkennt. Die Ausgabe des
Spielfeldes soll textuell auf der Konsole erfolgen.
Es gibt verschiedene Arten von Spielern, die beliebig kombiniert werden können: Eine Person gibt
den nächsten Zug auf der Konsole ein, während der Computer automatisch seinen nächsten Zug
durchführt. Dabei kann der Computer nach unterschiedlichen Regeln setzen. Implementieren Sie
zumindest zwei verschiedene Algorithmen: Beim ersten soll der Computer rein zufällig setzen,
beim zweiten die aktuelle Stellung berücksichtigen (er muss nicht perfekt spielen, soll aber keine
Trivialfehler machen).
Hinweise:
• Das Hauptaugenmerk dieser Übung ist, eine gute Klassenhierarchie und
Methodenschnittstelle zu erstellen. Sie müssen ihre Datenstrukturen und den Weg, wie sie
dazu gekommen sind, in Ihrer Abgabe argumentieren.
• Achten Sie auf die Erweiterbarkeit Ihrer Lösung. Es soll z.B. einfach möglich sein, neue
Arten von Spielern und neue Benutzeroberflächen (z.B. eine graphische Oberfläche)
hinzuzufügen.
• Für die Speicherung der Daten, z.B. des Spielfeldes, steht Ihnen die Datenstruktur frei.
Begründen Sie, warum Sie Ihre Lösung gewählt haben.
Zuerst muss ich ja mal die Klassenhierarchie entwerfen sonst kann ich ja nicht mal anfangen....und die ist nicht gerade einfach finde ich....vielleicht könnt ihr mir ein paar Tipps geben:
Ich hab mir mal gedacht dass ich eine Hauptklasse TicTacToe implementiere:
Code:
public class TicTacToe {
//Konstruktor der das Board initialisiert
//Methode um ein X am Board zu setzen
//Methode zum Auswählen der jeweiligen Computerspielerstrategie
//Methode welche bei jedem Zug prüft ob der Spieler oder Computerspieler gewonnen hat
}
...dann eine Klasse Computer
public class Computer {
}
...dazu jeweilige Algorithmen....
public class Algo1 extends Computer{
}
public class Algo2 extends Computer{
}
...und dann eine Klasse Board welche das Spielfeld implementieren soll....
public class Board{
}
public class textualBoard extends Board{
}
public class graphicalBoard extends Board{
//für später
}
Passt das so mal oder habt ihr da noch bessere Ideen...vor allem das mit der graphischen Implementierung für
später bzw. ob ich wirklich für jeden Algo in der Klasse Computer eine eigene Klasse machen soll bereitet mir Kopfzerbrechen.....
mfg,
Han