我使用的是Microsoft visual c++ express 2010我有一个变量:Int x表示电子游戏角色的位置。(当然是Y)程序循环,每次它都会改变X的几个位置。但必须在0-800以内。当它到达0(应该是屏幕的边缘)时,它会倒带。
我已经弄清楚了如何在每次程序运行时改变它们的值,但是我如何确保它在0-800范围内保持其值,并在到达位置0时倒带它?它在Main之外完全有自己的功能。谢谢你。
x = (x + 800) % 800;
这将使x
保持在(0..799)
内。如果您确实需要(0..800)
,请将800
替换为801
。
设置方向变量…
int dir = -2;
for(;;) {
x += dir;
if( x < 0 || x >= 800 ) {
dir *= -1;
x += dir;
}
}
首先,您想要什么并不十分清楚。当你说"倒带"时,你是指从相反的一边重新开始,还是转身回到它来的方向?
假设是第一种情况,简单(但有些笨拙)的方法就是进行比较,当/如果值超出范围时,根据需要进行调整:
x -= increment;
if (x < 0)
x = 800;
或:
x += increment;
if (x > 800)
x = 0;
也可以使用余数运算符,但要完全正确地使用它可能会有点笨拙。当你在正方向上时,它是相当直接和简单的,但在负方向上,它不是——在这种情况下,一个负数是完全可能的,所以需要像上面这样简单的测试。如果值只在正方向上,所以你只关心它是否大于极限,它可以正常工作。