Seite 1 von 1

Laufendes Mänchen

Verfasst: Montag 21. Februar 2011, 15:21
von fordprefect
Hi, ich möchte in einem kleinen Jump&Run die Figur Schritte machen lassen.
Dazu habe ich zwei Bilder von der Figur, die wenn man sie hintereinander ablaufen lässt das Laufen des Männchens animiert.
Mein Problem: Wie mache ich das daraus eine flüssige Animation wird. Ich habe bisher nach jedem Bild

Code: Alles auswählen

screen.blit(figur, (x, y))
pygame.display.flip()        	
pygame.time.wait(t)
Wenn ich t niedrig setze sind die Schritte viel zu schnell, und wenn ich es dann größer setze ruckelt es.
Gibts da irgendwelche Tipps eurerseits?

Re: Laufendes Mänchen

Verfasst: Montag 21. Februar 2011, 15:59
von Hyperion
Dazu solltest Du Dir mal das Time Modul angucken und wie man mit ticks konstante Frameraten erzeugen kann. Ich denke da wird man auch einiges via google finden.

Re: Laufendes Mänchen

Verfasst: Dienstag 22. Februar 2011, 11:00
von C4S3
Hi,

du solltest dein Männchen zu einen nicht per Hand blitten, sondern in eine SpriteGroup stecken (pygame.sprite.Group) und dies dann mit CUD (Clear, Update, Draw) alle auf einmal auf den Bildschirm bringen. (Das hat jetzt mit deiner Frage weniger zu tun, hilft aber ungemein, wenn man die Übersicht behalten möchte).

Zu deiner Frage:
pygame.time.Clock wäre hier genau richtig.

Code: Alles auswählen

#! /usr/bin/env python
#! coding: utf-8

"""Simpliest PyGame programm.

Follow the IDEA/ALTER Framework

I - Import and initialze
D - Display
E - Entities
A - Action
    A - Assign values
    L - Loop
    T - Time
    E - Events
    R - Redraw
"""

import pygame
from pygame.locals import *

pygame.init()

screen = pygame.display.set_mode((640, 480))

bg = pygame.Surface(screen.get_size()).convert()
bg.fill((200, 100, 50))

keepGoing = True
clock = pygame.time.Clock()

while keepGoing:
    clock.tick(30)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keepGoing = False
            
    screen.blit(bg, (0,0))
    pygame.display.flip()