Você está na página 1de 3

import pygame

import random

# Inicialização do Pygame
pygame.init()

# Configurações da tela
largura_tela = 800
altura_tela = 600
tela = pygame.display.set_mode((largura_tela, altura_tela))
pygame.display.set_caption("Jogo de Esquivar")

# Carregamento de imagens e redimensionamento


jogador_img = pygame.image.load("jogador.png")
jogador_img = pygame.transform.scale(jogador_img, (50, 50))
objeto_img = pygame.image.load("objeto.png")
objeto_img = pygame.transform.scale(objeto_img, (50, 50))

# Posição e velocidade inicial do jogador


jogador_x = largura_tela // 2
jogador_y = altura_tela - 100
jogador_velocidade = 5

# Lista para armazenar os objetos em queda


objetos = []

# Contagem de pontos e vidas


pontos = 0
vidas = 3

# Quantidade inicial de objetos e velocidade de queda


quantidade_objetos = 15
velocidade_objetos = 1

# Velocidade base de queda dos objetos


velocidade_base = 1

# Velocidade adicional de queda a cada 1000 pontos


velocidade_adicional = 0.5

# Fonte para exibir texto


fonte = pygame.font.Font(None, 36)

# Função para desenhar o jogador na tela


def desenhar_jogador():
tela.blit(jogador_img, (jogador_x, jogador_y))

# Função para criar um novo objeto em queda


def criar_objeto():
for _ in range(quantidade_objetos):
objeto_x = random.randint(0, largura_tela - 50)
objeto_y = random.randint(-altura_tela, 0)
objeto_velocidade = velocidade_objetos
objetos.append([objeto_x, objeto_y, objeto_velocidade])

# Função para desenhar os objetos na tela


def desenhar_objetos():
for objeto in objetos:
tela.blit(objeto_img, (objeto[0], objeto[1]))
# Função para atualizar a posição dos objetos em queda
def atualizar_objetos():
for objeto in objetos:
objeto[1] += objeto[2]

# Função para verificar colisão entre o jogador e os objetos


def verificar_colisao():
global vidas, pontos, jogador_x, jogador_y, velocidade_objetos
for objeto in objetos:
if jogador_x < objeto[0] + 50 and jogador_x + 50 > objeto[0] and jogador_y
< objeto[1] + 50 and jogador_y + 50 > objeto[1]:
objetos.remove(objeto)
vidas -= 1
if vidas == 0:
# Fim do jogo
tela.fill((255, 255, 255))
texto = fonte.render("Game Over", True, (0, 0, 0))
tela.blit(texto, (largura_tela // 2 - 80, altura_tela // 2 - 50))
botao_reiniciar = pygame.Rect(largura_tela // 2 - 70,
altura_tela // 2, 140, 40)
pygame.draw.rect(tela, (0, 255, 0), botao_reiniciar)
texto_reiniciar = fonte.render("Reiniciar", True, (0, 0, 0))
tela.blit(texto_reiniciar, (largura_tela // 2 - 45, altura_tela //
2 + 5))
pygame.display.update()

while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
if botao_reiniciar.collidepoint(pos):
# Reiniciar o jogo
pontos = 0
vidas = 3
objetos.clear()
jogador_x = largura_tela // 2
jogador_y = altura_tela - 100
return

if objeto[1] > altura_tela:


objetos.remove(objeto)
pontos += 10
if pontos % 1000 == 0:
vidas += 1
velocidade_objetos += velocidade_adicional

# Função para exibir vidas e pontos na tela


def exibir_texto(texto, x, y):
texto_surface = fonte.render(texto, True, (0, 0, 0))
tela.blit(texto_surface, (x, y))

# Loop principal do jogo


rodando = True
clock = pygame.time.Clock()
while rodando:
# Limpeza da tela
tela.fill((255, 255, 255))

# Processamento de eventos
for event in pygame.event.get():
if event.type == pygame.QUIT:
rodando = False

# Movimento do jogador
teclas = pygame.key.get_pressed()
if teclas[pygame.K_LEFT]:
jogador_x -= jogador_velocidade
if teclas[pygame.K_RIGHT]:
jogador_x += jogador_velocidade

# Limite do jogador dentro da tela


if jogador_x < 0:
jogador_x = 0
elif jogador_x > largura_tela - 50:
jogador_x = largura_tela - 50

# Criação de objetos aleatórios


if len(objetos) < quantidade_objetos:
criar_objeto()

# Atualização e desenho dos objetos


atualizar_objetos()
desenhar_objetos()

# Verificação de colisões
verificar_colisao()

# Desenho do jogador
desenhar_jogador()

# Exibição de vidas e pontos


exibir_texto("Vidas: " + str(vidas), 10, 10)
exibir_texto("Pontos: " + str(pontos), largura_tela - 160, 10)

# Atualização da tela
pygame.display.update()
clock.tick(60)

# Encerramento do jogo
pygame.quit()

Você também pode gostar