Pontuação
0
Nível
1
Vidas

PAC-MAN

Use as setas do teclado para mover

JOGO PAUSADO

GAME OVER

Pontuação: 0

NÍVEL COMPLETO!

Pontuação: 0

Como Jogar

Aprenda a jogar Pac-Man e domine o labirinto!

Controles

Use as teclas de seta (↑, ↓, ←, →) para mover o Pac-Man pelo labirinto. Em dispositivos móveis, utilize os botões direcionais na tela.

Objetivo

Coma todos os pontos para completar o nível. Evite os fantasmas, ou você perderá uma vida. Coma frutas para ganhar pontos extras.

Power-Ups

Coma as pílulas de poder (pontos maiores) para tornar os fantasmas vulneráveis. Enquanto estiverem azuis, você pode comê-los para ganhar mais pontos!

Os Fantasmas

Blinky

O fantasma vermelho. Persegue você diretamente e fica mais rápido conforme você come mais pontos.

Pinky

O fantasma rosa. Tenta emboscar você se posicionando à sua frente.

Inky

O fantasma azul. Movimento imprevisível, usando Blinky como referência.

Clyde

O fantasma laranja. Alterna entre perseguir você e vagar aleatoriamente.

Pontuação

Pellet (ponto pequeno) 10 pontos
Power Pellet (ponto grande) 50 pontos
Fantasma (azul) 200-1600 pontos
Cereja 100 pontos
Morango 300 pontos
Laranja 500 pontos

Comer todos os pontos dá um bônus de 1000 pontos!

Sobre o Projeto

Um Pac-Man desenvolvido com HTML5 Canvas, JavaScript e CSS moderno

Desenvolvimento do Jogo

Este Pac-Man foi desenvolvido como parte do meu portfólio de desenvolvimento web, demonstrando habilidades em:

  • JavaScript Orientado a Objetos
  • HTML5 Canvas para renderização
  • CSS3 para estilização moderna
  • Suporte para modo claro/escuro
  • Design responsivo para mobile
  • Algoritmos de pathfinding para os fantasmas

O jogo foi construído do zero, implementando a mecânica clássica do Pac-Man com toques modernos no design visual inspirado no meu portfólio profissional.

HTML5 CSS3 JavaScript Canvas API Bootstrap 5
// Exemplo de implementação do movimento do Pac-Man
class Player {
  constructor(x, y, radius, speed) {
    this.x = x;
    this.y = y;
    this.radius = radius;
    this.speed = speed;
    this.direction = null;
    this.nextDirection = null;
    this.angle = 0;
    this.mouthOpen = true;
    this.mouthAngle = 0.2;
  }

  update(map) {
    // Verificar se a próxima direção é válida
    if (this.nextDirection !== null) {
      if (this.canMove(this.nextDirection, map)) {
        this.direction = this.nextDirection;
        this.nextDirection = null;
      }
    }

    // Mover na direção atual se possível
    if (this.direction !== null && this.canMove(this.direction, map)) {
      switch (this.direction) {
        case "up": this.y -= this.speed; break;
        case "down": this.y += this.speed; break;
        case "left": this.x -= this.speed; break;
        case "right": this.x += this.speed; break;
      }
    }

    // Animação da boca
    this.mouthAngle = this.mouthOpen ? 0.2 : 0.01;
    this.mouthOpen = !this.mouthOpen;
  }
}

Futuras Implementações

Sistema de Ranking

Implementação de um sistema de ranking online para comparar pontuações com outros jogadores.

Mapas Personalizados

Criação de diferentes labirintos para aumentar a variedade e o desafio do jogo.

Aplicativo Mobile

Versão nativa para dispositivos móveis utilizando frameworks como React Native.

Voltar ao Portfólio