如何在 C 中创建连续循环,其中循环的每次迭代在其内部的循环的每次迭代中发生一次
How to create continuous loop in C where each iteration of the loop occurs once per iteration of the loop it's inside
我正在用 c 语言创建游戏。游戏有一个名为 loop() 的函数,它调用其他函数并在每个游戏循环期间更新它们。
游戏角色只是一个字符图像。
我遇到的问题是,我希望这个字符图像在按下 1 次按键后继续朝一个方向移动,但是,我似乎只能让它在每次按键时移动一次,这意味着它需要按住获得持续运动。
我尝试过的事情:
我做了一个 while 循环,指定 char 会连续移动,直到它碰到屏幕上的边界......我在这里遇到的问题是 while 循环嵌套在整个游戏 while 循环中,这意味着嵌套循环,在 outloop 执行一次之前循环遍历嵌套循环范围内的所有迭代,这意味着游戏角色立即跳到游戏的边界。
用 if 语句尝试过,正如预期的那样只执行一次。
我还尝试在按下按键后使用布尔值读取 true,并尝试了几个不同的版本。
我只需要了解如何让字符图像根据其存储的速度连续移动,并让图像在整个游戏循环的每次迭代中步进一次。
int is_moving = 0, speed = 0;
char direction = '0';
while(1){ //game loop
if(/* north keypress event */){
is_moving = 1;
speed = 1;
direction = 'n';
}
else if(/* east keypress event */){
is_moving = 1;
speed = 1;
direction = 'e';
}
else if(/* south keypress event */){
is_moving = 1;
speed = 1;
direction = 's';
}
else if(/* west keypress event */){
is_moving = 1;
speed = 1;
direction = 'w';
}
for(int steps = 0; steps < speed && is_moving; ++steps){
/* movement logic and other checks go here */
}
++speed;
}
一旦角色停止移动,请确保将 is_moving
设置为 0
。显然这只是一个简单的示例,但听起来您已经计算出了速度的方向分量。
编辑:
在 for 循环体内,您需要检查 direction
的值,然后让角色适当移动。
我正在用 c 语言创建游戏。游戏有一个名为 loop() 的函数,它调用其他函数并在每个游戏循环期间更新它们。 游戏角色只是一个字符图像。 我遇到的问题是,我希望这个字符图像在按下 1 次按键后继续朝一个方向移动,但是,我似乎只能让它在每次按键时移动一次,这意味着它需要按住获得持续运动。
我尝试过的事情: 我做了一个 while 循环,指定 char 会连续移动,直到它碰到屏幕上的边界......我在这里遇到的问题是 while 循环嵌套在整个游戏 while 循环中,这意味着嵌套循环,在 outloop 执行一次之前循环遍历嵌套循环范围内的所有迭代,这意味着游戏角色立即跳到游戏的边界。
用 if 语句尝试过,正如预期的那样只执行一次。
我还尝试在按下按键后使用布尔值读取 true,并尝试了几个不同的版本。
我只需要了解如何让字符图像根据其存储的速度连续移动,并让图像在整个游戏循环的每次迭代中步进一次。
int is_moving = 0, speed = 0;
char direction = '0';
while(1){ //game loop
if(/* north keypress event */){
is_moving = 1;
speed = 1;
direction = 'n';
}
else if(/* east keypress event */){
is_moving = 1;
speed = 1;
direction = 'e';
}
else if(/* south keypress event */){
is_moving = 1;
speed = 1;
direction = 's';
}
else if(/* west keypress event */){
is_moving = 1;
speed = 1;
direction = 'w';
}
for(int steps = 0; steps < speed && is_moving; ++steps){
/* movement logic and other checks go here */
}
++speed;
}
一旦角色停止移动,请确保将 is_moving
设置为 0
。显然这只是一个简单的示例,但听起来您已经计算出了速度的方向分量。
编辑:
在 for 循环体内,您需要检查 direction
的值,然后让角色适当移动。