게임 완성하기
Coddy Pygame 여정의 프로젝트 섹션에 포함된 레슨. 31개 중 31번째.
이제 3~5단계입니다. 도전 과제, 엔딩, 텍스트를 추가해 봅시다. Rock Dodge에서는 Rect 목록에 바위가 저장됩니다. 400ms마다 새 바위가 생겨 한 번에 화면에 여러 개가 나타납니다.
rocks = []
# NEW_ROCK 타이머 이벤트가 발생할 때:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))
# 매 프레임마다:
for rock in rocks:
rock.y += 5
if rock.colliderect(player):
state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]마지막 줄은 리스트 컴프리헨션입니다. 화면에 아직 남아 있는 바위만 담은 새 목록을 만들기 때문에 목록이 끝없이 커지지 않습니다.
state 문자열에 "playing", "lost" 또는 "won"을 지정하면 Sky Runner에서처럼 매 프레임 무엇을 할지 결정합니다. 그리고 pygame.time.get_ticks()는 게임이 시작된 후 경과한 시간을 밀리초 단위로 알려주므로 타이머를 만들 수 있습니다. 20초 동안 살아남으면 승리합니다.
여정에서 배운 모든 것을 게임에 활용할 수 있습니다. 목록 대신 스프라이트 그룹을 사용하고, 그림과 충돌 시 재생되는 효과음, 음악, 게임 전 메뉴, 최고 점수, 텍스트 맵으로 만든 방을 추가해 보세요.
색상, 속도, 규칙을 바꾸어 나만의 게임을 만드세요. 그리고 직접 플레이해 보세요. 이기기 너무 어렵거나 너무 빨리 지게 된다면, 재미있어질 때까지 숫자를 바꿔 보세요.
챌린지
쉬움게임을 완성하여 다음 요소를 포함하세요.
- 저절로 움직이는 요소
- 점수나 타이머 같은 화면의 텍스트
- 승리하는 방법, 패배하는 방법 또는 둘 다를 포함한 결말
검사 항목은 텍스트가 있는지, 키를 누르지 않아도 움직이는 요소가 있는지, 오류 없이 30초 동안 게임이 실행되는지, 창이 닫히는지를 확인합니다. 그 밖의 모든 것은 자유롭게 정하면 됩니다. 도형이나 그림, 소리, 음악, 상태와 맵을 모두 사용할 수 있습니다.
직접 해보기
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()
player = pygame.Rect(220, 320, 40, 20)
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 -= 7
if keys[pygame.K_RIGHT]:
player.x += 7
player.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
프로젝트의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드