2014-11-06 86 views
-2

現在我正在用C++編寫Hangman遊戲。我目前的麻煩是我有一個字符串替換文件中隨機選擇的單詞,並用「*」替換它。不幸的是,我的代碼沒有用正確的字母/單詞猜測替換它們,我已經用斷點檢查了這個單詞是什麼。除非你有指導如何在本程序中執行它,否則請忽略HANGMAN繪圖。任何幫助,將不勝感激。 我的文本文件中有如下的話: 蘋果 橙色 車 卡車 自行車 貓 狗 蛇 岩石 襪子 藍色 紅色 顏色用Hangman C++中的字母替換佔位符C++

我的代碼如下:

int wordFill(char guess, string theWordSecret, string&guessWord) //function for determing if you guess a letter contained 
{ 
    int i; 
    int hits = 0; //letter hits within the word 
    int many = theWordSecret.length(); 

    for (i = 0; i < hits; i++) 
    { 
     if (guess == guessWord[i]) 
      return 0; 
     if (guess == theWordSecret[i]) 
     { 
      guessWord[i] == guess; 
      hits++; 
     } 
    } 
    return hits; 
} 
+0

是否有任何需要轉儲所有代碼?一個最小的例子應該說明你的代碼中哪一部分存在問題。 – 2014-11-06 01:34:59

+0

我只做了這麼大的一部分,看看問題是否可能包含在代碼的另一部分中。 – 2014-11-06 01:43:07

+0

我想幫助你。少即是多。如果你傾倒許多可能會被閱讀的無關代碼? – 2014-11-06 01:44:55

回答

1

對於wordFill函數中的初學者,for循環應該說

for (i = 0; i < many; i++) 

而不是

for (i = 0; i < hits; i++) 

要更換星號的神祕添加以下代碼,如果用戶猜一個正確的字母

for (int replace = 0; replace < mystery.length(); replace++) 
{ 
    if (theWord[replace] == letter) 
    { 
     mystery[replace] = letter; 
    } 
} 

這應該解決所有的問題(目前)。

+0

我應該把它放在哪裏?當你發佈這個消息時,我的隊友剛剛發現了很多部分。 – 2014-11-06 01:58:20

+0

我發佈的代碼的第二部分屬於你的main函數中的else語句中的while循環。第60行是具體的 – 2014-11-06 02:00:05

+0

真棒男人謝謝。這有很大幫助。 – 2014-11-06 02:04:17

1

至於拉菲指出你是比較i < hits這當然是相當於i < 0

另外請注意,您的代碼行:

guessWord[i] == guess;

是不是賦值:它是一個比較 - 謹防==而不是=

+0

感謝你們的幫助。它幫助了很多。現在我們已經接近完成了。 – 2014-11-06 02:05:04

+0

@Eric傑西好。請給Rafi打個勾,回答你的問題,並給他一些信用,並提供任何實際幫助你的答案。最後,請在發佈您的下一個問題之前完整閱讀本文:http://stackoverflow.com/help/dont-ask – 2014-11-06 02:07:17