擅长:python、mysql、java
<p>有两种方法可以检查键输入,如果它们在事件队列中,或者检查它们的当前状态。在</p>
<h2>事件队列</h2>
<p>当按键被按下或重新设定时,它们会被放入事件队列中,因此您无法直接判断按键是否被按住。有两种解决方法:</p>
<ol>
<li><p>在进入主循环之前调用<code>pygame.key.set_repeat(True)</code>。这将重复地将KEYDOWN事件放入事件队列中,只要它保持不变。</p></li>
<li><p>引入速度变量。当用户按下按键时,将速度设置为某个速度;当用户抬起按键时,将速度设置为0。</p></li>
</ol>
<p>例如:</p>
<pre><code>for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
velocity_x = -5
elif event.key == pygame.K_RIGHT:
velocity_x = 5
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
velocity_x = 0
elif event.key == pygame.K_RIGHT:
velocity_x = 0
position_x += velocity_x
</code></pre>
<h2>状态检查</h2>
<p>您可以通过调用<code>pygame.key.get_pressed()</code>来获得密钥的当前状态。您必须调用<code>pygame.event</code>中的一个函数,以便pygame执行一些必需的内部操作,因此如果您不想使用事件队列,请使用<code>pygame.event.pump()</code>。如果你不这么做,你的操作系统会认为pygame已经崩溃,导致游戏没有响应。不过,您通常希望处理<code>pygame.QUIT</code>事件,这样用户就可以退出了。在</p>
^{pr2}$