我做了类似游戏的东西,你上下移动你的角色(黑匣子),墙上有一些空白,墙是右侧,它是从右到左,如果你触摸墙壁游戏结束。
我在while循环中得到了按键,如<; p>
while(keyboardInput=getKeyPress()){
switch(keyboardInput){/*checks the key and goes up or down*/}
//draws the main character, then also draws the wall.
}
我做了一个wall()函数,它会打印块来制作墙。
问题是,在获得按键后,墙只移动 ,我的按键功能与 _getch()
一起使用我想看到的是,即使用户没有按任何键,墙也会像每秒一样向左移动,按键/移动按键的方式也一样。
我将wall()函数放入wall()函数中。它打印就像我想要的那样,但我不能得到任何按键,因为那个墙()永远循环。
游戏看起来像这样:
*
*
*
*
*
■
*
*
*
*
*
我在等你的回答,谢谢!
答案 0 :(得分:3)
对于任何接近游戏或模拟的东西,你需要了解什么是游戏循环&#34;也被称为&#34;主循环&#34;。有一个很好的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
}
这很天真,在实际案例中效果不好,但基本上就是这个想法。
答案 1 :(得分:1)