tic tac toe
-
hi ho ich bin gerade dabei das spiel tic tac toe zu programmierne
natürlich lasse ich die einzelen spielzüge über eine schleife laufen
das probmel ist nur wenn drei X oder drei O nebemeinander sind bricht die schleife nicht ab.
hier ist meine schleife:
vielleicht kann hier jemand sagen was ich falsch mache//.. while( //Vertikale überprüfung ----------------------------------- ((feld[0][0]!='X')&&(feld[1][0]!='X')&&(feld[2][0]!='X'))|| ((feld[0][0]!='O')&&(feld[1][0]!='O')&&(feld[2][0]!='O'))|| ((feld[0][1]!='X')&&(feld[1][1]!='X')&&(feld[2][1]!='X'))|| ((feld[0][1]!='O')&&(feld[1][1]!='O')&&(feld[2][1]!='O'))|| ((feld[0][2]!='X')&&(feld[1][2]!='X')&&(feld[2][2]!='X'))|| ((feld[0][2]!='O')&&(feld[1][2]!='O')&&(feld[2][2]!='O'))|| //Horizontale Überprüfung --------------------------------- ((feld[0][0]!='X')&&(feld[0][1]!='X')&&(feld[0][2]!='X'))|| ((feld[0][0]!='O')&&(feld[0][1]!='O')&&(feld[0][1]!='O'))|| ((feld[1][0]!='X')&&(feld[1][1]!='X')&&(feld[1][2]!='X'))|| ((feld[1][0]!='O')&&(feld[1][1]!='O')&&(feld[1][2]!='O'))|| ((feld[2][0]!='X')&&(feld[2][1]!='X')&&(feld[2][2]!='X'))|| ((feld[2][0]!='O')&&(feld[2][1]!='O')&&(feld[2][2]!='O'))|| //Diagonale Überprüfung ----------------------------------- ((feld[0][0]!='X')&&(feld[1][1]!='X')&&(feld[2][2]!='X'))|| ((feld[0][0]!='O')&&(feld[1][1]!='O')&&(feld[2][1]!='O'))|| ((feld[2][2]!='X')&&(feld[1][1]!='X')&&(feld[2][0]!='X'))|| ((feld[2][2]!='O')&&(feld[1][1]!='O')&&(feld[2][0]!='O')) )
{ //..
}
-
Die ganze Bedingung stimmt nicht so ganz. Mach das ganze am besten anders. Rufe am Ende deiner Schleife eine Funktion auf, die prüft, ob der gerade gesetzte Kreis oder das gerade gesetzte X die Drei komplett macht.
Kleine Hilfe zur Prüfung:
Du weißt, wo (Koordinate) der Spieler was gesetzt hat und du weißt auch was (Kreis oder X). Anhand der Koordinate, wo der Spieler was gesetzt hat, kannst du dann die anderen Positionen ermitteln und vergleichen, wo er drei komplett machen kann.Beispiel:
Der Spieler macht ein X links oben (Koordinaten 0/0 (x/y)). Nun musst du die Koordinaten 1/0 und 2/0 prüfen auf X (also die Horizontale). Als nächstes die Koordinaten 0/1 und 0/2 (die Vertikale) und als letztes (die Diagonale) die Koordinaten 1/1 und 2/2.
Das ganze kannst du dynamisch in mehreren (genau genommen 8 ;)) Schleifen machen.
Du kannst natürlich auch generell das ganze Feld abprüfen. Das bleibt dir überlassen :).
-
Mein TikTakToe: http://chille.ch.funpic.de/download/selfgames.html
kannst mal probieren.
int check(int status[3][3]) // status: 0=leer 1=player1 2=player2 { int i,j; for(i=0;i<3;i++) { if((status[i][0]==status[i][1])&&(status[i][0]==status[i][2])) { if(status[i][0]!=0) return(status[i][0]); } if((status[0][i]==status[1][i])&&(status[0][i]==status[2][i])) if(status[0][i]!=0) return(status[0][i]); } if((status[0][0]==status[1][1])&&(status[0][0]==status[2][2])) if(status[0][0]!=0) return(status[0][0]); if((status[2][0]==status[1][1])&&(status[2][0]==status[0][2])) if(status[1][1]!=0) return(status[1][1]); for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(status[i][j]==0) return(0); } } return(3); }
gibt 3 zurück, wenn unentschieden bzw. weiter gespielt werden soll
1 wenn spieler 1 gewonnen hat
2 wenn spieler 2 gewonnen hatmfG (c)h
-
ich hab selbst hinbekokmmen danke!