Denke ich zu kompliziert ? Elemente aus directory löschen
Verfasst: Dienstag 29. April 2008, 22:09
Liebe Python-Gurus, ich habe ein Problem gelöst, ahne aber das meine Lösung nicht elegant ist. Kann mir jemand weiterhelfen, ich glaube ich denke zu kompliziert.
Habe ein kleines Spiel geschrieben welches Kreise zeichnet, die immer größer werden bis sie schließlich verschwinden.
Hier die Klasse der Kreise:
neue Kreise entstehen nach Mausklick, und die Kreise werden in einem Directory verwaltet:
Im Mainloop wird geschaut, welcher Kreis "zu alt" ist, dessen Kreisnummer wird in eine Liste geschrieben.
Anschließend wird über diese Liste iteriert und alle "zu alten" Kreise im Directory werden gelöscht. Die verbliebenen Kreise werden gezeichnet:
Alles funktioniert zwar, aber geht das auch eleganter ?
mfg,
-Horst
Habe ein kleines Spiel geschrieben welches Kreise zeichnet, die immer größer werden bis sie schließlich verschwinden.
Hier die Klasse der Kreise:
Code: Alles auswählen
kreisnummer = 1
kreise={}
class Kreis():
def __init__(self,x ,y, kreisnummer):
self.mittelpunkt = (x,y)
self.kreisnummer = kreisnummer
self.age = 1
self.color = (255,0,0) #red (r,g,b)
self.maxage = 50
def check(self):
self.age += 1
if self.age >= self.maxage:
return self.kreisnummer
else:
return None
neue Kreise entstehen nach Mausklick, und die Kreise werden in einem Directory verwaltet:
Code: Alles auswählen
while True:
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
print event.pos
kreisnummer += 1
kreise[kreisnummer] = Kreis(event.pos[0], event.pos[1], kreisnummer)
Anschließend wird über diese Liste iteriert und alle "zu alten" Kreise im Directory werden gelöscht. Die verbliebenen Kreise werden gezeichnet:
Code: Alles auswählen
killnummern = []
for einKreis in kreise:
if kreise[einKreis].check() != None:
killnummern.append(kreise[einKreis].check())
for nummer in killnummern:
kreise.pop(nummer)
for einKreis in kreise:
pygame.draw.circle(screen, kreise[einKreis].color, kreise[einKreis].mittelpunkt, kreise[einKreis].age, 1)
mfg,
-Horst