globalforest/main.py
2020-09-29 01:38:35 +03:00

166 lines
4.5 KiB
Python

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("""
<ScreenOne>:
BoxLayout:
Button:
text: "Go to Screen 2"
on_press:
root.manager.transition.direction = "left"
root.manager.transition.duration = 1
root.manager.current = "screen_two"
<ScreenTwo>:
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()