net.gobbz.tictactoe
Class TicTacToe

java.lang.Object
  extended by net.gobbz.tictactoe.TicTacToe
Direct Known Subclasses:
TicTacToeClient, TicTacToeServer

public class TicTacToe
extends java.lang.Object

Simuliert das Spielfeld des Spiels TicTacToe. Dabei besteht die Möglichkeit, die Züge der zwei Spieler ins Spielfeld einzutragen. Weiters kann erfragt werden, wer gewonnen hat und ob es überhaupt noch möglich ist zu gewinnen.
Das Spielfeld wird in einem zweidimensionalen Feld aufgebaut. Die Elemente des Feldes sind vom Typ int. Zu Beginn wird das Spielfeld folgendermaßen initialisiert:
0 1 2
3 4 5
6 7 8

Jedem Spieler wird eine Nummer zugeordnet. Setzt der Spieler mit der Nummer -1 beispielsweise an Position 4, so wird dort seine Nummer eingetragen:
0 1 2
3 -1 5
6 7 8


Field Summary
static int SPIELER1
          Nummer des ersten Spielers
static int SPIELER2
          Nummer des zweiten Spielers
private  int[][] spielfeld
          Das Spielfeld
 
Constructor Summary
TicTacToe(int feldgroesse)
          Konstruktor initialisiert das Spielfeld mit Zahlen beginnend bei 0.
 
Method Summary
 boolean getEinerKannGewinnen()
          Ermittelt ob einer der Spieler das Spiel noch gewinnen kann
 int getFeldgroesse()
          Liefert die Feldgröße des Spielfeldes zurück
 int getGewonnen()
          Ermittelt die Nummer des Spielers der gewonnen hat
 int getSpielfeld(int zeile, int spalte)
          Ermittelt wie das Spielfeld an der Stelle zeile/spalte gesetzt ist
private  int setZug(int zug, int spielernummer)
          Setzt den übergebenen Zug im Spielfeld für den Spieler dessen Nummer ebenfalls übergeben wurde
 int setZugSpieler1(int zug)
          Setzt den Zug des Spielers 1
 int setZugSpieler2(int zug)
          Setzt den Zug des Spielers 2
 java.lang.String toString()
          Zeilenweise Ausgabe des Spielfeldes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

spielfeld

private int[][] spielfeld
Das Spielfeld


SPIELER1

public static final int SPIELER1
Nummer des ersten Spielers

See Also:
Constant Field Values

SPIELER2

public static final int SPIELER2
Nummer des zweiten Spielers

See Also:
Constant Field Values
Constructor Detail

TicTacToe

public TicTacToe(int feldgroesse)
Konstruktor initialisiert das Spielfeld mit Zahlen beginnend bei 0. Ist die Feldgröße kleiner als 3 dann wird diese auf 3 gesetzt und ein entsprechendes Spielfeld angelegt. Ist beispielsweise die Feldgröße auf 3 eingestellt, so wird das Spielfeld folgendermaßen initialisiert:
0 1 2
3 4 5
6 7 8

Method Detail

toString

public java.lang.String toString()
Zeilenweise Ausgabe des Spielfeldes. Dabei werden an den gesetzten Postionen nicht die Spielernummern ausgegeben sondern für den ersten Spieler ein X und für den Zweiten ein O (O wie Otto). Beispielsweise wird für das Spielfeld
0 1 -1
3 -2 -1
6 7 8

folgendes zurück gegeben:
01X
3OX
678

Overrides:
toString in class java.lang.Object
Returns:
das Spielfeld aufgeteilt auf mehrere Zeilen

getFeldgroesse

public int getFeldgroesse()
Liefert die Feldgröße des Spielfeldes zurück

Returns:
die Feldgröße des Spielfeldes

getSpielfeld

public int getSpielfeld(int zeile,
                        int spalte)
Ermittelt wie das Spielfeld an der Stelle zeile/spalte gesetzt ist

Parameters:
zeile - des Spielfeldes an der nachgeschaut werden soll
spalte - des Spielfeldes an der nachgeschaut werden soll
Returns:
0 falls an der übergebenen Position noch kein Spieler gesetzt hat
SPIELER1 falls an der übergebenen Position der erste Spieler gesetzt hat
SPIELER2 falls an der übergebenen Position der zweite Spieler gesetzt hat
-3 falls zeile und/oder spalte außerhalb des Spielfeldes zugreifen wollen

setZugSpieler1

public int setZugSpieler1(int zug)
Setzt den Zug des Spielers 1

Parameters:
zug - den zu setzenden Zug
Returns:
0 falls Zug erfolgreich gesetzt werden konnte
-1 falls der Zug außerhalb des Spielfeldes liegt
-2 falls der Zug bereits gesetzt wurde
See Also:
setZug(int, int)

setZugSpieler2

public int setZugSpieler2(int zug)
Setzt den Zug des Spielers 2

Parameters:
zug -
Returns:
int
See Also:
setZugSpieler1(int)

setZug

private int setZug(int zug,
                   int spielernummer)
Setzt den übergebenen Zug im Spielfeld für den Spieler dessen Nummer ebenfalls übergeben wurde

Parameters:
zug -
spielernummer -
Returns:
0 falls Zug erfolgreich gesetzt werden konnte
-1 falls der Zug außerhalb des Spielfeldes liegt
-2 falls der Zug bereits gesetzt wurde

getGewonnen

public int getGewonnen()
Ermittelt die Nummer des Spielers der gewonnen hat

Returns:
0 derzeit hat noch niemand gewonnen
SPIELER1 oder SPIELER2

getEinerKannGewinnen

public boolean getEinerKannGewinnen()
Ermittelt ob einer der Spieler das Spiel noch gewinnen kann

Returns:
true falls das Spiel noch gewonnen werden kann