Flappy Bird creato da Deepseek R1

March 4, 2025

Installazione

Per eseguire il gioco, seguite questi passaggi:

  1. Installazione di Python 3.11
    Assicuratevi di avere installato Python 3.11 sul vostro computer. Potete scaricarlo dal sito ufficiale di Python: [inserisci qui il link].

  2. Installazione della libreria Pygame
    Apriate il prompt dei comandi (cmd) tramite il menu Start, quindi eseguite il seguente comando:

    pip install pygame

Scrittura del Codice

  1. Creare il file Python
    Aprite un editor di testo come Notepad e scrivete il seguente codice. Assicuratevi di copiare esattamente il codice per evitare errori.
import pygame
import sys
import random

# Inizializza Pygame
pygame.init()

# Costanti del gioco
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 600
GRAVITY = 0.25
JUMP_STRENGTH = -8
PIPE_SPEED = 3
PIPE_GAP = 150
PIPE_FREQUENCY = 1500  # millisecondi

# Impostazioni dello schermo
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Flappy Bird")
clock = pygame.time.Clock()

bird = pygame.Rect(50, 300, 30, 30)
bird_velocity = 0

# Proprietà dei tubi
pipes = []
last_pipe = pygame.time.get_ticks()
score = 0
game_active = True

# Font per il punteggio
font = pygame.font.Font(None, 36)

def create_pipe():
    random_height = random.randint(100, 400)
    return {
        'x': SCREEN_WIDTH,
        'top': random_height,
        'scored': False
    }

def draw_score():
    score_surface = font.render(f"Punteggio: {score}", True, (255, 255, 255))
    screen.blit(score_surface, (10, 10))

def game_over():
    game_over_font = pygame.font.Font(None, 72)
    game_over_surface = game_over_font.render("Game Over!", True, (255, 0, 0))
    screen.blit(game_over_surface, (100, 250))

    restart_font = pygame.font.Font(None, 36)
    restart_surface = restart_font.render("Premi SPAZIO per ricominciare", True, (255, 255, 255))
    screen.blit(restart_surface, (100, 350))

# Loop principale
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                if game_active:
                    bird_velocity = JUMP_STRENGTH
                else:
                    # Reset del gioco
                    game_active = True
                    pipes.clear()
                    bird.y = 300
                    bird_velocity = 0
                    score = 0
                    last_pipe = pygame.time.get_ticks()

    screen.fill((0, 0, 0))  # Pulisci lo schermo con sfondo nero

    if game_active:
        # Fisica dell'uccello
        bird_velocity += GRAVITY
        bird.y += bird_velocity

        # Controllo collisioni con il soffitto e il pavimento
        if bird.top <= 0 or bird.bottom >= SCREEN_HEIGHT:
            game_active = False

        # Generazione tubi
        time_now = pygame.time.get_ticks()
        if time_now - last_pipe > PIPE_FREQUENCY:
            pipes.append(create_pipe())
            last_pipe = time_now

        # Movimento e rilevamento collisioni con i tubi
        for pipe in pipes:
            pipe['x'] -= PIPE_SPEED

            # Definisci rettangoli per i tubi
            top_pipe = pygame.Rect(pipe['x'], 0, 50, pipe['top'])
            bottom_pipe = pygame.Rect(pipe['x'], pipe['top'] + PIPE_GAP, 50, SCREEN_HEIGHT - (pipe['top'] + PIPE_GAP))

            # Controllo collisioni
            if bird.colliderect(top_pipe) or bird.colliderect(bottom_pipe):
                game_active = False

            # Aggiornamento del punteggio
            if pipe['x'] + 50 < bird.left and not pipe['scored']:
                score += 1
                pipe['scored'] = True

        # Rimozione tubi fuori schermo
        pipes = [pipe for pipe in pipes if pipe['x'] > -50]

        # Disegna elementi
        pygame.draw.rect(screen, (255, 255, 0), bird)  # Uccello giallo

        for pipe in pipes:
            pygame.draw.rect(screen, (0, 255, 0), (pipe['x'], 0, 50, pipe['top']))  # Tubo superiore
            pygame.draw.rect(screen, (0, 255, 0), (pipe['x'], pipe['top'] + PIPE_GAP, 50, SCREEN_HEIGHT))  # Tubo inferiore

        draw_score()
    else:
        game_over()

    pygame.display.update()
    clock.tick(60)

Esecuzione del Gioco

  1. Salvataggio del file
    Salvate il codice in un file con estensione .py, ad esempio flappy-bird.py.

  2. Esecuzione
    Apriate nuovamente il prompt dei comandi (cmd), navigate nella cartella dove è salvato il file (es: cd Desktop) e eseguite il gioco digitando:

    python flappy-bird.py

    Premete invio per avviare il programma.


Assicuratevi di scrivere il codice esattamente come indicato per evitare errori durante l'esecuzione. Buon divertimento con Flappy Bird!