Menu
CoddyTech

Số ngẫu nhiên

Thuộc phần Python trong cửa sổ trò chơi trong hành trình Pygame của Coddy. Bài học 29 trên 33.

Mô-đun random của Python chọn số ngẫu nhiên. Hãy nhập mô-đun này ở đầu chương trình, phía trên hoặc phía dưới import pygame:

import random

random.randint(a, b) cho ra một số nguyên từ a đến b, bao gồm cả hai đầu mút. random.choice(items) chọn một phần tử trong danh sách:

x = random.randint(20, 620)
size = random.choice([3, 4, 5])

Mỗi lần gọi, hàm sẽ chọn lại, vì vậy hãy gọi hàm vào lúc bạn cần một giá trị mới. Một ngôi sao được đặt khi nhấn phím cách:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    x = random.randint(20, 620)
    y = random.randint(60, 300)
    stars.append((x, y))

Hãy chú ý hai cặp dấu ngoặc trong stars.append((x, y)): append nhận một phần tử, và phần tử đó là tuple (x, y). Nếu thay vào đó bạn chọn x và y một lần trước vòng lặp trò chơi, mọi ngôi sao sẽ xuất hiện ở cùng một vị trí.

challenge icon

Thử thách

Trung bình

Nhấn phím cách để rải sao ngẫu nhiên.

  1. Thêm import random ở đầu.
  2. Khi có sự kiện KEYDOWN cho K_SPACE, chọn x = random.randint(20, 620) và y = random.randint(60, 300), rồi thêm (x, y) vào stars.
  3. Giữ nguyên thao tác nhấp để thêm sao.

Nhấn “Chơi” rồi nhấn phím cách: sao sẽ rơi vào các vị trí ngẫu nhiên. Sau đó nhấn “Kiểm tra”.

Tự làm thử

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Thiết lập mọi thứ ở đây, trước vòng lặp trò chơi.
stars = []
font = pygame.font.Font(None, 36)

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

    # Thay đổi mọi thứ ở đây sau mỗi khung hình.

    screen.fill((20, 24, 48))
    # Vẽ ở đây, sau khi tô nền.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)
    text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Python trong cửa sổ trò chơi

Tự luyện tập: Playground Pygame