gpt4 book ai didi

C++ 游戏 - 同时循环和按键

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:30 25 4
gpt4 key购买 nike

我做了一个类似游戏的东西,你上下移动你的角色(黑盒子),中间有一堵墙,中间有一些空白,那堵墙在右边,它从右到左,如果你碰壁游戏结束。

我在一个 while 循环中得到按键;

while(keyboardInput=getKeyPress()){
switch(keyboardInput){/*checks the key and goes up or down*/}
//draws the main character, then also draws the wall.
}

我做了一个 wall() 函数,它打印 block 来制作一堵墙。

问题是,在获得按键后,墙移动,我的按键功能适用于_getch()

我想看到的是,即使用户没有按任何键,墙也会每隔一秒向左侧移动一次,并且按键/移动将以相同的方式工作。

我把 wall() 函数放到了 wall() 函数中。它按我想要的方式打印,但我无法获得任何按键,因为 wall() 永远循环

游戏看起来像这样:

                                    *
*
*
*
*



*
*
*
*
*

期待您的回答,谢谢!

最佳答案

对于任何接近游戏或模拟的东西,您都需要了解什么是“游戏循环”,也称为“主循环”。有个不错的explaination of the principle on wikipedia.

基本上你不应该等待输入,但你应该循环更新游戏状态,即使什么都没发生:观察输入,看看是否发生了什么,如果没有,就继续循环,如果有事情发生,就去做,然后继续循环。您绝不能等待输入,您只需检查是否有事情要做。

这也意味着您不应该使用像 _getch() 这样的阻塞调用。您必须使用任何可用的输入功能,只检查是否有事情要做。这在很大程度上取决于您确切使用的输入 API,因此我无法在不知道您使用的 API 的情况下详细介绍。

一个简单的(或者更准确地说:幼稚的)游戏循环看起来像这样:

while( !exit_game )
{
read_input(); // acquire inputs then generate actions interpreted from inputs, if any
update_game(); // update the game to generate it's new state after applying all the actions from all the game entities
render(); // render the graphics and audio
}

这是非常幼稚的,在实际案例中效果不佳,但这基本上就是这个想法。

我推荐阅读thisthis更好地理解什么是游戏循环,但它并不专注于获取输入。

关于C++ 游戏 - 同时循环和按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com