Menu
CoddyTech

Tính điểm ngọc

Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 15 trên 35.

Trò chơi cần có điểm số. Hãy lưu điểm số trong một biến được tạo trước vòng lặp, score = 0, rồi tăng thêm 1 bằng score += 1 mỗi khi người chơi bắt được một viên ngọc.

Trò chơi này hiển thị điểm số dưới dạng một hàng gồm các ô vuông nhỏ, mỗi ô tương ứng với một điểm. Vòng lặp for vẽ một hàng gồm bất kỳ thứ gì: ở đây là ba hình tròn cách nhau 30 pixel.

for i in range(3):
    pygame.draw.circle(screen, (255, 200, 0), (20 + 30 * i, 20), 10)

Ở lần lặp đầu tiên, i bằng 0, sau đó là 1 rồi 2, nên mỗi hình tròn nằm xa hơn về bên phải 30 pixel. Với range(score), hàng này dài thêm một ô mỗi khi điểm số tăng.

challenge icon

Thử thách

Dễ

Đếm số viên ngọc và hiển thị số đếm ở phía trên.

  1. Thêm score = 0 trước vòng lặp, rồi tăng giá trị này lên 1 khi cú nhấp chuột trúng viên ngọc.
  2. Sau khi vẽ viên ngọc, với mỗi i trong range(score), hãy vẽ một hình chữ nhật màu hồng (240, 110, 180) tại (10 + 10 * i, 14, 8, 8).

Nhấn Chơi và bắt ba viên ngọc: ba dấu màu hồng sẽ xếp thành hàng ở góc trên bên trái. Sau đó nhấn Kiểm tra.

Tự làm thử

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

Tất cả bài học trong Vòng lặp trò chơi

Tự luyện tập: Playground Pygame