0

Linuxでテストをプレイすると、すべて問題ありませんが、Windowsマシンでは、斜め下および左に移動できません(ただし、他の3つの対角線は移動できます)。

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)

確認したものが何も壊れていないことを再確認するために、今チェックしました。斜め下と左は機能しません。私は下に降り始めてから左に移動するように変更し、左に移動してから下に移動するように変更します。誰かがなぜ何か考えを持っていますか?

4

1 に答える 1

1

このコードが Linux で機能する場合、Windows でもまったく同じように機能すると思います。このような問題は、多くの場合、キーボードのハードウェア制限に関連しています。

両方のテスト、特にキーボードでまったく同じセットアップを使用しましたか? 両方のテストで同じキーボードを使用した場合、Windows ドライバーのせいになりがちです。

コードのせいにする前に、これら 2 つのキーを同時に押して、期待どおりの結果が得られることを確認してください。簡単なテストのために、フラッシュ ゲームなどを起動します。

于 2013-01-18T07:40:47.860 に答える