Menu
CoddyTech

Một khung cảnh với các hình

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

Một hình ảnh trong trò chơi thường gồm nhiều hình nhỏ. Cây ở đây có thân màu nâu và một hình tròn màu xanh lá ở trên. Vẽ vài cây, bạn sẽ có một khu rừng.

Khi cùng một nhóm hình xuất hiện nhiều lần, hãy đặt nhóm đó vào một hàm (function) nhận vị trí làm tham số. Mỗi lần gọi hàm sẽ vẽ một cây:

def draw_tree(x, y):
    pygame.draw.rect(screen, (120, 80, 40), (x - 5, y, 10, 30))
    pygame.draw.circle(screen, (60, 170, 90), (x, y), 20)

draw_tree(80, 250)
draw_tree(240, 250)

Mỗi hình trong hàm được đặt dựa trên x và y, vì vậy muốn di chuyển cây, bạn chỉ cần thay đổi một lần gọi hàm.

Thứ tự bên trong hàm vẫn rất quan trọng. Thân cây bắt đầu ở tâm hình tròn, và hình tròn được vẽ sau nên che phần trên của thân cây. Đổi chỗ hai dòng này, thân cây sẽ lộ ra sau tán lá.

challenge icon

Thử thách

Dễ

Hoàn thiện cây và trồng thêm hai cây nữa.

  1. Trong draw_tree, sau thân cây, hãy vẽ tán cây: một hình tròn màu xanh lá (60, 170, 90), tâm tại (x, y) và bán kính 20.
  2. Bên dưới draw_tree(80, 250), gọi hàm này cho các cây tại (240, 250) và (400, 250).

Nhấn "Chơi": ba cây đứng trên mặt đất. Sau đó nhấn "Kiểm tra".

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Forest")
clock = pygame.time.Clock()


def draw_tree(x, y):
    pygame.draw.rect(screen, (120, 80, 40), (x - 5, y, 10, 30))


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (240, 240, 210), (70, 60), 24)
    pygame.draw.rect(screen, (40, 90, 50), (0, 280, 480, 80))
    draw_tree(80, 250)
    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