Frage

Ich habe nur zu lernen begann, wie pygame gestern zu verwenden. Ich war dies ein Buch zu lesen, die sehr hilfsbereit war und anschließend alle seine Übungen und Beispiele und solche Sachen. Ich wollte ein wirklich einfache Seite scroller / Jump'n'Run-Spiel, um versuchen zu machen, aber das Buch sorta sprang ziemlich schnell in 3D-Modellierung mit heraus anweist, wie für die Bewegung von oben nach unten nach links und rechts zu ändern Sprites zu machen und wie, um durch Animieren Bilder.

Ich habe alle heute damit verbracht, einen Sprit zu erhalten angezeigt werden und in der Lage sein, mit bewegen nach oben nach unten links und rechts. Aber wegen der einfachen Skript es ein statisches Bild verwendet und weigert sich ändern.

Kann jemand mir einige Kenntnisse darüber, wie der Sprites zu ändern. Oder mich zu einem Tutorial senden, die das?

Jede Bezugnahme und Person damit zu experimentieren ha mit generierten Formen schon immer so dass ich nie in der Lage bin, mit ihnen zu arbeiten.

Jede Hilfe ist sehr geschätzt.

Hinzugefügt: vor herauszufinden, wie komplexe Animationen in meiner Szene setzen Ich mag gerne wissen, wie ich meine ‚Spieler‘ Änderung unbewegte Bilder in Bezug auf meine Drücken nach oben nach unten nach links oder rechts zu machen. vielleicht diagonal, wenn die Leute wissen, es ist etwas wirklich kompliziert.

In: Dies ist, was ich bisher gemeinsam gesetzt haben. http://animania1.ca/ShowFriends/dev/dirmove.rar gäbe es eine Möglichkeit, die Richtung / Aktion machen legen sie die Spalte der Aktion und haben die kleinen Spalte Einstellung Code auch in einer Schleife um die Animation zu tun es Zyklus machen nach unten? (Oder dass ein grober Fehl Einsatz effizienz wäre?)

War es hilfreich?

Lösung

Hier ist ein stummes Beispiel, die zwischen zwei ersten Bilder des spritesheet alernates wenn Sie die Taste links / rechts:

import pygame

quit = False
pygame.init()
display = pygame.display.set_mode((640,480))
sprite_sheet = pygame.image.load('sprite.bmp').convert()

# by default, display the first sprite
image_number = 0

while quit == False:
    event = pygame.event.poll()
    no_more_events = True if event == pygame.NOEVENT else False

    # handle events (update game state)
    while no_more_events == False:
        if event.type == pygame.QUIT:
            quit = True
            break
        elif event.type == pygame.NOEVENT:
            no_more_events = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                image_number = 0
            elif event.key == pygame.K_RIGHT:
                image_number = 1

        event = pygame.event.poll()

    if quit == False:
        # redraw the screen
        display.fill(pygame.Color('white'))
        area = pygame.Rect(image_number * 100, 0, 100, 150)
        display.blit(sprite_sheet, (0,0), area)
        pygame.display.flip()

Ich habe nie wirklich Pygame vor so vielleicht dieser Code verwendet shoudln't wirklich als Beispiel genommen werden. Ich hoffe, dass es die Grundlagen zeigt aber.

mehr vollständig sein ich vor der Aktualisierung einige Zeit warten soll, zum Beispiel Kontrolle, dass ich nur 60 Mal pro Sekunde aktualisiert werden.

Es wäre auch sehr nützlich sein, eine Sprite-Klasse zu schreiben, die Ihre Arbeit erleichtern würden. Sie würden die Größe eines Sprites Rahmen in den Konstruktor übergeben, und man müsste methodes wie update() und draw() die die Arbeit der Auswahl des nächsten Frame automatisch tun würde, Blitten das Sprite und so weiter.

Pygame scheint eine Basisklasse für diesen Zweck zur Verfügung zu stellen: Link-Text .

Andere Tipps

Geck das einzige, was Sie tun müssen, ist offcourse

Import pygame und all die anderen Dinge benötigt Typ-Code und Sachen .......... dann wenn es darum geht, Ihnen eine spri machen

class .your class nam here. (pygame.sprite.Sprite):
     def __init__(self):
          pygame.sprite.Sprite.init(self)
          self.image=pygame.image.load(your image and path)
          self.rect=self.image.get_rect()
          x=0
          y=0

          # any thing else is what you want like posistion and other variables

     def update(self):
          self.rect.move_ip((x,y))

und das ist es !!!! aber das ist nicht das Ende. wenn Sie dies tun, werden Sie ony haben das Sprite gemacht um es zu bewegen Sie benötigen

Ich weiß nicht viel über Pygame, aber ich habe SDL verwendet (auf dem Pygame basiert).

Wenn Sie Surface.blit(): Link-Text

Sie können das optionale area Argument verwenden, um auszuwählen, welche einen Teil der Oberfläche zu ziehen. Also, wenn Sie alle Bilder setzen, die Teil der Animation in einer einzigen Datei, können Sie auswählen, welches Bild gezeichnet wird. Es heißt "Clipping" genannt.

Ich denke, Sie werden eine Spielschleife haben, die das Spiel Zustand (Änderung des aktuellen Bildes des Sprites, falls erforderlich) wird aktualisiert, dann die Sprites zeichnen ihren Zustand verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top