2014-07-25 148 views
-1

**顯示器工作不正常,在主內部實施時不會正確顯示板子。C++ NIM遊戲邏輯錯誤

這是爲NIM遊戲< < 得主功能和顯示功能更新的代碼不能正常工作** 我需要幫助搞清楚如何讓顯示功能正常工作,請。

class cboard{ 

    private: 
int sticks; 
bool player; 

    public: 
//default constructor 
cboard(){sticks=10;} 

//constructor with parameter given 
cboard(int x){sticks=x;} 

//stick set 
void setstick(int m){sticks-=m;} 

//display stick getter 
int get_sticks(){return sticks;} 

//display function, a.k.a baord getter 
void displaycboard() 
{for (int i=sticks; i>0; i--) 
    {cout<<"| ";} 
    cout<<endl;} 

}; 
+1

'goto壞;'哦諷刺... – user657267

+0

的意思是顯示多功能lmao – user3717385

+0

所以你的問題是你不能有一個以上的答案對同一個問題,但我會看看,並在我的答案的底部添加額外的點 – chrisb2244

回答

0

你的問題在於displaycboard()for循環需要更改非sticks的變量。

更改您的代碼來讀取

for (int i = sticks; i > 0; i--) 
{ 
... 
} 

,它工作正常。由於在循環中被重複調用,它仍然輸出兩行(因爲循環迭代,並且在第一次循環的開始,第二循環的開始時以相同數量的枝條調用)。

編輯:參照評論你的goto BAD,你可以替換的東西,如

int s = 0; 
while (s <= 2) 
{ 
    cout << "How many... greater than 2" << endl; 
    cin >> s; 
} 

第二個編輯:您的評論反映了你知道這是不是安全的,但你可以處理使用字符串流(#include <sstream>

std::string instring; 

    while (s <= 2) 
    { 
    cout<<"How many sticks would you like to play with this game (Greater than 2): "; 
    getline(cin, instring); 
    stringstream(instring) >> s; 
    } 

這將允許你進入像1.25並有計劃尋求一個新的值,或5.25並讓它發揮W¯¯非int類型,並ith 5支。請注意,5.99仍然給5支...

+0

順便說一句,給一個非整數值真的搞砸了這個程序,在這兩個實現 – chrisb2244

+0

AHHHHH我明白我做錯了什麼。非常感謝你,特別是因爲這個項目是在晚上結束的時候。關於你的評論,我只是想表明我的教授的多功能性,我意識到它不實用或安全。 – user3717385

+0

我是新來的這個論壇,我剛剛完成了我的項目,你說的事實上工作。但現在我有同樣的確切問題,並想知道如果你能幫助我在我的查詢。我願意儘可能提高你的代表當我有資格 – user3717385

1

displaycboard()直接修改類的成員變量sticks,它減少到0的第一displaycboard()後。下次您撥打displaycboard()時,成員變量sticks爲0,表示沒有任何可打印的內容。