From 81aed42a91d1c8ac20f43fca0d4447e895d17789 Mon Sep 17 00:00:00 2001 From: Yu-Jie Lin Date: Mon, 12 May 2014 18:17:29 +0800 Subject: [PATCH] Enable keyboard support with explict config option input keyboard The keyboard listening code is taken from Kivy example [1]. [1]: http://kivy.org/docs/api-kivy.core.window.html --- FlappyBird.py | 15 ++++++++++++++- README.md | 10 +++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/FlappyBird.py b/FlappyBird.py index c3e7549..a41d800 100644 --- a/FlappyBird.py +++ b/FlappyBird.py @@ -9,6 +9,8 @@ from kivy.vector import Vector from kivy.app import App from kivy.clock import Clock +from kivy.config import Config +from kivy.core.window import Window from kivy.uix.widget import Widget class Background(Widget): @@ -51,6 +53,14 @@ class Mcnay(Widget): def __init__(self, **kwargs): super(Mcnay, self).__init__(**kwargs) + if Config.getdefault('input', 'keyboard', False): + self._keyboard = Window.request_keyboard( + self._keyboard_closed, self, 'text') + 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 switch_to_normal(self, dt): self.bird_image.source = "images/flappyup.png" @@ -68,6 +78,9 @@ def on_touch_down(self, touch): Clock.unschedule(self.stop_jumping) Clock.schedule_once(self.switch_to_normal, self.jump_time / 5.0) + def _on_keyboard_down(self, keyboard, keycode, text, modifiers): + self.on_touch_down(None) + def update(self): self.pos = Vector(*self.velocity) + self.pos @@ -157,4 +170,4 @@ def build(self): return game if __name__ == "__main__": - FlappyBirdApp().run() \ No newline at end of file + FlappyBirdApp().run() diff --git a/README.md b/README.md index 75e0b61..a073de3 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,12 @@ FlappyKivy Flappy Bird clone programmed in Python + Kivy! -[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=TGRE7G6ASVFVS) \ No newline at end of file +[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=TGRE7G6ASVFVS) + +## Controls + +Tap the touch screen, click using mouse, or start FlappyKivy with keyboard support: + +```sh +$ python FlappyBird.py -c input:keyboard:True +```