如何在C中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次相关的知识,希望对你有一定的参考价值。

我正在用c创建一个游戏。游戏中有一个叫做loop()的函数,它调用其他函数并在每个游戏循环中更新它们。游戏角色只是一个角色形象。我遇到的问题是,我希望这个char图像在1次按键后继续向一个方向移动,但是,我似乎只能按每次按键移动一次,这意味着它需要被按下来得到持续的运动。

我试过的事情:我做了一个while循环,指定char会一直移动直到它到达屏幕边界...我在这里遇到的问题是while循环嵌套在整个游戏中循环,意味着嵌套循环在outloop执行一次之前循环遍历嵌套循环范围内的所有迭代,这意味着游戏角色立即跳转到游戏的边界。

尝试使用if语句,按预期只执行一次。

我也尝试使用布尔值来实现一次按键,并尝试了几个不同的版本。

我只需要了解如何使char图像根据其存储的速度连续移动,并在整个游戏循环的每次迭代中使图像步进一次。

答案
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中创建连续循环,其中循环的每次迭代在其内部循环的每次迭代中发生一次的主要内容,如果未能解决你的问题,请参考以下文章

迭代器和for循环工作机制

在 cython 的循环中创建 c++ 映射

如何使用引导程序和 for 循环在 django 中创建电影片段?

在 Python - 3.x 中创建可迭代的自定义对象后,有没有办法防止无限循环?

如何在 Python 中创建多个 for 循环列表的递归以获得组合? [复制]

如何在C ++中创建循环内的结构成员