Question

Je viens juste de commencer à apprendre à utiliser pygame hier. Je lisais un livre ce qui était super gentil et a suivi tous ses tutoriels et des exemples et des trucs. Je voulais essayer de faire un côté très simple barre de défilement / jeu de plate-forme, mais le livre sautais sorta assez rapide dans la modélisation 3D en indiquant comment faire changement sprites pour le déplacement en bas à gauche et à droite et comment faire défiler animant des images.

J'ai passé tout aujourd'hui essayer d'obtenir un sprite pour afficher et pouvoir se déplacer avec haut bas gauche et à droite. Mais à cause du script simple, il utilise une image statique et refuse de changer.

Quelqu'un peut-il me donner quelques connaissances sur la façon de changer les sprites. Ou envoyez-moi un tutoriel qui fait?

Toute référence et par personne pour l'expérimenter toujours été ha en utilisant des formes générées donc je ne suis jamais en mesure de travailler avec eux.

Toute aide est très appréciée.

Ajout: avant de déterminer comment placer des animations complexes dans ma scène, je voudrais savoir comment je peux faire mon changement « joueur » aux images unmoving en ce qui concerne mon pressant vers le bas à gauche ou à droite. peut-être en diagonale si les gens savent quelque chose de vraiment son complexe.

Ajouter: Voici ce que je l'ai mis en place jusqu'à présent. http://animania1.ca/ShowFriends/dev/dirmove.rar aurait-il une possibilité de faire la direction / action définie la colonne de l'action et avoir le code de réglage de la colonne peu faire aussi le cycle dans une boucle pour faire l'animation? (Ou serait-ce une utilisation manque brute d'efficacité?)

Était-ce utile?

La solution

Voici un exemple stupide qui alernates entre deux premières images du spritesheet lorsque vous appuyez sur gauche / droite:

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()

Je ne l'ai jamais vraiment utilisé Pygame avant peut-être que ce code shoudln't vraiment être considéré comme un exemple. J'espère que cela montre les bases bien.

Pour être plus complet que je devrais attendre un certain temps avant que la mise à jour, par exemple contrôle que mettre à jour seulement 60 fois par seconde.

Il serait également utile d'écrire une classe de sprite qui simplifierait votre travail. Vous passeriez la taille d'un cadre de sprite dans le constructeur, et vous auriez comme update() et Methodes draw() qui ferait automatiquement le travail de sélection de la trame suivante, blitting l'image-objet et ainsi de suite.

Pygame semble fournir une classe de base à cette fin: lien texte .

Autres conseils

mec la seule chose que vous avez à faire est biensur

pygame d'importation et toutes les autres choses nécessaires code de type et d'autres choses .......... alors quand il vient à vous faire un SPRI

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))

et thats it !!!! mais c'est pas la fin. si vous faites cela, vous avez fait ony l'image-objet pour le déplacer, vous avez besoin

Je ne sais pas beaucoup sur Pygame, mais je l'ai utilisé SDL (sur lequel repose Pygame).

Si vous utilisez Surface.blit(): texte de lien

Vous pouvez utiliser l'argument optionnel de area pour sélectionner la partie de la surface à dessiner. Donc, si vous mettez toutes les images qui font partie de l'animation dans un seul fichier, vous pouvez sélectionner l'image qui sera dessiné. Il est "clipping".

Je suppose que vous aurez une boucle de jeu qui mettra à jour l'état du jeu (changer l'image actuelle de l'image-objet si nécessaire), puis tirer les sprites en utilisant leur état.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top