我正在使用 Microsoft Visual C++ Express 2010 我有一个变量:int x,它代表视频游戏角色的位置。(它们当然是 Y)程序循环,每次将 X 更改几个位置。但必须在 0-800 之间。当它到达 0(应该是屏幕的边缘)时,它会倒带。
我已经知道如何在每次程序运行时更改它们的值,但是我如何确保它的值保持在 0-800 范围内,并在它到达位置 0 时倒回它?它在 Main 之外完全有自己的功能。谢谢你。
我正在使用 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;
您也可以使用余数运算符,但要完全正确可能有点笨拙。当你往积极的方向前进时,它相当直接和简单,但在消极的方向上,它不是——在这种情况下,一个负数是完全可能的,所以需要像上面这样的简单测试。如果该值仅朝正方向发展,那么您只关心它变得大于限制,但它可以正常工作。