10.01.19
* Fertigstellung des Raumes
# -*- coding: utf-8 -*-
from __future__ import division
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
from kivy.graphics import Line
width = None
height = None
Raum = None
class RaumWidget(Widget):
def eingabeZuPixel(self):
self.door_width = 1.5
self.offset = [20,20]
prop_window = (Window.size[0]-40)/(Window.size[1]-40) #width/height
prop_modell = self.width/self.height
if prop_window>prop_modell:
self.skalierung = (Window.size[1]-40)/self.height
self.offset[0] = (Window.size[0]-self.skalierung*self.width)/2
else:
self.skalierung = (Window.size[0]-40)/self.width
self.offset[1] = (Window.size[1]-self.skalierung*self.height)/2
self.height *= self.skalierung
self.width *= self.skalierung
self.door_width *= self.skalierung
def raumZeichnen(self,width,height):
self.width = width
self.height = height
self.eingabeZuPixel()
door_R = [self.offset[0]+self.width/2+self.door_width/2,self.offset[1]]
corner_BR = [self.offset[0]+self.width,self.offset[1]]
corner_TR = [corner_BR[0],self.offset[1]+self.height]
corner_TL = [self.offset[0],corner_TR[1]]
corner_BL = self.offset
door_L = [door_R[0]-self.door_width,self.offset[1]]
koordinaten = [door_R,corner_BR,corner_TR,corner_TL,corner_BL,door_L]
self.posDoor = [self.offset[0]+self.width/2,self.offset[1]]
with self.canvas:
self.canvas.clear()
Line(points=koordinaten)
def resizeRaum(self,parent,w, h):
self.raumZeichnen(width,height)
class RaumApp(App):
def build(self):
self.parent = Widget()
self.painter = RaumWidget()
self.painter.raumZeichnen(width,height)
Window.bind(on_resize=self.painter.resizeRaum)
self.parent.add_widget(self.painter)
return self.parent
if __name__ == '__main__':
global width
global height
global Raum
width = int(raw_input("Breite: "))
height = int(raw_input("Hoehe: "))
Raum = RaumApp()
Raum.run()
def getPosDoor():
global Raum
return Raum.painter.posDoor
* Änderung von move_it sodass die Punkte nicht mehr auf 0/0 sondern auf die Tür zulaufen
class Mover(object):
def __init__(self, circles):
posDoor = getPosDoor()
self.circles = circles
self.v = 5
while True:
time.sleep(0.1)
for circ in self.circles:
richtung = np.array((posDoor[0]-circ.pos[0], posDoor[1]-circ.pos[1]))
richtung = 1/np.linalg.norm(richtung) * richtung
circ.pos = (circ.pos[0]+self.v*richtung[0],circ.pos[1]+self.v*richtung[1])
print circ.pos
* Versuch der Verknüpfung beider Bereiche - in Arbeit
|[[protokolle:20.12.18|Zurück]] | [[protokolle:17.01.19|Weiter]]|