我的tick-tac-toe游戏有一个相当奇怪的问题。我已经建立了一个非常简单的机制,允许(几乎)完美无瑕的游戏。在撰写这篇文章的那一刻,我努力防止用户使用输入用于不适合的目的(例如覆盖拍摄点)。我试图在我的函数中添加一个简单的if语句,称为ruch,它负责覆盖数组wynik(顺便存储数据)。这是函数本身:
int ruch(char pole, bool gracz){
int i=0;
for(i=0;i<9;i++)
{
if(gracz==true)
{
if(pole==i+1)
{
if(wynik[i]=='#')
{
wynik[i]='X';
return 3;
}
else if(wynik[i]!='#')
return 0;
}
}
else if(gracz==false)
{
if(pole==i+1)
{
if(wynik[i]=='#')
{
wynik[i]='O';
return 3;
}
else if(wynik[i]!='#')
return 0;
}
}
}
}
整个代码:http://pastebin.com/zNHHpHA1
正如你所看到的,返回的逻辑相当简单 - 如果ruch注意到不需要的行为,它将提示用户重新评估他的行动:
while(ruch(input,ruc)==0){
printf("Wprowadzono złą liczbę!\n");
scanf("%d", &input);
ruch(input, ruc);}
但是,无论输入如何,ruch函数都返回0。我认为这是阻止我的代码正常运行(相当)的唯一障碍。预先感谢您的任何帮助。 我不是母语为英语的人,所以请耐心等待。
答案 0 :(得分:2)
在您的pastebin中,在第44-46行和第54-58行中,您使用相同的输入调用ruch
三次。因此,第二次和第三次调用将始终返回0.
更改
ruch(input,ruc);
printf("%d", ruch(input,ruc));
while(ruch(input, ruc)==0) {
printf("Wprowadzono złą liczbę!\n");
scanf("%d", &input);
ruch(input, ruc);
}
类似
int result = ruch(input, ruc);
printf("%d", result);
while(result == 0) {
printf("Wprowadzono złą liczbę!\n");
scanf("%d", &input);
result = ruch(input, ruc);
}