Klavyelerin klavyeyle nasıl kontrol edileceğini soruyorsunuzdur. Bilgisayarınızda çalışan son ping pong kodlarının olduğunu varsayalım (eğer değilse, onları this section'un sonunda bulabilirsiniz).
1 - main.py
ithalat Pencere sınıfında:
from kivy.core.window import Window
2 - aşağıdaki gibi görünecek şekilde PongGame
sınıfının başlangıcını yeniden tanımla:
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
Voilà! Sol kürek için w
ve s
ve sağ kürek için up
ve down
tuşlarına basın.
Ah, şu an için çalışmak gibi görünüyor, ama ben kendi anahtar denetimi sahip olmak her sınıf istiyorsa ben ne yapardım? Her sınıfta sadece _on_keyboard_down func kullanmalı mıyım? Yoksa klavyeyi birden çok kez başlatmalı mıyım? – Alex
@Alex, bu farklı bir soru. Yorumları kullanmak yerine yeni bir soru sormaktan çekinmeyin. –
_keyboard.bind() öğesini ihtiyacınız olan tüm widget'larda kullanmanız gerekir. – Tshirtman