ここに9つの関数が呼び出される主な関数があります。私はあなたの目的が何であるかを理解するために別の機能を紹介します。関数check_draw内のステートメントがTrueの場合ループ中にブレークアウト
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;
}
}
だから変数newgameは値10
if(newgame==10){
break;
}
を取得するときに
の文check_drawコールの後ならば、私はこれを配置する場合、それは破壊されないのはなぜ、 whileループ?あなたのコードの実装から
ある関数のローカル変数に直接アクセスすることはできません。 – CinCout
'check_draw'は' newgame'の_own_コピーを持っているので、mainのものとは異なります。 'check_draw'(と他の同様の関数)を真/偽(1/0)の値に戻し、メインで' if(checkDraw(B))break; 'を実行する方が良いでしょう。 – TripeHound
'rows'と' columns'はどこに定義されていますか? – Marievi