Игра отлично работает в первый раз, хотя; во второй раз он дает вам две жизни ... Я пытался изменить количество жизней, но до сих пор не могу понять, что я делаю неправильно.Случайное число игра C
// C_program_random_number_game
#include<stdio.h>
#include<time.h>
#include <stdlib.h>
int main()
{
srand(time(NULL));
int num1,x = 0;
char game, cont, replay;
printf("Would you like to play a game? : ");
scanf("%c",&game);
if (game == 'y' || game == 'Y')
{
printf("\nThe rules are simple. You have have 5 tries to guess the computers number. \n \n If you succeed you win the game, if you dont you lose the game. Good luck!");
do
{
int r = rand()%5 +1;
printf("\n\nEnter a number between 1 and 5 : ");
scanf("\n%d",&num1);
x++;
if(num1 > 0 && num1 < 5)
{
do
{
if(num1 < r)
{
printf("\nClose! try a little higher... : ");
x++;
}
else if (num1 > r)
{
printf("\nClose! try a little lower...: ");
x++;
}
scanf("%d",&num1);
}while(num1!=r && x <3);
if(num1 == r)
{
printf("\nWinner! >> you entered %d and the computer generated %d! \n",num1, r);
}
else if(num1 != r)
{
printf("\nBetter luck next time!");
}
printf("\n\nWould you like to play again? (y or n) : ");
scanf("\n%c",&replay);
}
else
{
printf("Sorry! Try again : ");
scanf("%d",&num1);
}
}while(replay == 'y'|| replay == 'Y');
}
else if (game == 'n' || game == 'N')
{
printf("Okay, maybe next time! ");
}
else
{
printf("Sorry, invalid data! ");
}
return 0;
}
Попробуйте установить int на 0. Приращивание его (например, x ++), если они ошибаются. Вероятно, это будет во внутреннем цикле do-while. Если (x == 3) вырваться. Ваша проблема в том, что вам нужен «перерыв»; заявление. Ваш «пока-то» повторяет for-loop навсегда. В любом случае, если я понимаю, чего вы хотите, не должно быть необходимости для цикла. EDIT: также x всегда меньше или равно 3 (за что говорит for-loop), поэтому проверка его в while() не имеет смысла. В отношении «while (num1! = R || x <= 3); – MrHappyAsthma
Также вы печатаете «у вас есть 5 попыток», но заявляют, что вы хотите только «3» ... – MrHappyAsthma
Пожалуйста, отформатируйте и правильно открепите свой код! Нет смысла пытаться найти ошибки из источника, который пытается ввести в заблуждение и запутать программиста (не показывая, где петли и т. Д. С правильным отступом). – hyde