0

我正在使用 Microsoft Visual C++ Express 2010 我有一个变量:int x,它代表视频游戏角色的位置。(它们当然是 Y)程序循环,每次将 X 更改几个位置。但必须在 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 回答