我正在使用Microsoft Visual C ++ express 2010 我有一个变量: int x,表示视频游戏角色的位置。 (他们当然是Y) 程序循环,每次它改变X几个地方。但必须在0-800之间。当它到达0(它应该是屏幕的边缘)时,它会倒带。
我已经想出每次程序运行时如何更改它们的值,但是我如何确保它保持在0-800范围内的值,并在它到达位置0时倒回它? 并且它完全在Main之外有它自己的功能。 谢谢。
答案 0 :(得分:2)
x = (x + 800) % 800;
这会使x
保持在(0..799)
之内。如果您确实需要(0..800)
,请将800
替换为801
。
答案 1 :(得分:1)
制作方向变量......
int dir = -2;
for(;;) {
x += dir;
if( x < 0 || x >= 800 ) {
dir *= -1;
x += dir;
}
}
答案 2 :(得分:0)
首先,目前还不是很清楚你想要什么。当你说“倒带”时,你的意思是再次从另一侧重新开始,或者转身向它的方向移动。
假设第一种,简单(但有点笨拙)的方法是进行比较,当/如果值超出范围,则根据需要进行调整:
x -= increment;
if (x < 0)
x = 800;
或:
x += increment;
if (x > 800)
x = 0;
你也可以使用余数运算符,但要使它完全正确可能有点笨拙。当你朝着积极的方向前进时,它是相当直接和简单的,但在负面方向,它不是 - 在这种情况下,负数是完全可能的,因此需要如上所述的简单测试。如果值只是朝着正方向发展,那么你只关心它变得超过限制,它可以正常工作。