Introdução
Neste projeto, você aprenderá como criar um jogo Pong usando Python e a biblioteca Pygame. Pong é um jogo de arcade clássico para dois jogadores, onde os jogadores controlam raquetes para rebater uma bola um contra o outro.
Para concluir este projeto, você precisará seguir as etapas abaixo. Começaremos criando os arquivos do projeto e configurando a janela do jogo. Em seguida, definiremos as cores e configuraremos as raquetes e a bola. Finalmente, moveremos as raquetes e a bola, lidaremos com as colisões e desenharemos os elementos do jogo.
👀 Pré-visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Como criar os arquivos do projeto
- Como configurar a janela do jogo
- Como configurar as raquetes e a bola
- Como configurar as variáveis do jogo
- Como configurar o loop do jogo
- Como mover as raquetes
- Como mover a bola
- Como lidar com as colisões da bola
- Como atualizar as pontuações e reiniciar a bola
- Como lidar com as colisões e o movimento dos power-ups
- Como desenhar os elementos do jogo
- Como desenhar a pontuação
- Como atualizar a tela
- Como definir os quadros por segundo (FPS)
- Como sair do jogo
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Usar a biblioteca Pygame para criar uma janela de jogo
- Configurar e mover objetos do jogo, como raquetes e uma bola
- Lidar com colisões entre objetos do jogo
- Atualizar e exibir as pontuações do jogo
- Definir os quadros por segundo (FPS) para o jogo
- Sair do jogo corretamente
Criar os Arquivos do Projeto
Crie um arquivo chamado pong_game.py no seu editor de código ou IDE preferido. Este será o arquivo principal onde você escreverá o código para o jogo Pong.
cd ~/project
touch pong_game.py
sudo pip install pygame
Configurar a Janela do Jogo
Dentro do arquivo pong_game.py, importe as bibliotecas necessárias no início do código:
import pygame
import random
Em seguida, inicialize o Pygame chamando pygame.init():
## Inicializar Pygame
pygame.init()
Depois, configure a janela do jogo definindo a largura, altura e quadros por segundo (FPS):
## Configurar a janela do jogo
WIDTH = 800
HEIGHT = 400
FPS = 60
Defina as cores usadas no jogo:
## Definir cores
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
ORANGE = (255, 165, 0)
BACKGROUND_COLOR = (50, 50, 50)
Crie a janela do jogo, defina o título da janela e crie um objeto de relógio para controlar a taxa de quadros:
## Configurar a janela do jogo
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Pong Game")
clock = pygame.time.Clock()
Configurar as Raquetes e a Bola
Defina as propriedades das raquetes, como largura, altura, velocidade e cor:
## Set up the paddles
PADDLE_WIDTH = 10
PADDLE_HEIGHT = 60
PADDLE_SPEED = 5
PADDLE_COLOR = WHITE
Crie dois objetos de raquete usando o construtor pygame.Rect() e posicione-os no centro de cada lado da janela do jogo:
paddle1 = pygame.Rect(0, HEIGHT / 2 - PADDLE_HEIGHT / 2, PADDLE_WIDTH, PADDLE_HEIGHT)
paddle2 = pygame.Rect(
WIDTH - PADDLE_WIDTH, HEIGHT / 2 - PADDLE_HEIGHT / 2, PADDLE_WIDTH, PADDLE_HEIGHT
)
Configure as propriedades da bola, como largura, altura, velocidade e cor:
## Set up the ball
BALL_WIDTH = 10
BALL_HEIGHT = 10
BALL_SPEED_X = 3
BALL_SPEED_Y = 3
BALL_COLOR = WHITE
Crie um objeto de bola usando o construtor pygame.Rect() e posicione-o no centro da janela do jogo:
ball = pygame.Rect(
WIDTH / 2 - BALL_WIDTH / 2, HEIGHT / 2 - BALL_HEIGHT / 2, BALL_WIDTH, BALL_HEIGHT
)
Defina a velocidade inicial da bola nas direções x e y aleatoriamente:
ball_speed_x = BALL_SPEED_X * random.choice((1, -1))
ball_speed_y = BALL_SPEED_Y * random.choice((1, -1))
Configure os power-ups, como largura, altura, velocidade e cor:
## Set up the power-ups
POWERUP_WIDTH = 10
POWERUP_HEIGHT = 10
POWERUP_SPEED = 2
POWERUP_COLOR = ORANGE
powerup = pygame.Rect(
WIDTH / 2 - POWERUP_WIDTH / 2,
HEIGHT / 2 - POWERUP_HEIGHT / 2,
POWERUP_WIDTH,
POWERUP_HEIGHT,
)
powerup_speed_x = POWERUP_SPEED * random.choice((1, -1))
powerup_speed_y = POWERUP_SPEED * random.choice((1, -1))
powerup_active = False
Configurar as Variáveis do Jogo
Configure as variáveis para controlar as pontuações dos jogadores, crie um objeto de fonte do jogo e defina a cor para a exibição da pontuação:
## Configurar as variáveis do jogo
score1 = 0
score2 = 0
game_font = pygame.font.SysFont(None, 48)
SCORE_COLOR = WHITE
Configurar o Loop do Jogo
Crie uma variável booleana running e defina-a como True para iniciar o loop do jogo:
## Configurar o loop do jogo
running = True
while running:
Dentro do loop do jogo, trate os eventos iterando pelos eventos que ocorreram:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Mover as Raquetes
Dentro do loop do jogo, verifique a entrada do teclado para mover as raquetes:
## Mover as raquetes
keys = pygame.key.get_pressed()
if keys[pygame.K_w] and paddle1.y > 0:
paddle1.y -= PADDLE_SPEED
if keys[pygame.K_s] and paddle1.y < HEIGHT - PADDLE_HEIGHT:
paddle1.y += PADDLE_SPEED
if keys[pygame.K_UP] and paddle2.y > 0:
paddle2.y -= PADDLE_SPEED
if keys[pygame.K_DOWN] and paddle2.y < HEIGHT - PADDLE_HEIGHT:
paddle2.y += PADDLE_SPEED
Mover a Bola
Dentro do loop do jogo, atualize a posição da bola:
## Mover a bola
ball.x += ball_speed_x
ball.y += ball_speed_y
Lidar com as Colisões da Bola
Dentro do loop do jogo, lide com as colisões da bola com as raquetes e as paredes:
## Colisão da bola com as raquetes
if ball.colliderect(paddle1) or ball.colliderect(paddle2):
ball_speed_x *= -1
## Colisão da bola com as paredes
if ball.y > HEIGHT - BALL_HEIGHT or ball.y < 0:
ball_speed_y *= -1
Atualizar Pontuações e Reiniciar a Bola
Dentro do loop do jogo, atualize as pontuações e reinicie a bola quando ela ultrapassar a raquete:
## Aumentar a pontuação e reiniciar a bola
if ball.x < 0:
score2 += 1
ball.center = (WIDTH / 2, HEIGHT / 2)
ball_speed_x *= random.choice((1, -1))
ball_speed_y *= random.choice((1, -1))
if ball.x > WIDTH:
score1 += 1
ball.center = (WIDTH / 2, HEIGHT / 2)
ball_speed_x *= random.choice((1, -1))
ball_speed_y *= random.choice((1, -1))
Lidar com Colisões e Movimento de Power-ups
Dentro do loop do jogo, lide com as colisões do power-up com as raquetes e mova o power-up:
## Colisão do power-up com as raquetes
if powerup.colliderect(paddle1) or powerup.colliderect(paddle2):
powerup_active = True
powerup.x = WIDTH / 2 - POWERUP_WIDTH / 2
powerup.y = HEIGHT / 2 - POWERUP_HEIGHT / 2
## Movimento do power-up
if powerup_active:
powerup.x += powerup_speed_x
powerup.y += powerup_speed_y
if powerup.x > WIDTH - POWERUP_WIDTH or powerup.x < 0:
powerup_speed_x *= -1
if powerup.y > HEIGHT - POWERUP_HEIGHT or powerup.y < 0:
powerup_speed_y *= -1
Desenhar os Elementos do Jogo
Dentro do loop do jogo, desenhe as raquetes, a bola, o power-up e a pontuação na janela do jogo:
## Desenhar os elementos do jogo
screen.fill(BACKGROUND_COLOR)
pygame.draw.rect(screen, PADDLE_COLOR, paddle1)
pygame.draw.rect(screen, PADDLE_COLOR, paddle2)
pygame.draw.ellipse(screen, BALL_COLOR, ball)
pygame.draw.rect(screen, POWERUP_COLOR, powerup)
Desenhar a Pontuação
Dentro do loop do jogo, desenhe as pontuações no centro superior da janela do jogo:
## Desenhar a pontuação
score_text = game_font.render(f"{score1} : {score2}", True, SCORE_COLOR)
screen.blit(score_text, (WIDTH / 2 - score_text.get_width() / 2, 10))
Atualizar a Exibição
Dentro do loop do jogo, atualize a exibição para mostrar as mudanças:
## Update the display
pygame.display.flip()
Definir o FPS
Dentro do loop do jogo, defina a taxa de quadros (frame rate) para controlar a velocidade do jogo:
## Set the FPS
clock.tick(FPS)
Sair do Jogo
Após o loop do jogo, adicione a seguinte linha para sair do Pygame quando o jogo terminar:
## Quit the game
pygame.quit()
Mude para a área de trabalho (Desktop) e execute o projeto usando o seguinte comando:
python pong_game.py
Agora, você pode jogar o jogo Pong usando as setas do teclado e as teclas W e S.

Resumo
Parabéns! Você concluiu o projeto passo a passo sobre a criação de um jogo Pong usando Python e Pygame. Você aprendeu como configurar a janela do jogo, definir as propriedades das raquetes e da bola, lidar com eventos do jogo, mover as raquetes e a bola, lidar com colisões e desenhar os elementos do jogo. Experimente diferentes modificações para adicionar seus próprios aprimoramentos ao jogo e divirta-se jogando!



