보석 점수 얻기
Coddy Pygame 여정의 게임 루프 섹션에 포함된 레슨. 35개 중 15번째.
게임에는 점수가 필요합니다. 반복문 전에 만든 변수 score = 0에 점수를 저장하고, 플레이어가 보석을 잡을 때마다 score += 1을 더하세요.
이 게임은 점수를 작은 정사각형으로 이루어진 줄로 표시하며, 점수 1점당 정사각형 하나를 그립니다. for 반복문은 무엇이든 한 줄로 그릴 수 있습니다. 여기서는 30픽셀 간격으로 원 세 개를 그립니다.
for i in range(3):
pygame.draw.circle(screen, (255, 200, 0), (20 + 30 * i, 20), 10)첫 번째 반복에서 i는 0이고, 그다음에는 1, 그다음에는 2이므로 각 원은 오른쪽으로 30픽셀씩 더 떨어진 위치에 놓입니다. range(score)를 사용하면 점수가 올라갈 때마다 줄에 원이 하나씩 추가됩니다.
챌린지
쉬움보석의 개수를 세고 화면 맨 위에 표시하세요.
- 반복문 앞에
score = 0을 추가하고, 클릭으로 보석을 맞힐 때마다 여기에 1을 더하세요. - 보석을 그린 다음,
range(score)의 각i에 대해(10 + 10 * i, 14, 8, 8)위치에 분홍색(240, 110, 180)사각형을 그리세요.
‘플레이’를 누르고 보석 세 개를 잡으세요. 왼쪽 위에 분홍색 표시 세 개가 나란히 놓입니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Gem Hunt")
clock = pygame.time.Clock()
gx, gy = 225, 165
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if gx <= x <= gx + 30 and gy <= y <= gy + 30:
gx = random.randint(15, 435)
gy = random.randint(55, 315)
screen.fill((30, 30, 46))
gem_points = [(gx + 15, gy), (gx + 30, gy + 15), (gx + 15, gy + 30), (gx, gy + 15)]
pygame.draw.polygon(screen, (80, 220, 255), gem_points)
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)
pygame.display.flip()
clock.tick(60)
pygame.quit()
게임 루프의 모든 레슨
직접 연습해 보세요: Pygame 플레이그라운드