Le vaisseau de patrouille
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 29 sur 36.
Il est temps de créer un jeu complet : Star Patrol. Des vagues de vaisseaux ennemis descendent depuis le haut. Votre vaisseau patrouille en bas de la fenêtre, se déplace à gauche et à droite et tire des lasers vers le haut. Détruisez toutes les vagues pour gagner ; laissez passer trois ennemis ou entrez en collision avec eux et la partie est terminée.
Chaque objet du jeu sera un sprite : le joueur, ses lasers, les ennemis et leurs explosions. Le joueur vient en premier, comme au chapitre 4 :
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))Chargez ship_image une seule fois, après la fenêtre. Sa méthode update déplace le Rect avec les flèches et le maintient à l'intérieur de la fenêtre. La boucle principale appelle player.update() et dessine le vaisseau.
Ce chapitre développe le même programme étape par étape ; conservez donc les noms indiqués dans les tâches : les vérifications repèrent les éléments du jeu grâce à eux.
Défi
Moyen- Chargez
assets/images/ship.pngdansship_image. - Écrivez
class Player(pygame.sprite.Sprite): l’imageship_image, un Rect dont le milieu du bord inférieur se trouve à(320, 470), et une méthodeupdatequi le déplace de 6 pixels par image avec les touches gauche et droite, et le maintient dans les limites de la fenêtre. - Créez
player = Player(); à chaque image, appelezplayer.update()et affichezplayer.imageàplayer.rectaprès le remplissage.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((12, 14, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Sprites et images
1Charger des images
Charger une imageLa placer avec un rectangleDéplacer l’imageRépéter un arrière-planPixels transparents4Sprites et groupes
La classe SpriteGroupesSupprimer avec kill()Détecter avec spritecollideUn groupe contre un autre7Patrouille stellaire
Le vaisseau de patrouilleTirer des lasers2Tourner, retourner, redimensionner
Faire pivoter autour du centreRegarder dans la direction du volRedimensionner une imagePivoter à partir de l’original5Collisions au pixel près
Les rectangles semblent injustesMasquesSprites au pixel prèsZones de collision circulaires3Les classes pour les objets du jeu
Votre première classeLes méthodesSelf est l’objetUne liste d’objetsDes objets avec des imagesUne sous-classe6Animation à partir de feuilles de sprites
Découper une feuille de spritesUn compteur de framesAnimer avec le tempsUne explosion à déclenchement uniqueEntraînez-vous par vous-même : Playground Pygame