Hitta svaret i tre i rad.
Hej!
Jag har en uppgift där jag ska göra en funktion som kontrollerar om någon har vunnit i tre i rad. Jag har testat allt från att göra en nästlad loop, skriva, skriva samtliga utslag separat och det senaste jag gjort är något mellanting.
här är det viktiga ur main.
int main() {
char spelplan[3][3];
int drag, klart;
do {
rensa(spelplan);
visa(spelplan);
/* spela en omgång */
klart = 0;
for (drag = 1; drag <= 9 && !klart; drag++) {
markera(drag, spelplan);
visa(spelplan);
/* kontrollera vinnare om 5 markeringar eller fler */
if (drag >= 5)
klart = kontrollera(spelplan);
}
/* skriv omgångens resultat */
gotoxy(30, 20);
if (!klart)
printf("Remi!");
else if (drag % 2 == 0)
printf("x vinner!");
else
printf("o vinner!");
Här är min funktion:
int kontrollera(char p[3][3]) {
int i, j;
for(i = 0; i < 3; i++)
if(p[i][0] == p[i][1] && p[i][1] == p[i][2])
return 1;
for(j = 0; j < 3; j++)
if(p[0][j] == p[1][j] && p[1][j] == p[2][j])
return 1;
if(p[0][0] == p[1][1] && p[1][1] == p[2][2]){
return 1;
}
else if(p[2][0] == p[1][1] && p[1][1] == p[0][2]){
return 1;
}
else
return 0;
};
Är inte intresserad av en färdig lösning, men snälla hjälp mig med vart jag tänker fel.
Det här får jag när jag kör spelet och jag ser inte vart jag har sagt att det är vinst.
[_][_][_]
[o][x][_]
[x][o][x]
x vinner!
Kan det vara så att när den efter 5 total drag kör funktionen så får den 1 returnerat?
mvh/M