Cadute casuali
Fa parte della sezione Il game loop del percorso Pygame di Coddy. Lezione 25 di 32.
Quando il blocco supera il bordo inferiore, rimettilo sopra il bordo superiore, così cadrà di nuovo. Il suo bordo superiore supera quello inferiore quando block.top > 360.
Per rendere il gioco meno prevedibile, fallo cadere in un punto casuale. Il modulo random di Python sceglie dei numeri: random.randint(0, 460) è un numero intero da 0 a 460, estremi inclusi.
import random
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)Perché 460? Il blocco è largo 20, quindi un valore x di 460 porta il suo bordo destro al limite della finestra. E y = -20 lo posiziona appena sopra la finestra, così entra scorrendo dall'alto.
Sfida
Facile- Aggiungi
import randomall'inizio. - Dopo che il blocco cade, quando
block.top > 360, impostablock.y = -20eblock.xsurandom.randint(0, 460).
Provalo tu
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()
Tutte le lezioni di Il game loop
Esercitati da solo: Playground Pygame