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.
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.
- Thêm
import randomở đầu. - Sau khi khối rơi xuống, khi
block.top > 360, đặtblock.y = -20và đặtblock.xthànhrandom.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
2Sự kiện và va chạm
Cái giỏKhối rơiTự luyện tập: Playground Pygame