0

私は Microsoft Visual C++ Express 2010 を使用しています。変数には、ビデオ ゲームのキャラクターの位置を表す int x があります。(もちろん、それらは Y です) プログラムはループし、そのたびに X を 2 桁ずつ変更します。ただし、0 ~ 800 の範囲内である必要があります。0 (画面の端) に達すると巻き戻されます。

プログラムが実行されるたびに値を変更する方法を見つけましたが、その値を 0 から 800 の範囲に保ち、位置 0 に達したときに巻き戻すにはどうすればよいですか? また、Main の外部に完全に独自の機能があります。ありがとうございました。

4

3 に答える 3

2
x = (x + 800) % 800;

これはx以内に収まります(0..799)。本当に必要な場合は(0..800)、に置き換え800801ください。

于 2013-05-14T23:38:37.213 に答える
1

方向変数を作成...

int dir = -2;

for(;;) {
    x += dir;
    if( x < 0 || x >= 800 ) {
        dir *= -1;
        x += dir;
    }
}
于 2013-05-14T23:39:55.330 に答える
0

まず、あなたが何を望んでいるかが正確にはっきりしていません。「巻き戻す」とは、反対側からやり直すということですか、それとも向きを変えて元の方向に戻るということですか。

最初の場合、簡単な (しかしやや不器用な) 方法は、単に比較を行い、値が範囲外になった場合に、必要に応じて調整することです。

x -= increment;
if (x < 0)
   x = 800;

また:

x += increment;
if (x > 800)
   x = 0;

剰余演算子を使用することもできますが、完全に正しくするには少し扱いに​​くい場合があります。正の方向に進む場合は、かなり直接的で単純ですが、負の方向にはそうではありません。この場合、負の数は完全に可能であるため、上記のような簡単なテストが必要です。値が正の方向にしか進まない場合は、制限よりも大きくなることだけを気にしますが、問題なく動作します。

于 2013-05-14T23:39:26.593 に答える