如何在 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 的值,然后让角色适当移动。