我是C新手,目前正在做一个Jack 'N Poy,当用户回答y时,需要重新启动项目。但是,我似乎无法掌握它的模式。在C++上尝试过,它工作,但在C上没有。有人能帮忙吗?我希望用户有能力在完成游戏后再次玩。
下面是代码:
#include<stdio.h>
int main (){
char firstPlayer, secondPlayer, again;
do{
printf("Jack 'n Poy)\nEnter Player 1 input: ");
scanf("%c ", &firstPlayer);
printf("Enter Player 2 input: ");
scanf("%c", &secondPlayer);
switch (firstPlayer){
case 'x':
switch (secondPlayer){
case 'x':
printf("Draw");
break;
case 's':
printf("Player 2 wins");
break;
case 'p':
printf("Player 1 wins");
}
break;
case 's':
switch (secondPlayer){
case 'x':
printf("Player 1 wins");
break;
case 's':
printf("Draw");
break;
case 'p':
printf("Player 2 wins");
}
break;
case 'p':
switch (secondPlayer){
case 'x':
printf("Player 2 wins");
break;
case 's':
printf("Player 1 wins");
break;
case 'p':
printf("Draw");
}
break;
default:
printf("Invalid input");
}
printf("\nPlay again? (y/n)");
scanf("%c", &again);
}
while (again == 'y');
printf("Thank you for playing");
return 0;
}
我也尝试过为y添加一个替代变量,但循环跳过了第一个问题。
非常感谢你的帮助。非常感谢!
2条答案
按热度按时间nhn9ugyo1#
您需要将格式更改为:
在所有
scanf
中。注意%c
之前的' '
roejwanj2#
您的
again
是一个字符串。您可以使用strcmp(expectedString,inputString)
作为while
处的条件。您需要对string.h
头文件执行include
操作才能执行此操作。或者,将
again
更改为char
类型,即char again;
然后在最后一次扫描中使用
%c
,即scanf("%c", &again);
。如果输入空格或换行符,您可能会遇到跳过字符的情况。在这种情况下,请参阅this answer以获得指导。