あなたの多くはチックタックのつま先の質問に疲れていると確信していますが、私はこの部分が意図したとおりに機能しない理由についての洞察力を感謝します。スマートコンピュータティックタックトゥーCの選択を移動
残りのコードはうまくいきますが、ここではコンピュータが動かず、代わりにボードを再表示してユーザーの動きに戻ります。
ユーザーとコンピュータのマークが機能に引き継がれているが、選択プロセスが機能していないことを確認しました。デフォルトでは、forループが実行され、そこから他の関数が続行されますが、コンピュータのマークは割り当てられません。
私はすでに次の移動に送信される前にボードがいっぱいでないことを確認するコードを持っています。
これは代入比較ではありませんあなた
void cmove(char umark, char cmark)
{
int i=0;
if((board[4] == NULL))
{
board[4] == cmark;
DisplayBoard();
cwin(umark , cmark);
}
if((board[0] != NULL) && (board[1] != NULL) && (board[2] != NULL) && (board[3] != NULL) && (board[4] == umark) && (board[5] != NULL) &&
(board[6] != NULL) && (board[7] != NULL) && (board[8] != NULL))
{
board[0]= cmark;
DisplayBoard();
cwin(umark ,cmark);
}
for(i=0; i<9; i++)
{
if(board[i] == NULL)
{
board[i] == cmark;
DisplayBoard();
cwin(umark, cmark);
i=9;
}
}
}
実際にどのコードパスが実行されているかを確認するために、既にデバッグを試したことはありますか?アプリケーションが期待どおりに動作しない場合は、まずプログラムをデバッグし、その理由を調べる必要があります。 – maja
これらの「NULL」は何ですか?あなたのボードはポインタの配列ですか?完全なコンパイラの警告が有効になっていることを確認してください。 –
'board [4] == cmark;'は間違いです。コンパイラが警告していたはずです。また、 'board [i] == cmark;'。 '=='を '='に変更してください。 –