私は C 言語を学ぼうとしていますが、ここで助けが必要です。
三目並べゲームのプログラムを作ろうとしています。メイン関数で最初のビットを実行しようとしましたが、うまくいきませんでした。ただし、別の関数を使用すると、機能しました。どのように、そしてなぜそれが機能したのですか?(両方のプログラムを以下に添付します)。
また、scanf で "square 1" と "square 2" の "%c" の代わりに "%s" を使用しました。ここで「%c」が正常に機能しないのはなぜですか?
よろしくお願いします。
// first program
#include <stdio.h>
int main ()
{
int player;
char square1;
char square2;
char Nesta[9]={'1','2','3','4','5','6','7','8','9'};
int player1;
int player2;
printf("choose one for x or two for o\n");
scanf("%i", &player);
if (player==1)
{
player1='x';
player2='o';
}
else
{
player1 ='o';
player2='x';
}
printf(
"1 + 2 + 3 \n"
"---+----+-----\n"
"4 + 5 + 6 \n"
"---+----+-----\n"
"7 + 8 + 9 \n"
);
for (int i=0; i<3; ++i)
{
printf("please enter the number of the sqaure ");
scanf("%s",&square1 );
printf("please enter the number of the sqaure ");
scanf("%s",&square2 );
for (int j=0; j<9; ++j)
{
if (square1 == Nesta[j])
{
Nesta[j]=player1;
printf(
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n", Nesta[0],Nesta[1], Nesta[2], Nesta[3],Nesta[4],Nesta[5],Nesta[6],Nesta[7],Nesta[8]);
}
}
for (int k=0; k<9; ++k)
{
if (square2 == Nesta[k])
{
Nesta[k]=player2;
printf(
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n", Nesta[0],Nesta[1], Nesta[2], Nesta[3],Nesta[4],
Nesta[5],Nesta[6],Nesta[7],Nesta[8]);
}
}
}
return 0;
}
gamecont 関数を使用すると問題なく動作します!!
// the second program
#include <stdio.h>
char Nesta[9]={'1','2','3','4','5','6','7','8','9'};
int player1;
int player2;
int gamecont ()
{
char square2;
printf("please enter the number of the square ");
scanf("%s",&square2 );
for (int j=0; j<9; ++j)
if (square2 == Nesta[j])
{
Nesta[j]=player2;
printf(
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n", Nesta[0],Nesta[1], Nesta[2], Nesta[3],Nesta[4],
Nesta[5],Nesta[6],Nesta[7],Nesta[8]);
}
}
int main ()
{
int player;
char square1;
printf("choose one for x or two for o\n");
scanf("%i", &player);
if (player==1)
{
player1='x';
player2='o';
}
else
{
player1 ='o';
player2='x';
}
printf(
"1 + 2 + 3 \n"
"---+----+-----\n"
"4 + 5 + 6 \n"
"---+----+-----\n"
"7 + 8 + 9 \n"
);
for (int i=0; i<3; ++i)
{
printf("please enter the number of the square ");
scanf("%s",&square1 );
for (int j=0; j<9; ++j)
{
if (square1 == Nesta[j])
{
Nesta[j]=player1;
printf(
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n"
"----+-----+--- \n"
"%c + %c + %c \n", Nesta[0],Nesta[1], Nesta[2], Nesta[3],Nesta[4],Nesta[5],Nesta[6],Nesta[7],Nesta[8]);
gamecont() ;
}
}
}
return 0;
}