当我在linux上进行测试时,一切都很好,但是在我的Windows机器上,我不能沿对角线向下和向左(但可以去其他三个对角线)。
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
self.running = False
if event.type == KEYDOWN:
if event.key == K_SPACE:
self.player.shooting = True
if event.key == K_UP:
self.player.moving.add("forward")
if event.key == K_DOWN:
self.player.moving.add("back")
if event.key == K_RIGHT:
self.player.moving.add("right")
if event.key == K_LEFT:
self.player.moving.add("left")
if event.type == KEYUP:
if event.key == K_SPACE:
self.player.shooting = False
if event.key == K_UP:
self.player.moving.remove("forward")
if event.key == K_DOWN:
self.player.moving.remove("back")
if event.key == K_RIGHT:
self.player.moving.remove("right")
if event.key == K_LEFT:
self.player.moving.remove("left")
以下是执行移动的更新方法:
def update (self, time_passed):
tp = time_passed # From clock.tick(60)
if self.moving:
if "forward" in self.moving and (self.rect.top > 0):
self.rect.move_ip(0, -self.speed*tp)
if "back" in self.moving and (self.rect.bottom < self.screen_ref[1]):
self.rect.move_ip(0, self.speed*tp)
if "left" in self.moving and (self.rect.left > 0):
self.rect.move_ip(-self.speed*tp, 0)
if "right" in self.moving and (self.rect.right < self.screen_ref[0]):
self.rect.move_ip(self.speed*tp, 0)
我刚刚检查了一下,检查一下我没有打破任何确认。斜向下和向左不起作用。我要么开始下降然后改为向左移动,要么向左开始向下移动。任何人都有任何想法?
答案 0 :(得分:1)
如果此代码适用于Linux,我希望它在Windows中的工作方式完全相同。这样的问题通常与键盘的硬件限制有关。
您是否对两个测试使用完全相同的设置,特别是键盘?如果你在两个测试中使用相同的键盘,我会倾向于责怪Windows驱动程序。
在责备代码之前,请确保您可以同时按下这两个键并获得预期的结果。启动Flash游戏或快速测试。