Banner do Post - Passo a Passo para Criar um Jogo como Pong em Python com Pygame

Passo a Passo para Criar um Jogo como Pong em Python com Pygame

Passo a Passo para Criar um Jogo como Pong em Python com Pygame

Pong é um clássico jogo de arcade onde dois jogadores controlam raquetes (paddles) para rebater uma bola, evitando que ela passe pela sua lateral da tela. Vamos criar uma versão simples usando Python e a biblioteca Pygame. Este tutorial é para iniciantes, mas assume conhecimento básico de Python.

Passo 1: Instalação do Pygame

Para começar, você precisa instalar o Pygame. Abra o terminal ou prompt de comando e execute:

pip install pygame

Isso instala a biblioteca. Certifique-se de ter Python 3.x instalado. Após a instalação, teste importando no Python:

import pygame
print(pygame.__version__)

Se não houver erros, está pronto!

Passo 2: Configuração Inicial

Crie um arquivo chamado pong.py. Comece importando as bibliotecas necessárias e inicializando o Pygame.

import pygame
import sys

# Inicializa o Pygame
pygame.init()

# Configurações da tela
largura = 800
altura = 600
tela = pygame.display.set_mode((largura, altura))
pygame.display.set_caption("Pong Simples")

# Cores
BRANCO = (255, 255, 255)
PRETO = (0, 0, 0)

# Clock para controlar FPS
clock = pygame.time.Clock()

Aqui, criamos uma janela de 800x600 pixels e definimos cores básicas.

Passo 3: Criar os Elementos do Jogo

Vamos definir as raquetes (paddles) e a bola usando retângulos (Rect do Pygame).

# Raquete do Jogador 1 (esquerda)
paddle1 = pygame.Rect(10, altura // 2 - 60, 10, 120)  # x, y, largura, altura

# Raquete do Jogador 2 (direita)
paddle2 = pygame.Rect(largura - 20, altura // 2 - 60, 10, 120)

# Bola
bola = pygame.Rect(largura // 2 - 10, altura // 2 - 10, 20, 20)
velocidade_bola_x = 5
velocidade_bola_y = 5

# Velocidade das raquetes
velocidade_paddle = 7

# Pontuação
pontos1 = 0
pontos2 = 0
fonte = pygame.font.Font(None, 74)  # Fonte para exibir pontuação

As raquetes são retângulos verticais, e a bola é um quadrado pequeno. Definimos velocidades iniciais.

Passo 4: O Loop Principal do Jogo

Todo jogo em Pygame tem um loop que atualiza a tela continuamente.

while True:
    # Limpa a tela
    tela.fill(PRETO)
    
    # Desenha os elementos
    pygame.draw.rect(tela, BRANCO, paddle1)
    pygame.draw.rect(tela, BRANCO, paddle2)
    pygame.draw.ellipse(tela, BRANCO, bola)  # Bola como círculo
    pygame.draw.aaline(tela, BRANCO, (largura // 2, 0), (largura // 2, altura))  # Linha central
    
    # Exibe pontuação
    texto_pontos = fonte.render(f"{pontos1} : {pontos2}", True, BRANCO)
    tela.blit(texto_pontos, (largura // 2 - 50, 10))
    
    # Atualiza a tela
    pygame.display.flip()
    
    # Limita a 60 FPS
    clock.tick(60)

Isso desenha tudo na tela, mas ainda não há movimento ou eventos. Adicione o código de eventos e lógica no loop.

Passo 5: Manipulando Eventos

Eventos em Pygame incluem teclas pressionadas, cliques etc. Usaremos para mover as raquetes e sair do jogo.

Adicione isso no início do loop while True:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

Para movimentar as raquetes com teclas (W/S para jogador 1, UP/DOWN para jogador 2), use pygame.key.get_pressed() fora do loop de eventos, pois é para teclas contínuas.

Adicione após o for event:

    teclas = pygame.key.get_pressed()
    
    # Movimenta paddle1
    if teclas[pygame.K_w] and paddle1.top > 0:
        paddle1.move_ip(0, -velocidade_paddle)
    if teclas[pygame.K_s] and paddle1.bottom < altura:
        paddle1.move_ip(0, velocidade_paddle)
    
    # Movimenta paddle2
    if teclas[pygame.K_UP] and paddle2.top > 0:
        paddle2.move_ip(0, -velocidade_paddle)
    if teclas[pygame.K_DOWN] and paddle2.bottom < altura:
        paddle2.move_ip(0, velocidade_paddle)

Isso permite movimento contínuo enquanto as teclas estão pressionadas.

Passo 6: Movimentação da Bola e Colisões

Atualize a posição da bola e verifique colisões.

Adicione no loop, após o movimento das raquetes:

    # Move a bola
    bola.move_ip(velocidade_bola_x, velocidade_bola_y)
    
    # Colisão com topo e fundo
    if bola.top <= 0 or bola.bottom >= altura:
        velocidade_bola_y *= -1
    
    # Colisão com paddles
    if bola.colliderect(paddle1) or bola.colliderect(paddle2):
        velocidade_bola_x *= -1
    
    # Pontuação (bola sai da tela)
    if bola.left <= 0:
        pontos2 += 1
        bola.center = (largura // 2, altura // 2)  # Reseta bola
    if bola.right >= largura:
        pontos1 += 1
        bola.center = (largura // 2, altura // 2)

Isso faz a bola quicar nas bordas superiores/inferiores e nas raquetes, e pontua quando passa pelas laterais.

Passo 7: Finalizações e Melhorias

Adicione condições de vitória, como parar quando alguém atinge 5 pontos:

    if pontos1 >= 5 or pontos2 >= 5:
        vencedor = "Jogador 1" if pontos1 >= 5 else "Jogador 2"
        texto_vencedor = fonte.render(f"{vencedor} venceu!", True, BRANCO)
        tela.blit(texto_vencedor, (largura // 2 - 200, altura // 2))
        pygame.display.flip()
        pygame.time.wait(3000)  # Espera 3 segundos
        pygame.quit()
        sys.exit()

Você pode adicionar sons com pygame.mixer.Sound ou mais features, como IA para single-player.

Passo 8: Executando o Jogo

Salve o arquivo e execute:

python pong.py

Teste e ajuste velocidades se necessário. Se houver erros, verifique indentação e imports.

Esse é um Pong básico! Para versões avançadas, explore documentação oficial do Pygame. Divirta-se codando! Se precisar de código completo ou variações, avise.


Comentários

Nenhum comentário ainda. Seja o primeiro a comentar!

Faça login para adicionar um comentário.