Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

protokolle:20.12.18

Dies ist eine alte Version des Dokuments!


20.12.18

Idee Version 1:

  • 1 Mensch in einem Raum
  • Mensch soll gerichtet auf den Ausgang sein
  • Raum auf Kivy erstellen
  • In diesen Raum müssen wir den Menschen random platzieren, wobei der Mensch durch eine bestimmte Kraft definiert wird.

Umsetzung:

Gruppenaufteilung

  • Raumerstellung
  • gerichtete Bewegung

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.

fetch.php

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()
  
protokolle/20.12.18.1547744137.txt.gz · Zuletzt geändert: 2019/01/17 17:55 von stefanborn