0

是的。所以,我正在尝试为猜谜游戏制作代码。在这个游戏中,有一个困难模式。在困难模式下,您有 15 次猜测,并且必须在 1 到 500 之间进行猜测。但我的问题是:我正在尝试让困难模式保存并显示您的赢/输,但是当它输出 wins.txt 的内容时它输出如下内容:

Wins: 0x7fffee26df78
Losses: 0x7fffee26e178

这真的让我很困惑。这是我为此拥有的代码的一部分:

ifstream losses_var("losses.txt");
ifstream wins_var("wins.txt");
losses_var>> loss;
wins_var>> win;
wins_var.close();
losses_var.close();

然后它被调用:

cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n"

如果您想查看完整的源代码,请访问:http: //pastebin.com/gPT37uBJ

我的第二个问题:获胜时不会显示困难模式。这几乎就是整个问题。在我的代码中,询问用户输入的循环使用 while (guess != randNum) 所以在最后的括号中,我有我希望代码在用户获胜时显示的内容,但它只是没有运行。它只是停止。如果有人可以帮助我,我会很高兴。有错误的行是第 97 到 105 行。同样,源代码在这里: http: //pastebin.com/gPT37uBJ

4

3 回答 3

1

你把你的变量名弄糊涂了

cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n";

应该

cout<<"Wins: "<< win <<"\nLosses: "<< loss <<"\n";

选择好的变量名很重要。一个原因是,您不会对变量的含义感到困惑(如果您感到困惑,请考虑其他人查看您的代码的情况)。

于 2012-11-23T10:45:15.543 回答
0

其他人已经回答了输出问题(winvs. wins)。另一个问题可能在于您的while循环嵌套逻辑。外循环 ( while (guess != randNum)) 开始,但其主体包含整个内循环 ( while (guesses_left != 0))。这意味着在内部循环终止之前不会再次检查外部条件,这意味着您已经用完了猜测。另请注意,如果您猜对了,内循环将永远不会终止。你可能想要这样的东西:

while (guesses_left > 0) {
  // input user's guess
  if (guess < randNum) {
    // process it
  } else if (guess > randNum) {
    // process it
  } else {
    // it's equal, user won
    // do what's necessary for a win
    return 0;
  }
}
// ran out of guesses
// do what's necessary for a loss
return 0;
于 2012-11-23T11:09:18.260 回答
0

你没有写你的变量win和. 从您粘贴的代码中,我可以看到它是ofstream 对象,这意味着您可能在那里看到了地址。我建议您选择更多信息变量名称,以避免难以发现这样的错误。losscoutwinslosses

于 2012-11-23T10:46:28.910 回答