Funktion für Slo-Motion tut's nicht

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

Heipähei zusammen, ich mal wieder :mrgreen:

Ich bin echt nicht der Typ, der jedes Mal gleich um Hilfe bittet, wenn etwas nicht auf Anhieb tut, aber mein aktuelles Problem ist unlogisch und ich kann es nicht nachvollziehen und auch nicht ergründen...

Hab da meinen Map-Generator am Start, der Karten zeichnet. Nun habe ich verschiedene Funktionen die Tiles bauen. Damit man auch visuell sehen kann, dass der Generator die Map baut, hab' ich in jeder Funktion, die etwas baut, gleich nach dem Bau einen Bildschirm-Update und ein paar Millisek Pause eingebaut:

Code: Alles auswählen

pygame.display.flip()
pygame.time.delay(500)
und das klappte wunderbar. Man kann schön zusehen, wie die Map gebaut wird, Tile für Tile. Nun wollte ich das aber nicht jedesmal schreiben, da hab' ich dafür eine Funktion gemacht:

Code: Alles auswählen

def slow_motion(mil_sek = 500):
    pygame.display.flip()
    pygame.time.delay(mil_sek)

slo_mo = slow_motion()
Diese Funktion müsste jetzt mit

Code: Alles auswählen

slo_mo
aufgerufen werden können. Dann hab' ich diese Funktion überall aufgerufen, wo ein Tile gebaut wird - so wie zuvor, nur eben kürzer. Geht aber nicht... der Generator zeichnet die Map nun ein einem Ruck - *PLOPP*.

Jemand eine Idee, woran das liegen könnte?

vielen Besten,


Henry
Ich code, also bin ich.
BlackJack

@Henry Jones Jr.: Wenn Du `slo_mo` aufrufst, solltest Du eigentlich eine Ausnahme bekommen, weil `None` nicht aufgerufen werden kann:

Code: Alles auswählen

In [73]: None()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

TypeError: 'NoneType' object is not callable
Schau Dir mal `slo_mo` an und mach Dir klar was Du in der Zeile dort diesem Namen tatsächlich zuweist.

Edit: Wobei die Idee das an einen kürzeren Namen zu binden IMHO keine gute ist.
Benutzeravatar
Don Polettone
User
Beiträge: 115
Registriert: Dienstag 23. November 2010, 20:26
Wohnort: Schweiz

dann liegt es wohl daran, dass die Funktion slow_motion() keinen returnwert hat; resp. der Returnwert ist None.

Alles klar, danke :D
Ich code, also bin ich.
Antworten