2014-09-28 2 views
0

Я пытаюсь сделать игру высокой или низкой. Бросьте три кубика, добавьте их, а затем догадайтесь, как высоко, так и низко. У меня возникают некоторые проблемы, когда я попадаю на высокую или низкую часть. Когда я запускаю программу, она заканчивается, прежде чем я смогу ответить на высокий или низкий уровень. Кроме того, я не уверен, как использовать цикл while, чтобы продолжить, пока пользователь не ошибается. Вот что я до сих пор.Помощь с высоким или низким разрешением в C

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <time.h> 


int main(void) 
{ 
    srand((unsigned)time(NULL)); 

    int dice1, dice2, dice3, dicetotal, i; // Variables 
    char startGAMEendGame; 

    // Initializing variables 
    dice1 = 1 + rand() % 6; 
    dice2 = 1 + rand() % 6; 
    dice3 = 1 + rand() % 6; 
    dicetotal = dice1 + dice2 + dice3; 

    // Asking the user if they would like to start the game 
    printf("\nWould you like to play a game? <Y/N> "); 
    scanf("%c", &startGAMEendGame); 

    // First If statement to start the game 
    if (startGAMEendGame == 'Y' || startGAMEendGame == 'y') 
    { 
     int dice1, dice2, dice3, dicetotal, i; // Variables 
     char higherOrlower; 

     i = dicetotal;       // Initializing variables 
     dice1 = 1 + rand() %6; 
     dice2 = 1 + rand() %6; 
     dice3 = 1 + rand() %6; 
     dicetotal = dice1 + dice2 + dice3; 

     printf("\nAwesome. Let's get started with a simple game of higher or lower.\nYou get to guess until you are wrong. \n"); 

     printf("\nYour first three rolls are %d, %d, %d, and their sum is %d. \n", dice1, dice2,    
     dice3, dicetotal); 

     printf("\nWhat is next your guess? Higher or Lower? <H/L> "); 
     scanf("%c", &higherOrlower); 

     if (dicetotal > i && higherOrlower == 'H') 
     { 
      printf("\nCongratulations! You guessed correctly. "); 
     } 

     if (dicetotal < i && higherOrlower == 'L') 
     { 
      printf("\nCongratulations! You guessed correctly. "); 
     } 
    } 

    if (startGAMEendGame == 'N' || startGAMEendGame == 'n') 
    { 
     printf("\nBummer. Maybe some other time. "); 
    } 
} 
+0

Я немного переформатировал код для вас. Я бы рекомендовал отладку и прохождение всех строк, чтобы увидеть, какой из них ведет себя иначе, чем ожидалось, а затем вернуться, чтобы попросить обратную связь, как только у вас появятся какие-то подробности. –

+0

Я только начинаю. Спасибо за совет! –

ответ

1

Добавить пробел перед %c во втором scanf будет решить эту проблему.

Это происходит потому, что scanf не потребляет \n характер после того, как вы вводите первые character.As клавишу ввода (\n) также характер, он получает потребляется scanf("%c",&higherOrlower); и, таким образом, ваш следующий if никогда не будет выполнена, а конец программы. Пространство перед% c будет отбрасывать все пробелы и пробелы.

+0

Такое простое исправление! Огромное спасибо. –

+0

Другой вопрос. Поскольку я хочу, чтобы игра продолжалась после того, как я вхожу в высокий или низкий, мне понадобится время или цикл до первого оператора if, правильно? –

+0

@ RonnieMatteini, только часть highOrlow или вся игра? –