Rivivi un classico. Ecco una breve realizzazione del gioco Pong di Atari in Python con l’aiuto di PyGame.

Rivivi un classico. Ecco una breve realizzazione del gioco Pong di Atari in Python con l’aiuto di PyGame.

Novembre 12, 2023 0 Di Ruggero Grando

Una prima versione del gioco Pong Variant.

Ecco, finalmente, l’intero codice della prima versione della variante del gioco di Atari Pong che ho ampiamente commentato.

import pygame
from pygame.locals import *

# Inizializza Pygame
pygame.init()

# Imposta le dimensioni della finestra di gioco
width, height = 640, 480
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Pong")

# Definisci i colori
bg_color = (0, 0, 0)
paddle_color = (255, 255, 255)

# Imposta le dimensioni e la posizione dei paddle
paddle_width, paddle_height = 10, 60
paddle_speed = 5
left_paddle_pos = pygame.Rect(50, height/2 - paddle_height/2, paddle_width, paddle_height)
right_paddle_pos = pygame.Rect(width - 50 - paddle_width, height/2 - paddle_height/2, paddle_width, paddle_height)

# Imposta la velocità e la direzione della palla
ball_x_speed = 3
ball_y_speed = 3
ball_pos = pygame.Rect(width/2, height/2, 10, 10)

# Funzione per aggiornare la posizione dei paddle
def update_paddle(paddle_pos, up_key, down_key):
    keys = pygame.key.get_pressed()
    if keys[up_key]:
        paddle_pos.y -= paddle_speed
    if keys[down_key]:
        paddle_pos.y += paddle_speed

# Ciclo principale del gioco
running = True
clock = pygame.time.Clock()

while running:
    clock.tick(60)

    # Gestione degli eventi
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

    # Aggiorna la posizione dei paddle
    update_paddle(left_paddle_pos, K_w, K_s)
    update_paddle(right_paddle_pos, K_UP, K_DOWN)

    # Aggiorna la posizione della palla
    ball_pos.x += ball_x_speed
    ball_pos.y += ball_y_speed

    # Rimbalzo della palla sui bordi verticali
    if ball_pos.top <= 0 or ball_pos.bottom >= height:
        ball_y_speed = -ball_y_speed

    # Collisione della palla con i paddle
    if ball_pos.colliderect(left_paddle_pos) or ball_pos.colliderect(right_paddle_pos):
        ball_x_speed = -ball_x_speed

    # Pulisci lo schermo
    screen.fill(bg_color)

    # Disegna i paddle e la palla
    pygame.draw.rect(screen, paddle_color, left_paddle_pos)
    pygame.draw.rect(screen, paddle_color, right_paddle_pos)
    pygame.draw.ellipse(screen, paddle_color, ball_pos)

    # Aggiorna la schermata
    pygame.display.flip()

# Chiudi Pygame
pygame.quit()
```

Una prima esecuzione del gioco Pong Variant mostra la seguente schermata abbastanza grezza.

La prima versione di Pong Vriant con PyGame
Immagine 1.
(La prima versione di Pong Variant con PyGame)

Aggiungiamo lo sfondo a Pong Variant.

questo punto vorrei apportare alcune modifiche e aggiungere un immagine di sfondo, anche se non ciò non è previsto nel gioco originale di Atari. Le righe sono le seguenti.

background = pygame.image.load("background1.jpg") 
#Funzione per disegnare l'immagine di sfondo 
def draw_background(): 
  screen.blit(background, (0, 0))

Alla variabile “background” viene associata l’immagine background1.jpg caricata dalla funzione pygame.image.load. Questa diventerà lo sfondo del gioco Pong Variant.

La seguente parte del codice definisce una funzione chiamata draw_background. Questa funzione ha il compito di disegnare l’immagine di sfondo precedentemente caricata su una superficie denominata screen. Non resta che aggiungere la seguente riga di codice per disegnare il background con la seguente riga di codice.

# Disegna l'immagine di sfondo
    draw_background()

Il risultato è il seguente.

Il primo background di Pong Variant!
Immagine 2.
(Applichiamo il background a Pong Variant con PyGame).

E’ meglio passare ad altro visto il risultato abbastanza deludente!

Pagina Successiva | Pagina Precedente

No votes yet.
Please wait...

Pagine: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18