C 如何同时使用多个while循环?
比如说,在电子游戏中,我需要两个while循环同时监听,一个到:C 如何同时使用多个while循环?,c,while-loop,C,While Loop,比如说,在电子游戏中,我需要两个while循环同时监听,一个到: while (up == true) movePlayerX(2) 另一项是: while (right == true) movePlayerY(2) 如果出现以下情况,我如何让玩家同时向上和向右移动: int main() { while(1) printf("hello"); while(1) printf("world"); return(0); } 只会回你好吗?有可能
while (up == true)
movePlayerX(2)
另一项是:
while (right == true)
movePlayerY(2)
如果出现以下情况,我如何让玩家同时向上和向右移动:
int main()
{
while(1)
printf("hello");
while(1)
printf("world");
return(0);
}
只会回你好吗?有可能让两个while循环同时工作还是必须轮流工作?我知道在汇编级,他们必须轮流进行,但对于高级编程:
while(1)
{
while( up == true)
movePlayerX(2)
break;
while( right == true)
movePlayerY(2)
break;
}
这种情况如何:
while(1)
answer = promptUserForData(); //user enters data at their own pace
chart = addAnswerToChart(answer); //char is updated when user updates it
while(1)
chart = someOtherDataThatEffectsChart(randData); //something else effects the chart
while(1)
printOutChart(chart); //chart is constantly being printed out
对于您提出的关于同时运行多个while的问题,我认为它可以工作的唯一方式是在多个并行线程上,在您的情况下,这是没有理由的,因为您应该重新构造代码以更智能地工作 我不知道你是如何设置你的游戏的,但是最好的方法是在一个无限循环中分步执行游戏逻辑。 你的循环应该是这样的,而不是向上询问:
void mainGameLoop () {
while (!gameQuit) {
handleInput();
handleLogic();
handleDrawing();
}
这样,游戏的每个循环首先处理输入事件,如键盘按下或鼠标单击/移动,然后处理游戏逻辑并将其绘制到屏幕上
对于球员的移动有很多方法,但我建议的是X/Y加速模型。它的工作方式是,player对象有一个xSpeed和ySpeed变量,它告诉他在该方向上移动的速度。对于移动,您要做的是,如果按下移动键,如果移动是在轴速度的负方向,您可以增加或减少,或者直到它达到您想要的最大速度
然后,在逻辑中,你只需添加一个摩擦力,它会减慢玩家的速度,因此,如果没有按下移动键,玩家会在几圈后停止
最后,要移动玩家,只需将xSpeed和ySpeed添加到他的位置
非常简单的实现如下所示。我将使用一些表示输入处理的伪函数
void handleInput() {
if (keyPressed)
switch(key) {
case upArrow:
ySpeed -= 0.1;
break;
case downArrow:
ySpeed += 0.1;
break;
case leftArrow:
ySpeed -= 0.1;
break;
case rightArrow:
ySpeed += 0.1;
break;
}
}
void handleLogic() {
// Clamp speed values to maximum of |1| speed
if (ySpeed > 1)
ySpeed = 1;
if (ySpeed < -1)
ySpeed = -1;
if (xSpeed > 1)
xSpeed = 1;
if (xSpeed < -1)
xSpeed = -1;
// Friction slowing down the movement if no movement keys are pressed
if (ySpeed > 0)
ySpeed -= 0.05;
else if (ySpeed < 0)
ySpeed += 0.05;
if (xSpeed > 0)
xSpeed -= 0.05;
else if (xSpeed > 0)
xSpeed -= 0.05;
xPosition += xSpeed;
yPosition += ySpeed;
}
值仅用于此处的示例。你可以试着用它们来处理你想要的角色。也许你想要while 1{if up movePlayerX2;if right moveplayer2;}我想你在我第一次编辑之前就已经发布了,但无论如何,我认为你的答案比我的第四段代码更优雅,但仍然是等效的。我更想弄清楚如何更新输入到另一个程序中的数据,同时从另一个源收集数据并提示用户输入。哦,现在我看到了你的新编辑。是的,现在我认为它是等效的,虽然从while循环中断而不是仅仅使用if有点奇怪。是的,我同意while-break的错误用法。无论如何,我想我需要两个独立的可执行文件和一个文件来完成最后一部分,因为不管我怎么想,我都会用用户输入来暂停我的程序。视频游戏如何说更新AIs&environment,同时仍在收听while 1{if up movePlayerX2;if right MovePlayer2;}感谢您的回复。我想说的是一般性的,但游戏只是一个例子,我正在构建银行家算法的图形表示。一个窗口将有一个系统资源的实时图形,另一个窗口将提示用户输入。从你的回答中我得到了一个想法:我可以让用户输入成为一个单独的程序,写入一个文件或线程,我还没有真正学习线程,所以我想那是我的夜晚,然后你说的handleInput函数可以只听文件或处理线程。再次感谢。