Menu
CoddyTech

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.

challenge icon

Sfida

Facile
  1. Aggiungi import random all'inizio.
  2. Dopo che il blocco cade, quando block.top > 360, imposta block.y = -20 e block.x su random.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