from random import randrange from kivy.app import App from kivy.clock import Clock from kivy.lang import Builder from kivy.uix.screenmanager import Screen, ScreenManager from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.uix.popup import Popup from kivy.uix.widget import Widget from kivy.properties import ObjectProperty from kivy.core.window import Window from kivy.graphics import Rectangle Builder.load_string(""" : BoxLayout: Button: text: "Go to Screen 2" on_press: root.manager.transition.direction = "left" root.manager.transition.duration = 1 root.manager.current = "screen_two" : BoxLayout: Button: text: "Go to Screen 1" on_press: root.manager.transition.direction = "right" root.manager.transition.duration = 1 root.manager.current = "screen_one" """) class ScreenOne(Screen): pass class ScreenTwo(Screen): pass screen_manager = ScreenManager() screen_manager.add_widget(ScreenOne(name="screen_one")) screen_manager.add_widget(ScreenTwo(name="screen_two")) def collides(rect1, rect2): r1x = rect1[0][0] r1y = rect1[0][1] r2x = rect2[0][0] r2y = rect2[0][1] r1w = rect1[1][0] r1h = rect1[1][1] r2w = rect2[1][0] r2h = rect2[1][1] if (r1x < r2x + r2w and r1x + r1w > r2x and r1y < r2y + r2h and r1y + r1h > r2y): return True else: return False class GameWidget(Widget): def __init__(self, **kwargs): super().__init__(**kwargs) self._keyboard = Window.request_keyboard(self._on_keyboard_closed, self) self._keyboard.bind(on_key_down=self._on_key_down) self._keyboard.bind(on_key_up=self._on_key_up) self.nearbyobj = [] #for obj in range(10): with self.canvas: self.player = Rectangle(source="assets/images/player.png", pos=(0,0), size=(100,100)) self.enemy = Rectangle(pos=(300,300), size=(80,80)) self.keysPressed = set() Clock.schedule_interval(self.move_step,0) def _on_keyboard_closed(self): self._keyboard.unbind(on_key_down=self._on_key_down) self._keyboard.unbind(on_key_up=self._on_key_up) self._keyboard = None def _on_key_down(self, keyboard, keycode, text, modifiers): self.keysPressed.add(text) def _on_key_up(self,keyboard,keycode): text = keycode[1] if text in self.keysPressed: self.keysPressed.remove(text) def move_step(self,dt): currentx = self.player.pos[0] currenty = self.player.pos[1] step_size = 200 * dt if "w" in self.keysPressed: currenty += step_size if "s" in self.keysPressed: currenty -= step_size if "a" in self.keysPressed: currentx -= step_size if "d" in self.keysPressed: currentx += step_size self.player.pos = (currentx, currenty) if collides((self.player.pos,self.player.size),(self.enemy.pos,self.size)): print("X") else: print('.') class GlobalForest(App): def build(self): #return Label(text='Hello world') return GameWidget() class CustomPopup(Popup): pass class SampleBoxLayout(BoxLayout): checkbox_is_active = ObjectProperty(False) def checkbox_18_clicked(self, instance, value): if value is True: print("Checkbox Checked") else: print("Checkbox is Unchecked") blue = ObjectProperty(True) red = ObjectProperty(False) green = ObjectProperty(False) def switch_on(self, instance, value): if value is True: print("Switch On") else: print("Switch Off") def open_popup(self): the_popup = CustomPopup() the_popup.open() def spinner_clicked(self, value): print("Spinner Value " + value) class MainApp(App): def build(self): #Window.clearcolor = (1, 1, 1, 1) return screen_manager global app, screens app = self screens = {'main_screen': MainScreen(name='main_screen'), 'about_screen': AboutScreen(name='about_screen')} self.screen_manager = ScreenManager self.main() if __name__ == '__main__': #app = GlobalForest() app = MainApp() app.run()