Menu
CoddyTech

Raggiungi l'obiettivo

Lezione 8 di 41 del corso Crea giochi con Pygame di Coddy.

Un gioco ha bisogno di un obiettivo. Disegna un quadrato verde nell'angolo in basso a destra e, quando il quadrato del giocatore entra al suo interno, il giocatore vince.

L'obiettivo si trova in (420, 300) ed è largo 60 e alto 60. Il quadrato del giocatore si trova al suo interno quando il suo lato sinistro è a 420 o più e la parte superiore è a 300 o più. Entrambe le condizioni devono essere vere, quindi uniscile con and.

La vittoria deve durare. Memorizzala in una variabile che inizia con False e che può diventare True soltanto:

won = False

while running:
    # sposta il quadrato
    if x >= 420 and y >= 300:
        won = True
    if won:
        screen.fill((40, 110, 70))
    else:
        screen.fill((30, 30, 46))

Una volta che won è True, niente la reimposta, quindi lo sfondo resta verde anche se il quadrato esce dall'obiettivo.

challenge icon

Sfida

Facile

Fai diventare verde lo schermo quando il quadrato raggiunge l'obiettivo.

  1. Imposta won = False prima del ciclo. Impostalo su True quando x >= 420 e y >= 300.
  2. Riempi con (40, 110, 70) quando won, altrimenti con (30, 30, 46).
  3. Prima del quadrato, disegna l'obiettivo: (60, 200, 120) in (420, 300, 60, 60).

Premi «Gioca» e guida il quadrato verso l'obiettivo: lo sfondo diventa verde. Poi premi «Verifica».

Provalo tu

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

x, y = 220, 160

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

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    x = max(0, min(x, 480 - 40))
    y = max(0, min(y, 360 - 40))

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Tutte le lezioni di Crea giochi con Pygame

Esercitati da solo: Playground Pygame