-5

我正在制作一个 c++ rpg。

这是我的代码: http: //pastebin.com/cyR5bzKR

它让我去-1,然后我不能去任何地方。我也可以去4,然后我哪儿也去不了。

有什么帮助吗?

我不希望这过于复杂。

PS 我正在使用 Code::Blocks 我不认为这是问题所在。

4

4 回答 4

0

在决定玩家是否应该能够移动时,您需要考虑下一个动作。

像这样的东西应该工作......

if(dir == "L" && x-1 >= xMin) {
  printf("You Went Left");
  x--;
}
于 2012-08-15T09:04:50.667 回答
0

你有这样的代码:

if (x >= min) --x;

您正在检查一个值是否大于或等于另一个值,然后再递减它。即如果它相等,你仍然递减,因此,之后它会小于那个值。

解决方案是仅在大于最小值时递减:

if (x > min) --x;
于 2012-08-15T09:41:24.197 回答
0

当您向右移动时,您需要检查您不在最正确的位置。同样,当向左移动时,您需要检查您是否不在最左边的位置。

但是你正在测试你没有超过最右边/最左边的位置(并且还在检查你是否在棋盘上,这似乎没有必要)。

你想要类似的东西

if (dir == "R" && x < xmax) ++x;
else if (dir == "L" && x > xmin) --x;

您所做的其他测试是多余的。

于 2012-08-15T09:44:25.257 回答
-1
    if(dir == "L" && x > xMin)
    {
        printf("You Went Left");
        x--;
    }
    else if(dir == "R" && x < xMax)
    {
        printf("You Went Right");
        x++;
    }
    else
    {
        printf("You can't go that way.");
    }
于 2012-08-15T09:28:24.917 回答