2014-10-01 118 views
-2

我的任務是創建一個猜測遊戲,其中計算機猜測我的號碼,並在其中猜測計算機的號碼。我已經寫出了我的代碼,但它不完整。我想創建一個菜單,以便用戶可以選擇他想玩哪個遊戲,並且我無法將兩個程序合併爲一個,因此它們都會運行。有人可以幫助我嗎?第一場比賽很好,但從那裏我真的不知道我在做什麼。C++中的隨機猜測遊戲

#include<iostream> 
#include<ctime> 
#include<cstdlib> 
using namespace std; 

int main() 
{ 

    const int min = 1; 
    const int max = 100; 
    int num = 2 && 3 && 4; 
    int prevMin = 0; 
    int prevMax = 0; 
    int tries = 0; 
    int guess = 0; 
    int userNum = 0; 
    int userGuess = 0; 
    int systemNum = 0; 
    int systemGuess = 0; 



    cout << "Welcome to the Guessing Game!" << endl; 
    cout << "Enter a 2 to play Game 1 or a 3 to play Game 2. Or enter 4 to quit." << endl; 
    cin >> num; 

    if (num == 2) 
    { 
     cout << "Welcome to Game 1!" << endl; 
     cout << "User, enter a random number between " << min << " and " << max << " : "; cin >> userNum; 
    } 


    srand(time(0)); 
    systemGuess = rand() % 100 + 1; 

    do 
    { 
     cout << "System, guess the user's number between " << min << " and " << max << ": " << systemGuess << endl; 
     cin.get(); 
     ++tries; 
     if (systemGuess > max || systemGuess<min) 
     { 
      cout << "I said guess a number between " << min << " and " << max << " stupid." << endl; 
     } 

     if (systemGuess > userNum) 
     { 
      cout << "Too high. Guess lower." << endl; 
      prevMax = systemGuess; 

      systemGuess = rand() % (prevMax - prevMin) + prevMin; 

      if (systemGuess == prevMin) 
       systemGuess++; 
     } 

     else if (systemGuess < userNum) 
     { 
      cout << "Too low. Guess higher." << endl; 
      prevMin = systemGuess; 

      systemGuess = rand() % (prevMax - prevMin) + prevMin; 

      if (systemGuess == prevMin) 
       systemGuess++; 
     } 




    } while (systemGuess != userNum); 

    cout << systemGuess << endl; 
    cout << " I guessed it right! It took me " << tries << " guess(es). " << endl; 




    srand(time(0)); 
    systemNum = rand()% 100 + 1; 




    //Beginning of second game 

    do 
    { 
     if (num == 3) 
    { 
     cout << "Welcome to Game 2!" << endl; 
     cout << "User, try to guess the computer's number that's between " << min << " and " << max << " . " << endl; 
    } 


     cout << "Enter your guess." << endl; 
     cin >> userGuess; 
     tries++; 

     if (userGuess > systemNum) 
     { 
      cout << "Too high. Guess lower." << endl; 
      cin >> userGuess; 
     } 
     else if (userGuess < systemNum) 
     { 
      cout << "Too low. Guess higher." << endl; 
      cin >> userGuess; 
     } 
     else 
     { 
      cout << "Correct! It took you long enough! Lol... " << endl; 
      cin >> userGuess; 
     } 
     while (userGuess != systemNum); 

    } 







    system("pause"); 
    return 0; 


} 
+0

不回答是我寧願相關:輸入 「2」 玩遊戲-1或 「3」玩遊戲2。或者輸入「4」退出。只是這樣不會混淆用戶。 – 2014-10-01 09:55:18

+0

好的,我真正想做的唯一事情就是讓實際的菜單工作。但我不知道如何。 – 2014-10-01 10:04:29

+0

你想要菜單,並且當用戶輸入2進入遊戲1或3進入遊戲2並且一旦用戶進入4或當任一遊戲結束時退出? – 2014-10-01 10:07:16

回答

0

讓這兩場比賽兩個不同的功能(每個都有自己的局部變量),建立第三個是一個循環,對遊戲提示(當「退出」選擇突破),並調用相應的功能,然後從main調用第三個。

+0

我希望我能說我知道你在說什麼,但我不能。這只是我的第三週編碼,我只是穩步地嘗試以一些同齡人的速度學習。 – 2014-10-01 10:09:26

+0

他的意思是不要把所有的代碼填充到主模塊中,但將其分解成模塊 – CashCow 2014-10-01 10:24:25

0

您可以使用if...else

cout << "Welcome to the Guessing Game!" << endl; 
    cout << "Enter a 2 to play Game 1 or a 3 to play Game 2. Or enter 4 to quit." << endl; 
    cin >> num; 

if (num == 2) 
{//game1 
} 
else if(num==3) 
{//game2 
} 
else if(num==4) 
{return 0; 
}else 
{ 
cout<<"Invalid choice!"; 
system("pause"); 
return 1; 
} 
//print highscores 
system("pause"); 
return 0; 

你的整個代碼:

#include<iostream> 
#include<ctime> 
#include<cstdlib> 
using namespace std; 

int main() 
{ 

    const int min = 1; 
    const int max = 100; 
    int num = 2 && 3 && 4; 
    int prevMin = 0; 
    int prevMax = 0; 
    int tries = 0; 
    int guess = 0; 
    int userNum = 0; 
    int userGuess = 0; 
    int systemNum = 0; 
    int systemGuess = 0; 
     srand(time(0)); 


    cout << "Welcome to the Guessing Game!" << endl; 
    cout << "Enter a 2 to play Game 1 or a 3 to play Game 2. Or enter 4 to quit." << endl; 
    cin >> num; 

    if (num == 2) 
    { 
     cout << "Welcome to Game 1!" << endl; 
     cout << "User, enter a random number between " << min << " and " << max << " : "; cin >> userNum; 


    systemGuess = rand() % 100 + 1; 

    do 
    { 
     cout << "System, guess the user's number between " << min << " and " << max << ": " << systemGuess << endl; 
     cin.get(); 
     ++tries; 
     if (systemGuess > max || systemGuess<min) 
     { 
      cout << "I said guess a number between " << min << " and " << max << " stupid." << endl; 
     } 

     if (systemGuess > userNum) 
     { 
      cout << "Too high. Guess lower." << endl; 
      prevMax = systemGuess; 

      systemGuess = rand() % (prevMax - prevMin) + prevMin; 

      if (systemGuess == prevMin) 
       systemGuess++; 
     } 

     else if (systemGuess < userNum) 
     { 
      cout << "Too low. Guess higher." << endl; 
      prevMin = systemGuess; 

      systemGuess = rand() % (prevMax - prevMin) + prevMin; 

      if (systemGuess == prevMin) 
       systemGuess++; 
     } 




    } while (systemGuess != userNum); 

    cout << systemGuess << endl; 
    cout << " I guessed it right! It took me " << tries << " guess(es). " << endl; 
    } 



    systemNum = rand()% 100 + 1; 


//Beginning of second game 

     if (num == 3) 
    { 
    do 
    { 

     cout << "Welcome to Game 2!" << endl; 
     cout << "User, try to guess the computer's number that's between " << min << " and " << max << " . " << endl; 



     cout << "Enter your guess." << endl; 
     cin >> userGuess; 
     tries++; 

     if (userGuess > systemNum) 
     { 
      cout << "Too high. Guess lower." << endl; 
      cin >> userGuess; 
     } 
     else if (userGuess < systemNum) 
     { 
      cout << "Too low. Guess higher." << endl; 
      cin >> userGuess; 
     } 
     else 
     { 
      cout << "Correct! It took you long enough! Lol... " << endl; 
      cin >> userGuess; 
     }} 
     while (userGuess != systemNum); 


    }else if(num==4)return 0;  
else{ 
cout<<"Invalid choice!"; 
system("pause"); 
return 1; 
} 

//print highscores 


    system("pause"); 
    return 0; 

} 
+0

我仍然有錯誤,程序只能運行第一個遊戲,菜單仍然不起作用。 – 2014-10-01 11:47:29

+0

@JatoriGraves,我會發布整個代碼。它應該工作。 – 2014-10-01 11:49:03

+0

好的,我需要每天練習編碼才能真正瞭解它。 – 2014-10-01 11:58:32