La cour
Leçon 1 sur 20 du cours Projet Pygame : Défendez le donjon de Coddy.
Dans ce cours, tu construis un jeu complet, une fonctionnalité par leçon. Un chevalier se tient dans la cour d'un château, la nuit. Des monstres franchissent les murs, de plus en plus nombreux, et les armes du chevalier tirent toutes seules. Tu n'as qu'à te déplacer. Tiens jusqu'à l'aube et le donjon sera sauvé.
On commence par la cour : une grille de tuiles de 48 pixels, 15 en largeur et 10 en hauteur, avec le sol à l'intérieur et un mur tout autour. Tu pourrais dessiner 150 tuiles à chaque image, mais elles ne changent jamais. Dessine-les une seule fois sur une Surface de la taille de la fenêtre, puis affiche cette image unique à l'écran à chaque image :
background = pygame.Surface((WIDTH, HEIGHT))
for row in range(HEIGHT // TILE):
for col in range(WIDTH // TILE):
x = col * TILE
y = row * TILE
background.blit(floor_img, (x, y))courtyard est le Rect situé à l'intérieur des murs. courtyard.collidepoint(x, y) vaut True lorsque le point (x, y), ici le coin supérieur gauche d'une tuile, se trouve à l'intérieur.
Défi
Facile- Sous
# build the courtyard here, parcourez chaque ligne et chaque colonne de carreaux. - Blittez
floor_imgsurbackgroundlà oùcourtyard.collidepoint(x, y)vaut True, etwall_imgpartout ailleurs. - Dans la boucle de jeu, remplacez
screen.fill((20, 20, 30))parscreen.blit(background, (0, 0)).
Essayez vous-même
import pygame
WIDTH, HEIGHT = 720, 480
TILE = 48
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Hold the Keep")
clock = pygame.time.Clock()
def load(name):
return pygame.image.load("assets/images/" + name).convert_alpha()
floor_img = load("floor.png")
wall_img = load("wall.png")
courtyard = pygame.Rect(TILE, TILE, WIDTH - 2 * TILE, HEIGHT - 2 * TILE)
background = pygame.Surface((WIDTH, HEIGHT))
# construire la cour ici
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 20, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Projet Pygame : Défendez le donjon
Entraînez-vous par vous-même : Playground Pygame