我正在制作一个 c++ rpg。
这是我的代码: http: //pastebin.com/cyR5bzKR
它让我去-1,然后我不能去任何地方。我也可以去4,然后我哪儿也去不了。
有什么帮助吗?
我不希望这过于复杂。
PS 我正在使用 Code::Blocks 我不认为这是问题所在。
我正在制作一个 c++ rpg。
这是我的代码: http: //pastebin.com/cyR5bzKR
它让我去-1,然后我不能去任何地方。我也可以去4,然后我哪儿也去不了。
有什么帮助吗?
我不希望这过于复杂。
PS 我正在使用 Code::Blocks 我不认为这是问题所在。
在决定玩家是否应该能够移动时,您需要考虑下一个动作。
像这样的东西应该工作......
if(dir == "L" && x-1 >= xMin) {
printf("You Went Left");
x--;
}
你有这样的代码:
if (x >= min) --x;
您正在检查一个值是否大于或等于另一个值,然后再递减它。即如果它相等,你仍然递减,因此,之后它会小于那个值。
解决方案是仅在大于最小值时递减:
if (x > min) --x;
当您向右移动时,您需要检查您不在最正确的位置。同样,当向左移动时,您需要检查您是否不在最左边的位置。
但是你正在测试你没有超过最右边/最左边的位置(并且还在检查你是否在棋盘上,这似乎没有必要)。
你想要类似的东西
if (dir == "R" && x < xmax) ++x;
else if (dir == "L" && x > xmin) --x;
您所做的其他测试是多余的。
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.");
}