VPython: Zellen trinken Wasser und wachsen

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Code: Alles auswählen

from visual import *
import random

scene.width=400
scene.height=700

arrayx = 200
arrayy = 200
anzahlzellen = arrayx
anzahlwasser = arrayx
scene.center=(arrayx/2,arrayy/2,0)

t=0
zelle = []
wasser = []
verbindung = []
for x in range(arrayx):
    for y in range(arrayy):
        zelle.append(0)
        wasser.append(0)
        verbindung.append(0)

def zufall():
    ax = random.random()
    ay = random.random()
    ax = ax * arrayx
    ay = ay * arrayy
    ort =(ax,ay)
    return ort

for i in range(anzahlzellen):
    ort = zufall()
    zelle[i+1] = sphere(pos=(ort), color=(.0,.9,.0))

for i in range(anzahlwasser):
    ort = zufall()
    wasser[i+1] = sphere(pos=(ort), color=(.0,.9,.9))

abstand1 = 0
while 1:
    abstand1 = abstand1 + 1
    for i in range(anzahlzellen):
        for j in range(anzahlwasser):
            abstand2 = sqrt(((zelle[i+1].pos[0]-wasser[j+1].pos[0])**2) + ((zelle[i+1].pos[1]-wasser[j+1].pos[1])**2))
            if abstand2 <= abstand1:
                print abstand1
                verbindung[i*arrayx+j] = curve(pos=[(zelle[i+1].pos[0],zelle[i+1].pos[1]),(wasser[j+1].pos[0],wasser[j+1].pos[1])], radius=.2, color=color.green)
                zelle[i+1].radius += .2
                wasser[j+1].radius -= .2
                if wasser[j+1].radius <= 0:
                    wasser[j+1].pos += (1000,0,0) #Wasser entfernen

Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Was tut es? Ich denke schon man sollte ein paar Sätze dazu schreiben, wenn man denn Interesse hat, seinen Code hier zu veröffentlichen.

Ansonsten auf den ersten Blick das "übliche":

- Keine Sternchen-Importe nutzen!

- Code auf Modulebene "saugt" ;-)

- Die Array-Initialisierungen erscheinen mir umständlich

- Bei Python < 3 besser xrange verwenden

- Bei Listen muss man in Python nicht über den Index auf Elemente zugreifen, sondern kann direkt iterieren

- Der Mischmasch aus Deutsch und Englisch im Code liest sich unschön

- Es gibt True und Fals in Python, daher sollte man diese auch nutzen bei wahrheitswerten (while True:)

- Im Modul random gibt es einige nützliche Funktionen, die man besser anstatt der Konstruktion in der zufall() Funktion nutzen könnte.

- keine Kommentare!
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Bin zu faul zu gucken, was VPython wohl ist, aber zum Stil ein paar Tipps:

Code: Alles auswählen

width, height = 200, 200

anzahl_zellen = width
anzahl_wasser = width

size = width * height
zelle, wasser, verbindung = [0] * size, [0] * size, [0] * size

def zufaelliger_ort(): # war zufall
    return random.randrange(width), random.randrange(height)

for i in range(anzahl_zellen):
    zelle[i] = sphere(pos=zufaelliger_ort(), color=...)
...
Stefan
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Ich habe mir eben VPython runtergeladen und kurz die Beispiele ausprobiert. Lohnt sich schon, finde ich.

Zum Programm: Was ich komisch fand, dass der Bildinhalt plötzlich ziemlich klein wird.
Und ohne Hintergrundinformation ist das Beispiel für die meisten hier im Forum wohl eher kaum verwertbar.
Wer sich mit VPython befassen möchte, guckt sich wohl eher die Beispiele an.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

hendrikS hat geschrieben:Ich habe mir eben VPython runtergeladen und kurz die Beispiele ausprobiert. Lohnt sich schon, finde ich.
Dann haettest du auch gleich die Beschreibung mitliefern koennen ;)
vpython.org hat geschrieben:VPython is the Python programming language plus a 3D graphics module called "Visual" originated by David Scherer in 2000. VPython makes it easy to create navigable 3D displays and animations, even for those with limited programming experience. Because it is based on Python, it also has much to offer for experienced programmers and researchers.
http://vpython.org/
Antworten