2013-07-15 50 views
1

錯誤在輸出的底部。拋出一個'std :: out_of_range'實例後調用C++ Game Started terminate

Output: 

歡迎來到我的Scramble Word Game!

一)添加詞語進入遊戲數據庫 b)拆卸的話 C)配置的倒計時 d)啓動遊戲 e)選擇遊戲等級 F)查看評分表 G)退出 請輸入字母表選擇:d

比賽開始 終止扔 '的std :: out_of_range' 的實例後,叫什麼():向量:: _ M_range_check 蘋果桔瓜lemondinosaur 運轉完成;中止;實時:1秒;用戶:0ms;系統:0ms

下面的代碼是我的輸出,最新錯誤與我的代碼任何人都可以幫助我謝謝, 任何幫助將不勝感激! 乾杯!

+0

認爲我們缺少部分代碼,因爲你給我們的「輸出」有一些字符串不在代碼中 – MisterJ

+3

'string jumble = levelList.at(rand()%wordList.size ());'索引是否總是 billz

+0

你嘗試過調試嗎?什麼路線崩潰? –

回答

5
levelList.at(rand()% wordList.size()); 

這很可能是超出範圍在某些時候,由於wordList是可能比levelList大。

據推測,你的意思是

levelList.at(rand()% levelList.size()); 
        ^^^^^^^^^ 

您還沒有初始化在startGame宣佈level變量,因此很可能是levelList將完全空的。據推測,你想使用函數參數來指定級別。

+0

Wordlist和levellist實際上是一樣的,只是levellist會根據不同級別比較詞語和排序 –

+0

@WilsonTurner:否,'levelList'只填充'wordList'中的一些單詞,具體取決於'水平「,所以它通常會更小。另外,因爲你永遠不會初始化'level',所以它很可能是空的。 –

+0

當我的遊戲菜單啓動時,我已經提示用戶輸入級別。 –

2

如果你的Word文件包含少於兩個字符,levelList會比wordList短任何的話,那麼這條線

levelList.at(rand()% wordList.size()); 

會造成問題,你的狀態。

0

您不明確地將值賦給設置爲0的變量'level'。您的switch語句不包含這種情況,因此您的levelList爲空。然後嘗試訪問導致超出範圍消息的零長度級別列表中的條目。

相關問題