Menu
CoddyTech

Các vật rơi ngẫu nhiên

Bài học 11 trên 41 trong khóa học Tạo trò chơi với Pygame của Coddy.

Khi khối rơi qua mép dưới, hãy đưa nó trở lại phía trên mép trên để nó rơi xuống lần nữa. Mép trên của khối nằm dưới mép dưới khi block.top > 360.

Để trò chơi khó đoán hơn, hãy thả khối ở một vị trí ngẫu nhiên. Module random của Python chọn số: random.randint(0, 460) là một số nguyên từ 0 đến 460, bao gồm cả hai đầu mút.

import random

if block.top > 360:
    block.y = -20
    block.x = random.randint(0, 460)

Tại sao là 460? Khối rộng 20, nên x bằng 460 sẽ đặt cạnh phải của nó sát mép cửa sổ. Còn y = -20 đặt khối ngay phía trên cửa sổ, để nó trượt xuống từ trên.

challenge icon

Thử thách

Dễ

Thả một khối mới ở vị trí ngẫu nhiên sau mỗi lần khối rơi xuống.

  1. Thêm import random ở đầu.
  2. Sau khi khối rơi xuống, khi block.top > 360, đặt block.y = -20 và đặt block.x thành random.randint(0, 460).

Nhấn Chơi: các khối tiếp tục rơi ở những 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((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Tất cả bài học trong Tạo trò chơi với Pygame

Tự luyện tập: Playground Pygame