import pygame
# Coloque aqui o código do jogo adaptado para rodar no navegador
import pygame
import random
import time
# Inicialização do Pygame
pygame.init()
# Configurações da tela
WIDTH, HEIGHT = 1200, 700
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("VECO Come-Come")
# Cores
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 0, 255) # CÁ
RED = (255, 0, 0) # LÊ
DARK_YELLOW = (200, 170, 0) # FÊ
# Fonte para os textos
font = pygame.font.Font(None, 24)
# Configuração do jogo
PLAYER_RADIUS = 50
BALL_RADIUS = 20
player_speed = 9
num_balls_per_type = 20 # Número de bolinhas por tipo (CÁ, FÊ, LÊ)
game_time = 15 # segundos
# Inicializar a bola controlada pelo jogador (VECO)
veco = {"x": WIDTH // 2, "y": HEIGHT // 2, "color": WHITE}
# Inicializar as bolinhas coloridas (CÁ, FÊ e LÊ)
ball_types = [("CÁ", BLUE), ("FÊ", DARK_YELLOW), ("LÊ", RED)]
balls = []
for ball_type, color in ball_types:
for _ in range(num_balls_per_type):
balls.append({
"x": random.randint(BALL_RADIUS, WIDTH - BALL_RADIUS),
"y": random.randint(BALL_RADIUS, HEIGHT - BALL_RADIUS),
"dx": random.choice([-4, 4]), # Velocidade um pouco mais rápida
"dy": random.choice([-4, 4]),
"color": color,
"type": ball_type,
"eaten": False
})
# Contador de bolinhas comidas
score = {"FÊ": 0, "CÁ": 0, "LÊ": 0}
# Tempo de início do jogo
start_time = time.time()
# Loop principal do jogo
running = True
clock = pygame.time.Clock()
while running:
elapsed_time = time.time() - start_time
remaining_time = max(0, game_time - int(elapsed_time))
# Processamento de eventos
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Movimento da bola VECO (setas do teclado)
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and veco["y"] > PLAYER_RADIUS:
veco["y"] -= player_speed
if keys[pygame.K_DOWN] and veco["y"] < HEIGHT - PLAYER_RADIUS:
veco["y"] += player_speed
if keys[pygame.K_LEFT] and veco["x"] > PLAYER_RADIUS:
veco["x"] -= player_speed
if keys[pygame.K_RIGHT] and veco["x"] < WIDTH - PLAYER_RADIUS:
veco["x"] += player_speed
# Movimento das bolinhas coloridas e colisão com as paredes
for ball in balls:
if not ball["eaten"]:
ball["x"] += ball["dx"]
ball["y"] += ball["dy"]
# Rebote nas paredes
if ball["x"] <= BALL_RADIUS or ball["x"] >= WIDTH - BALL_RADIUS:
ball["dx"] *= -1
if ball["y"] <= BALL_RADIUS or ball["y"] >= HEIGHT - BALL_RADIUS:
ball["dy"] *= -1
# Verificar colisão com VECO
dx = veco["x"] - ball["x"]
dy = veco["y"] - ball["y"]
distance = (dx ** 2 + dy ** 2) ** 0.5
if distance < PLAYER_RADIUS + BALL_RADIUS:
ball["eaten"] = True
score[ball["type"]] += 1
# Renderização
screen.fill(BLACK)
# Desenhar a bola controlada (VECO)
pygame.draw.circle(screen, veco["color"], (veco["x"], veco["y"]), PLAYER_RADIUS)
text_veco = font.render("VECO", True, BLACK)
screen.blit(text_veco, (veco["x"] - 25, veco["y"] - 10))
# Desenhar as bolinhas coloridas
for ball in balls:
if not ball["eaten"]:
pygame.draw.circle(screen, ball["color"], (ball["x"], ball["y"]), BALL_RADIUS)
ball_text = font.render(ball["type"], True, BLACK)
screen.blit(ball_text, (ball["x"] - 12, ball["y"] - 8))
# Exibir tempo restante
timer_text = font.render(f"Tempo: {remaining_time}s", True, WHITE)
screen.blit(timer_text, (WIDTH // 2 - 50, 20))
pygame.display.flip()
clock.tick(60)
# Finalizar jogo após o tempo acabar
if elapsed_time >= game_time:
running = False
# Exibir ranking final
screen.fill(BLACK)
ranking_text = font.render("Ranking de bolinhas comidas:", True, WHITE)
screen.blit(ranking_text, (WIDTH // 2 - 150, HEIGHT // 2 - 100))
sorted_score = sorted(score.items(), key=lambda item: item[1], reverse=True)
y_offset = HEIGHT // 2 - 50
for idx, (ball_type, amount) in enumerate(sorted_score):
result_text = font.render(f"{idx+1}. {ball_type}: {amount}", True, WHITE)
screen.blit(result_text, (WIDTH // 2 - 50, y_offset + idx * 40))
pygame.display.flip()
# Espera para visualizar o ranking antes de fechar
pygame.time.delay(5000)
pygame.quit()