Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
protokolle:10.01.19 [2019/04/10 13:41] akahra |
protokolle:10.01.19 [2019/08/28 00:08] (aktuell) morningstar |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
* Fertigstellung des Raumes | * Fertigstellung des Raumes | ||
+ | <code> | ||
+ | # -*- 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 | ||
+ | </code> | ||
* Änderung von move_it sodass die Punkte nicht mehr auf 0/0 sondern auf die Tür zulaufen | * Änderung von move_it sodass die Punkte nicht mehr auf 0/0 sondern auf die Tür zulaufen | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
* Versuch der Verknüpfung beider Bereiche - in Arbeit | * Versuch der Verknüpfung beider Bereiche - in Arbeit | ||
+ | |||
+ | |[[protokolle:20.12.18|Zurück]] | [[protokolle:17.01.19|Weiter]]| |