globalforest/main.py

166 lines
4.5 KiB
Python
Raw Normal View History

2020-09-25 10:20:37 -04:00
from random import randrange
2020-09-20 10:51:02 -04:00
from kivy.app import App
2020-09-21 17:13:51 -04:00
from kivy.clock import Clock
2020-09-28 18:38:35 -04:00
from kivy.lang import Builder
2020-09-25 10:20:37 -04:00
2020-09-28 18:38:35 -04:00
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.boxlayout import BoxLayout
2020-09-20 10:51:02 -04:00
from kivy.uix.label import Label
2020-09-28 18:38:35 -04:00
from kivy.uix.popup import Popup
2020-09-21 17:13:51 -04:00
from kivy.uix.widget import Widget
2020-09-25 10:20:37 -04:00
2020-09-28 18:38:35 -04:00
from kivy.properties import ObjectProperty
from kivy.core.window import Window
2020-09-21 17:13:51 -04:00
from kivy.graphics import Rectangle
2020-09-20 10:51:02 -04:00
2020-09-28 18:38:35 -04:00
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"))
2020-09-25 10:20:37 -04:00
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
2020-09-21 17:13:51 -04:00
class GameWidget(Widget):
2020-09-25 10:20:37 -04:00
def __init__(self, **kwargs):
2020-09-21 17:13:51 -04:00
super().__init__(**kwargs)
2020-09-25 10:20:37 -04:00
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):
2020-09-21 17:13:51 -04:00
with self.canvas:
2020-09-25 10:20:37 -04:00
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)
2020-09-21 17:13:51 -04:00
2020-09-25 10:20:37 -04:00
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('.')
2020-09-20 10:51:02 -04:00
class GlobalForest(App):
def build(self):
2020-09-21 17:13:51 -04:00
#return Label(text='Hello world')
return GameWidget()
2020-09-20 10:51:02 -04:00
2020-09-28 18:38:35 -04:00
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()
2020-09-20 10:51:02 -04:00
if __name__ == '__main__':
2020-09-28 18:38:35 -04:00
#app = GlobalForest()
app = MainApp()
2020-09-21 17:13:51 -04:00
app.run()