플레이어의 시작 위치
Coddy Pygame 여정의 게임 월드 섹션에 포함된 레슨. 35개 중 4번째.
레벨은 플레이어가 어디서 시작하는지 결정하므로, 지도에도 시작 위치를 표시하세요. P 하나를 넣으면 됩니다. 반복문이 지도를 읽을 때 P 타일이 플레이어의 첫 위치를 지정합니다.
elif char == "P":
player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)플레이어는 한 변이 28픽셀인 정사각형이므로, 타일의 모서리에서 (36 - 28) / 2 = 4픽셀 안쪽, 즉 타일의 중앙에서 시작합니다. 이제 텍스트에서 P를 옮기면 시작 위치도 바뀝니다. 따로 계산할 숫자가 없습니다.
게임 루프가 실행되기 전에 반복문이 실행되므로, 게임 루프가 플레이어를 움직일 때는 player가 이미 존재합니다. 반복문 뒤에서 player를 다시 설정하지 않도록 하세요. 그렇게 하면 나중에 설정한 줄이 우선 적용됩니다.
챌린지
쉬움이제 맵에 P가 있습니다. 시작 코드는 플레이어를 고정된 위치인 (40, 40)에 둡니다.
- 맵 반복문에서
P에 대해player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)을 만드세요. - 플레이어를
(40, 40)에 두는 줄을 제거하세요.
직접 해보기
import pygame
TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
PLAYER = (80, 200, 120)
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
"#..............#",
"#....C....##...#",
"#..##.....##.C.#",
"#..##..P.......#",
"#.C.......###..#",
"#..............#",
"####..####..####",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()
walls = []
coins = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
elif char == "C":
coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))
player = pygame.Rect(40, 40, 28, 28)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
if keys[pygame.K_UP]:
player.y -= 4
if keys[pygame.K_DOWN]:
player.y += 4
screen.fill((30, 30, 46))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
for coin in coins:
pygame.draw.rect(screen, COIN, coin)
pygame.draw.rect(screen, PLAYER, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
게임 월드의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드