Menu
CoddyTech

안마당

Coddy의 Pygame 프로젝트: 성채를 지켜라 코스 레슨. 20개 중 1번째.

이 과정에서는 수업 하나에 게임 전체를 만듭니다. 기사는 밤에 성 안뜰에 서 있습니다. 괴물들이 성벽을 넘어 점점 더 많이 몰려오고, 기사의 무기는 저절로 발사됩니다. 여러분은 움직이기만 하면 됩니다. 새벽까지 버티면 성채가 구해집니다.

안뜰부터 시작합니다. 48픽셀 타일로 이루어진 격자이며, 가로로 15칸, 세로로 10칸이고, 안쪽은 바닥, 가장자리는 성벽입니다. 프레임마다 타일 150개를 그릴 수도 있지만, 타일은 바뀌지 않습니다. 창 크기의 Surface에 한 번 그린 다음, 매 프레임 그 그림 하나를 화면에 표시합니다.

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는 성벽 안쪽의 Rect입니다. courtyard.collidepoint(x, y)는 점 (x, y), 여기서는 타일의 왼쪽 위 모서리가 안뜰 안에 있을 때 True입니다.

challenge icon

챌린지

쉬움
  1. # build the courtyard here 아래에서 모든 타일 행과 열을 순회하세요.
  2. courtyard.collidepoint(x, y)가 True인 곳에서는 background에 floor_img를 블릿하고, 그 밖의 모든 곳에서는 wall_img를 블릿하세요.
  3. 게임 루프에서 screen.fill((20, 20, 30))을 screen.blit(background, (0, 0))으로 바꾸세요.

직접 해보기

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))
# 여기서 안뜰을 만드세요


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

Pygame 프로젝트: 성채를 지켜라의 모든 레슨

직접 연습해 보세요: Pygame 플레이그라운드