**显示无法正常工作,在主要内部实施时不会正确显示电路板。
这是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;}
};
答案 0 :(得分:1)
您的displaycboard()
正在直接修改类成员变量sticks
,在第一个displaycboard()
之后将其缩小为0。下次调用displaycboard()
时,成员变量sticks
为0,表示没有任何内容可以打印出来。
答案 1 :(得分: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
并让它玩5支。请注意,5.99
仍然提供5支...