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]]|