Hallo!
Ich weiß nicht so recht, wonach ich das Internet fragen soll
bei meinem Problem...
Ich will TicTacToe programmieren,
mit einem Strategy Pattern für die Züge 1,2,3,n
weil sich das Vorgehen bei jedem Zug vom anderen unterscheidet
und ich IF-Bäume vermeiden will.
Ich hab eine SPIEL-Klasse und erzeuge daraus meinSpiel
Ich habe mein Interace IZug
Und hier ist mal die Klasse Zug1
In der Main starte ich das Spiel und will Züge ausführen.
Aber wenn jetzt zugausführen()
in der Klasse Spiel auf die Klasse Zug1
zugreift, ähh, dann komm ich von da nicht mehr
an mein Spielfeld ran....
Wie könnte ich das anstellen?
Ich weiß nicht so recht, wonach ich das Internet fragen soll
bei meinem Problem...
Ich will TicTacToe programmieren,
mit einem Strategy Pattern für die Züge 1,2,3,n
weil sich das Vorgehen bei jedem Zug vom anderen unterscheidet
und ich IF-Bäume vermeiden will.
Ich hab eine SPIEL-Klasse und erzeuge daraus meinSpiel
Java:
class Spiel {
private IZug welcherZug;
private int[][] spielfeld;
public static Spielfigur spielfigur;
public Spiel(){
spielfeld = new int[3][3];
welcherZug = new Zug1();
spielfigur = new Spielfigur(0, 0, 0);
}
public void setWelcherZug(IZug welcherZug) {
this.welcherZug = welcherZug;
}
public void zugAusfuehren(){
// ich übergebe eine Objekt vom Typ Spielfigur, da ich es mit mehreren Werten
// zu tun habe, welche ich später schreiben muss
welcherZug.ziehen(spielfigur);
}
void setzeFigur(int x, int y, int besitzer) {
if (spielfeld[x][y] == 0) {
spielfeld[x][y] = besitzer;
} else {
// Spielfeld ist nicht leer !!!
}
}
Spielfigur sucheFreiesFeld() {
// Hier Code
}
}
Ich habe mein Interace IZug
Java:
public interface IZug {
public void ziehen(Spielfigur spielfigur);
}
Und hier ist mal die Klasse Zug1
Java:
public class Zug1 implements IZug{
@Override
public void ziehen(Spielfigur spielfigur) {
// und hier würde ich gerne auf meinSpielfeld zugreifen
// spielfigur = meinspiel.sucheFreiesFeld();
}
}
In der Main starte ich das Spiel und will Züge ausführen.
Java:
public class Main {
final static int leer = 0;
final static int Blech**** = 1;
final static int ich = 2;
public static void main(String args[]){
Spiel meinSpiel = new Spiel();
meinSpiel.setWelcherZug(new Zug1());
//hier könnte ich auch eine neue Figur übergeben
meinSpiel.setzeFigur(0,0,ich);
meinSpiel.zugAusfuehren();
}
}
Aber wenn jetzt zugausführen()
in der Klasse Spiel auf die Klasse Zug1
zugreift, ähh, dann komm ich von da nicht mehr
an mein Spielfeld ran....
Java:
public class Zug1 implements IZug{
@Override
public void ziehen(Spielfigur spielfigur) {
// und hier würde ich gerne auf meinSpielfeld zugreifen
// spielfigur = meinspiel.sucheFreiesFeld();
}
}
Wie könnte ich das anstellen?
Zuletzt bearbeitet von einem Moderator: