2013-10-10 61 views
0

嘿家伙我试图找出如何使用switch语句在我的代码中调用函数。我曾尝试寻找许多不同的参考资料,但无论如何,如果有人可以请我把它放在正确的道路上,那将是一个很大的帮助。下面的代码:函数在switch语句中调用。

#include <iostream> 
#include <string> 

using namespace std; 

int playGame(string word); 

int main() 
{ 
int choice; 
bool menu = true; 
do{ 
cout <<"Please select one of the following options: \n"; 

cout << "1: Play\n" 
    "2: Help\n" 
    "3: Config\n" 
    "4: Quit\n"; 

cout << "Enter your selection (1, 2 and 3): "; 
cin >> choice; 
//***************************************************************************** 
// Switch menu to display the menu. 
//***************************************************************************** 
    switch (choice) 
{ 
     case 1: 
     cout << "You have chosen play\n"; 
     int playGame(string word); 
     break; 
    case 2: 
     cout << "You have chosen help\n"; 
     cout << "Here is a description of the game Hangman and how it is played:\nThe  word to guess is represented by a row of dashes, giving the number of letters, numbers and category. If the guessing player suggests a letter or number which occurs in the word, the other player writes it in all its correct positions"; 
     break; 
     case 3: 
     cout << "You have chosen Quit, Goodbye."; 
     break; 
    default: 
     cout<< "Your selection must be between 1 and 3!\n"; 

    } 

}while(choice!=3);  
getchar(); 
getchar(); 


cout << "You missed " << playGame("programming"); 
cout << " times to guess the word programming." << endl; 
} 






int playGame(string word) //returns # of misses 

{ 
    //keep track of misses 
    //guess is incorrect 
    //repeated guess of same character 
    //guess is correct 

    int misses = 0; 
    int exposed = 0; 
    string display = word; 
    for(int i=0; i< display.length(); i++) 
     display[i] ='*'; 


    while(exposed < word.length()) { 
     cout << "Miss:" << misses << ":"; 
     cout << "Enter a letter in word "; 
     cout << display << " : "; 
     char response; 
     cin >> response; 

     bool goodGuess = false; 
     bool duplicate = false; 
     for(int i=0 ; i<word.length() ; i++) 
      if (response == word[i]) 
      if (display[i] == word[i]) { 
       cout << response << " is already in the word.\n"; 
       duplicate = true; 
       break; 
      } else { 
       display[i] = word[i]; 
       exposed++; 
       goodGuess = true; 
      } 
      if (duplicate) 
       continue; 

      if (!goodGuess){ 
       misses ++; 
      cout << response << " is not in the word.\n"; 

      } 
    } 
    cout << "Yes, word was " << word << "." << endl; 
    return misses; 
} 
+0

wrongi语法,其中“字”被字符串替代你想传递。 –

回答

1

你是不是调用switch语句playGame功能,在“案例1”,称“玩笑(字)”

switch (choice) 
{ 
     case 1: 
     cout << "You have chosen play\n"; 
     //int playGame(string word); // this does not call playGame, 
            // it re-declare playGame function again 
     playGame("word");    // this will call playGame with word parameter 
     //^^^^^^^^^^^^^^^ 
     break; 
+0

我一直在玩游戏(单词);词似乎是不确定的? – user2857301

+0

单词未定义,因为原始代码没有声明“单词”变量。你需要把这个playGame(“单词”); – huahsin68

+0

@ user2857301是。如果你需要单词来保存不同的值,你需要定义它并从输入中获取它。 – billz

0
int playGame(string word); 

在您的switch语句可能是问题...尝试:

int misses = playGame(word); 

你正试图从你的琐事方法返回未命中的数量,以便你有将返回数据放入一个变量中。