Cadute casuali
Lezione 11 di 41 del corso Crea giochi con Pygame di Coddy.
Quando il blocco cade oltre il bordo inferiore, rimettilo sopra il bordo superiore in modo che cada di nuovo. Il suo bordo superiore ha superato quello inferiore quando block.top > 360.
Per rendere il gioco meno prevedibile, fallo cadere in un punto casuale. Il modulo random di Python sceglie i 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 pari a 460 porta il suo lato destro al bordo della finestra. E y = -20 lo posiziona appena sopra la finestra, così scivola dentro dall’alto.
Sfida
FacileFai cadere un nuovo blocco in una posizione casuale dopo ciascun blocco.
- Aggiungi
import randomall'inizio. - Dopo che il blocco è caduto, quando
block.top > 360, impostablock.y = -20e impostablock.xsurandom.randint(0, 460).
Premi «Gioca»: i blocchi continuano a cadere in posizioni casuali. Poi premi «Verifica».
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 Crea giochi con Pygame
Esercitati da solo: Playground Pygame