R
Revelationer
Gast
halli hallo
ich programmier gerade ein "tic tac toe"-spiel.
unter anderem soll man die größe des feldes selbst bestimmen können. das heißt man übergibt n an die konsole und ein array mit n * n feldern wird erzeugt.
soweit so gut.
mein problem sind die gewinn-bedinungen.
zuvor hab ich das feld mit den festen maßen 3x3 erstellt und dafür alle bedinungen zum gewinnen von hand eingegeben.
ich würd die bedingung aber gerne mit einem schleifenkonstrukt automatisch auswerten lassen, was ich ja auch muss wenn die feld-größe variabel ist.
ich wollte zwei for-schleifen ineinander schachteln und dann zeile pro zeile prüfen ob in jedem arrayfeld ein x bzw. ein o liegt und einen boolean je nach ergebnis setzen der an eine andere funktion übergeben wird.
aber theoretisch müsste ich ja dann in der if-bedingung eine schleife haben, was ja nicht geht.
das wäre die sieg-berechnung für spieler 1 so wie ich mir das gedacht habe:
das funktioniert so natürlich nicht wie ich festgestellt hab, aber ich komm nicht drauf was noch fehlt...
für 3 * 3 ist das ganze +bersichtlich genug um es statisch anzugeben, aber es soll ja variabel sein *seufz*
so sah die bedingung vorher aus (diesmal spieler 2):
ich wär euch sehr dankbar wenn ihr mir helfen könntet!
gruß,
raiden
ich programmier gerade ein "tic tac toe"-spiel.
unter anderem soll man die größe des feldes selbst bestimmen können. das heißt man übergibt n an die konsole und ein array mit n * n feldern wird erzeugt.
soweit so gut.
mein problem sind die gewinn-bedinungen.
zuvor hab ich das feld mit den festen maßen 3x3 erstellt und dafür alle bedinungen zum gewinnen von hand eingegeben.
ich würd die bedingung aber gerne mit einem schleifenkonstrukt automatisch auswerten lassen, was ich ja auch muss wenn die feld-größe variabel ist.
ich wollte zwei for-schleifen ineinander schachteln und dann zeile pro zeile prüfen ob in jedem arrayfeld ein x bzw. ein o liegt und einen boolean je nach ergebnis setzen der an eine andere funktion übergeben wird.
aber theoretisch müsste ich ja dann in der if-bedingung eine schleife haben, was ja nicht geht.
das wäre die sieg-berechnung für spieler 1 so wie ich mir das gedacht habe:
Code:
public static void sieg1()
for( int i=0 ; i<spielfeld.feld.length ; i++ ) // hochzählen der spalten
{
for( int j=0 ; j<spielfeld.feld[i].length ; j++ ) // hochzählen der zeilen
{
if( spielfeld.feld[i][j] == 'x' && ) // bedingung: wenn alle elemente der zeile j gleich 'x' sind.
{
sieg1 = true;
}
}
}
das funktioniert so natürlich nicht wie ich festgestellt hab, aber ich komm nicht drauf was noch fehlt...
für 3 * 3 ist das ganze +bersichtlich genug um es statisch anzugeben, aber es soll ja variabel sein *seufz*
so sah die bedingung vorher aus (diesmal spieler 2):
Code:
public static void sieg1()
{
if( (spielfeld.feld[0][0] == 'x' && spielfeld.feld[0][1] == 'x' && spielfeld.feld[0][2] == 'x') ||
(spielfeld.feld[1][0] == 'x' && spielfeld.feld[1][1] == 'x' && spielfeld.feld[1][2] == 'x') ||
(spielfeld.feld[2][0] == 'x' && spielfeld.feld[2][1] == 'x' && spielfeld.feld[2][2] == 'x') ||
(spielfeld.feld[0][0] == 'x' && spielfeld.feld[1][0] == 'x' && spielfeld.feld[2][0] == 'x') ||
(spielfeld.feld[0][1] == 'x' && spielfeld.feld[1][1] == 'x' && spielfeld.feld[2][1] == 'x') ||
(spielfeld.feld[0][2] == 'x' && spielfeld.feld[1][2] == 'x' && spielfeld.feld[2][2] == 'x') ||
(spielfeld.feld[0][0] == 'x' && spielfeld.feld[1][1] == 'x' && spielfeld.feld[2][2] == 'x') ||
(spielfeld.feld[0][2] == 'x' && spielfeld.feld[1][1] == 'x' && spielfeld.feld[2][0] == 'x') )
{
System.out.println("Spieler " +spielender +" hat gewonnen!");
sieg1 = true;
}
else
sieg1 = false;
}
ich wär euch sehr dankbar wenn ihr mir helfen könntet!
gruß,
raiden