Hier ist die Hauptfunktion, wo 9 weitere Funktionen aufgerufen werden. Ich werde dir eine andere Funktion zeigen, um zu verstehen, was mein Ziel ist.Break while loop
int main() {
char B[rows][columns];
char answer;
int newgame;
printf("Are you ready to play? Answer with y (or Y) for yes or n (or N) for no\n");
scanf("\n%c",&answer);
while(answer!='N' && answer!='n'){
fillArray(B);
printArray(B);
answer='y';
while(answer!='N' && answer!='n'){
vasilhs(B);
printArray(B);
check_draw(B);//I will place an if statement after the check_draw function
check_vertical_win(B);
check_horizontal_win(B);
check_right_diagonal_win(B);
check_left_diagonal_win(B);
antipalos_paikths(B);
printArray(B);
check_draw(B);
check_vertical_win(B);
check_horizontal_win(B);
check_right_diagonal_win(B);
check_left_diagonal_win(B);
}
printf("Do you want to play again?\n");
scanf("\n\n%c",&answer);
}
}//end of main function
//function check_draw
void check_draw(char A[rows][columns]){
int i,j;
int newgame;
//if statement will check in an matrix if the following elements are equal to '-'
if(A[0][0]!='-' && A[0][1]!='-' && A[0][2]!='-' && A[0][3]!='-' && A[0][4]!='-' && A[0][5]!='-' && A[0][6]!='-'){
printf("The result is a draw");
newgame=10;
}
}
Also, wenn if-Anweisung in Funktion check_draw Wahr ist die Variable newgame erhält den Wert 10.
if(newgame==10){
break;
}
Warum, wenn ich diese if-Anweisung nach dem check_draw Anruf, es ist nicht das brechen while-Schleife?
Sie können nicht direkt auf lokale Variablen einer Funktion in einem anderen zugreifen! – CinCout
Da 'check_draw' eine _own_ Kopie von' newgame' hat, unterscheidet sie sich von der in main. Du solltest besser 'check_draw' (und die anderen ähnlichen Funktionen) einen Wahr/Falsch (1/0) Wert zurückgeben und' if (checkDraw (B)) brechen; 'in main. – TripeHound
Wo sind 'rows' und' columns' definiert? – Marievi