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

问题描述 投票:0回答:1

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

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

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

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

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

loops while-loop statements
1个回答
0
投票
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的值,然后让角色适当移动。

© www.soinside.com 2019 - 2024. All rights reserved.