El patio
Lección 1 de 20 del curso Proyecto con Pygame: Defiende la fortaleza de Coddy.
En este curso creas un juego completo, una característica por lección. Un caballero está en el patio de un castillo por la noche. Los monstruos trepan por los muros, cada vez más, y las armas del caballero disparan por sí solas. Tú solo te mueves. Resiste hasta el amanecer y el castillo estará a salvo.
Todo empieza con el patio: una cuadrícula de casillas de 48 píxeles, 15 de ancho y 10 de alto, con suelo en el interior y un muro alrededor del borde. Podrías dibujar 150 casillas en cada fotograma, pero nunca cambian. Dibújalas una vez en una Surface del tamaño de la ventana y luego coloca esa imagen en la pantalla en cada fotograma:
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 es el Rect que queda dentro de los muros. courtyard.collidepoint(x, y) es True cuando el punto (x, y), aquí la esquina superior izquierda de una casilla, está dentro de este.
Desafío
Fácil- Debajo de
# build the courtyard here, recorre cada fila y columna de mosaicos. - Dibuja
floor_imgsobrebackgrounddondecourtyard.collidepoint(x, y)sea True, ywall_imgen todos los demás lugares. - En el bucle del juego, reemplaza
screen.fill((20, 20, 30))porscreen.blit(background, (0, 0)).
Pruébalo tú mismo
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))
# construye el patio aquí
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()
Todas las lecciones de Proyecto con Pygame: Defiende la fortaleza
Practica por tu cuenta: Playground de Pygame