2016-07-16 4 views
0

Привет, поэтому я все еще изучаю C и вот что я придумал. Моя проблема в том, что она не начнется с начала, если пользователь вводит переменную «число» в значение меньше или равно 0. Какие-нибудь подсказки? Также помните, если я спрошу, как начать цикл, когда вы используете функцию?Петля к началу

void main() { 

    int x = 0, y = 0, m, n, number, life = 4; 
    char choice; 
    int a[R][C] = { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }; 

    do { 
     printf("\t\t\t  Welcome to my game"); 
     Sleep(2000); 
     printf("\n\n This game is all about guessing where your number is located in the matrix"); 
     Sleep(2000); 
     printf("\n\n\t\t\t\tOnly 1 player\n"); 
     Sleep(2000); 
     printf("\n\n You are betting your own very life! \t\t\tYou have 5 tries"); 
     Sleep(1000); 
     printf("\n\nEnter your number: "); 
     scanf("%d", &number); 
     system("cls"); 
     if (number <= 0) { 
      system("cls"); 
      printf("Only positive numbers allowed"); 
      printf("\nRetry? Y/N: "); 
      fflush(stdin); 
      scanf("%c", &choice); 
      fflush(stdin); 
      if (choice == 'n' || choice == 'N') { 
       system("cls"); 
       printf("Thanks for playing"); 
       break; 
      } 
      system("cls"); 
      break; 
     } 
     display(a); 
     printf("\n\nInputted number is %d", number); 
     printf("\n\nYour number is now being placed at a random location"); 
     printf("\n\nGuess where your number is located (row) (column)"); 
     printf("\n\nNote: Enter only numbers 1-4 or else you'll be wrong"); 
     printf("\n\nEnter coordinates: "); 
     scanf("%d%d", &m, &n); 
     printf("\n"); 
     placingguess(a, number, m, n, life); 
     break; 
    } while (choice != 'n' || choice != 'N'); 

    getch(); 
} 
+3

Технически у вас есть неопределенное поведение в коде, выполнение 'fflush (stdin)' не является определенной операцией. Некоторые стандартные библиотеки позволяют использовать его как расширение, но вы не должны привыкать делать это, если хотите писать переносимый код. –

+1

Вы действительно считаете нужным поставить программу на спящий режим на 7000 секунд? Далее, 'fflush' на' stdin' вызывает неопределенное поведение. Что такое 'cls'? – user3078414

+1

Что касается вашей проблемы, что это за слово 'break', допинг там в цикле? Вы * знаете, что ['break'] (http://en.cppreference.com/w/c/language/break) внутри цикла? ' –

ответ

3

Использование continue вместо break.

} 
    system("cls"); 
    continue; 
} 
display(a); 
+0

Я никогда не знал, что существует такая команда, как «продолжить». Теперь он работает! Благодарю. – Steven

2

Вы использовали

break; 
  • break - выйти из текущего while \ for \ do - while ...
  • continue - следующей итерации.

Первый break; это нормально, потому что пользователь вводит N для повторной попытки, второй должен быть continue!

+0

Спасибо! теперь он работает. Никогда не знал, что до сих пор была команда «продолжать». – Steven

Смежные вопросы