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 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.

(Applichiamo il background a Pong Variant con PyGame).
E’ meglio passare ad altro visto il risultato abbastanza deludente!