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á.
Thử thách
DễHoàn thiện cây và trồng thêm hai cây nữa.
- 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ính20. - 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
1Di chuyển hình vuông
Mở cửa sổTô nền4Di chuyển theo thời gian
Thời gian deltaPixel mỗi giâyVector2Gia tốc và ma sátDi chuyển vòng quanh màn hình2Hình dạng và màu sắc
Hình tròn, đường thẳng và đa giácĐường viền và gócMột khung cảnh với các hìnhMàu sắc thay đổiTự luyện tập: Playground Pygame