2015-05-28 2 views
-1

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

Это мой код:

#include <cstdlib> 
#include <time.h> 
#include <iostream> 

using namespace std; 

int main() { 
    int lowest = 0; 
    int highest = 9; 
    srand(time(0)); 
    int number; 
    number = rand() % 9+1; 
    int guess; 
    guess = rand() % 9+1; 
    do { 
     if (number){ 
     switch(number) 
       { 
          case 1: 
           if(guess>lowest) 
           lowest=guess; 
           do { 
            guess=rand()%9 +1; 
            }while(guess<lowest || guess>highest); 
           break; 
          case 2: 
           if(guess<highest) 
           highest=guess; 
           do { 
            guess=rand()%9 +1; 
            }while(guess<lowest || guess>highest); 
           break; 
          case 3: 
            cout<<"\n\n\aHA! I got it right"<< endl; 
           break; 
       } 

     if (guess < number){ 
       cout << "Your guess is less than secret number"<<endl ; 
       } 
     else if (guess > number){ 
       cout << "Your guess is high than secret number"<<endl ; 
       } 
     else 
       cout << "Your guess is right!" << endl; 

     } 
    } while (guess != number); 

    return 0; 
} 

Пожалуйста, помогите мне, как решить эту проблему.

+1

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

+0

Как вы думаете, 'switch (number)' делает? –

ответ

0

Я думаю, вы смущены тем, как работает оператор switch. Как написано, ваш код выглядит number и что-то делает, если номер 1 (в этом случае он выполняет случай 1), или number - 2, или 3. Если number не является одним из этих вариантов, он ничего не делает. Я подозреваю, что вы хотите заменить коммутатор блоком if-else-if-else-if-.... Кажется, вы боретесь с фундаментальным синтаксисом, в частности контролем потока. Чтобы получить дополнительную информацию, вы должны ознакомиться с главой 5 этого сайта: http://www.learncpp.com/. Я думаю, что это поможет вам лучше понять, что делает ваш код.

+0

Спасибо за ваш совет, williamg. Я правильно отвечу. –

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