나는 리눅스에서 테스트를 할 때 모든 것이 잘되지만 내 윈도우 머신에서는 대각선으로 아래로 그리고 왼쪽으로 갈 수 없다 (그러나 다른 세 개의 대각선으로 갈 수있다).파이썬 - 파이 게임 - 모든 이벤트가 등록되지 않았습니까?
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)
는 내가 확인 치신하지 않았다 번 확인 지금 확인 :
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")
여기에 이동을 수행하는 업데이트 방법입니다. 대각선으로 아래로 그리고 왼쪽으로는 작동하지 않습니다. 나는 아래로 내려 가기 시작한 다음 왼쪽으로 이동하기로 변경하고 왼쪽으로 이동하여 아래로 이동하는 것으로 변경합니다. 누구나 왜 그런 아이디어가 있니?
온 키가 아닌 단추를 누르고 있기 때문에 getkeystate를 사용하는 것이 더 효과적 일 수 있습니다. – ninMonkey