Menu
CoddyTech

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.

challenge icon

Desafío

Fácil
  1. Debajo de # build the courtyard here, recorre cada fila y columna de mosaicos.
  2. Dibuja floor_img sobre background donde courtyard.collidepoint(x, y) sea True, y wall_img en todos los demás lugares.
  3. En el bucle del juego, reemplaza screen.fill((20, 20, 30)) por screen.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