私は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.");
}