키보드로 패들을 제어하는 방법을 묻는 것 같습니다. 귀하의 컴퓨터에서 실행중인 최종 핑퐁 코드가 있다고 가정합니다 (그렇지 않은 경우 this section 끝에서 찾을 수 있습니다).
- 1 main.py
수입 Window 클래스에서 :
from kivy.core.window import Window
2 -는 다음과 같습니다 있도록 PongGame
클래스의 시작을 다시 정의 :
class PongGame(Widget):
ball = ObjectProperty(None)
player1 = ObjectProperty(None)
player2 = ObjectProperty(None)
def __init__(self, **kwargs):
super(PongGame, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
self._keyboard.bind(on_key_down=self._on_keyboard_down)
def _keyboard_closed(self):
self._keyboard.unbind(on_key_down=self._on_keyboard_down)
self._keyboard = None
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
if keycode[1] == 'w':
self.player1.center_y += 10
elif keycode[1] == 's':
self.player1.center_y -= 10
elif keycode[1] == 'up':
self.player2.center_y += 10
elif keycode[1] == 'down':
self.player2.center_y -= 10
return True
봐라! 왼쪽 패들에 대해 w
과 s
을 누르고 오른쪽 패들에 대해 up
과 down
을 누릅니다.
아, 당분간 작동하는 것처럼 보이지만 각 클래스가 자체 키 확인을 원한다면 어떻게해야합니까? 각 클래스에서 _on_keyboard_down func 만 사용해야합니까? 아니면 키보드를 여러 번 초기화해야합니까? – Alex
@Alex, 그건 다른 질문입니다. 의견을 사용하는 대신 새로운 질문을하십시오. –
필요한 모든 위젯에서 _keyboard.bind()를 사용해야합니다. – Tshirtman