Dies ist eine alte Version des Dokuments!
20.12.18
Idee Version 1:
Umsetzung:
Gruppenaufteilung
Raum:
Gerichtete Bewegung:
Wir haben uns das Kivy Beispielprogramm mit einem Thread angeschaut, und eine Richtung eingebaut. Unsere Punkte(Menschen) werden per Klick in unsere Grafik hinzugefügt und bewegen sich darauf hin in die Richtung unseres Zielpunktes (0,0). Die Geschwindigkeit ist dabei gleichbleibend.
Code:
Hauptprogramm
# coding: utf-8 from future import division from kivy.app import App from kivy.uix.widget import Widget from kivy.uix.button import Button from kivy.graphics import Color, Ellipse from kivy.core.window import Window import numpy as np
from move_it import Mover import threading
circles = [] ziel= np.array([0,0])
class MyPaintWidget(Widget):
color = (1,0,0)
def on_touch_down(self, touch): '''Bei Mausklick wird ein Kreis gezeichnet, das Objekt wird in die globale Liste circles aufgenommen''' with self.canvas: Color(*self.color, mode='rgb') d = 30. circles.append(Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d)))
class MyPaintApp(App):
'''Hier wird MyPaintWidget instantiiert und ein Knopf definiert, der mit der Methode forward verbunden wird.'''
def build(self): Window.clearcolor = (1,1,1,1) self.parent = Widget() self.painter = MyPaintWidget() nextbtn = Button(text='Next', size=(50,50), pos=(0,0)) nextbtn.bind(on_release=self.forward) self.parent.add_widget(self.painter) self.parent.add_widget(nextbtn) return self.parent
def forward(self,obj): '''bewegt alle bislang gezeichneten Kreise zufällig''' for circ in circles: circ.pos = (circ.pos[0]+np.random.randn()*20,circ.pos[1]+np.random.randn()*20)
if name == 'main':
thread1 = threading.Thread(target=Mover, args=(circles,)) thread1.start() MyPaintApp().run()