我最近一直在做一个刽子手游戏,这个函数应该检查一个用户在数组中输入的字母(包含一个预定义的单词,如“BUILDING”)并添加一个计数器(Count)如果字母存在或减少了生命(从主函数中定义的5开始 - 如果它不存在)。
现在Count变量工作正常,但Lives变量仍然保持减少,即使字母存在并且它不仅减少1而是减少更大的数量导致相当大的负数。
这是代码,提前感谢:
void Checkf(char X,int r,int Length,char *Hidden, int *Lives,int *Count)
{
int i;
for (i=0;i<Length;i++)
{
if (X==Words[r][i] && Hidden[i]=='*')
{
Hidden[i] = X;
*Count = *Count + 1;
}
else if (X!=Words[r][i] && Hidden[i]=='*')
*Lives = *Lives - 1;
}
}
答案 0 :(得分:2)
出现这种情况是因为您(可选)在循环的每次迭代中减少Lives
的值。
您可以添加一个变量来指示是否找到该字母,然后在循环结束后减少Lives的值,如下所示:
void Checkf(char X,int r,int Length,char *Hidden, int *Lives,int *Count)
{
int i;
unsigned char found = 0;
for (i=0;i<Length;i++)
{
if (X==Words[r][i] && Hidden[i]=='*')
{
Hidden[i] = X;
*Count = *Count + 1;
found = 1;
}
}
if (!found)
{
*Lives -= 1;
}
}