Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🐦 Flutter Bird — Flappy Bird Clone

Este projeto é um clone moderno, responsivo e de alto polimento visual do clássico jogo Flappy Bird, desenvolvido em Flutter utilizando conceitos de arquitetura modular (MVC), física 2D simulada no próprio loop de quadros e persistência de dados.

Projetado especificamente para servir como demonstração de portfólio de engenharia de software e UI/UX de jogos em plataformas Mobile e Web.


🚀 Funcionalidades e Diferenciais Técnicos

  • Game Loop Robusto (Frame-Rate Independent): Utiliza Ticker nativo do Flutter calculando a variação de milissegundos por quadro (dt ou delta-time). Isso garante a mesma velocidade de física e rolagem de cenário em telas de 60Hz, 90Hz, 120Hz ou superiores.
  • Física Realista Simulada: Equações de movimento linear para simular gravidade e impulso de pulo (jump), além de inclinação visual dinâmica do pássaro com base na sua velocidade vertical de queda.
  • Geração Dinâmica de Obstáculos (Spawning & Despawning): Lógica procedural de geração de canos a cada 1.8 segundos com alturas de vão livre aleatórias. Remoção proativa dos canos fora da tela para evitar vazamentos de memória (despawning automático).
  • Detecção de Colisão Precisa (AABB): Implementação matemática de colisões retangulares do tipo Axis-Aligned Bounding Box entre o pássaro (hitbox circular simplificada) e as extremidades superior/inferior dos canos.
  • Estética Premium Retro:
    • Parallax horizontal de fundo (skyline da cidade deslocando-se mais lentamente para criar profundidade 3D).
    • Animação de sprite do pássaro batendo asas e fallback vetorial idêntico (caso os assets falhem).
    • Tipografia pixelada clássica de fliperamas (Press Start 2P) aplicada em toda a interface e no HUD de pontuação.
    • Transições suaves com efeitos de fade-in e slide-up na tela de Game Over.
  • Persistência de Recordes (High Score): Gravação em disco do maior recorde de pontuação utilizando o pacote shared_preferences.

📂 Estrutura de Diretórios (MVC)

O projeto foi organizado de forma modular, desacoplando a lógica de física dos elementos visuais:

lib/
├── main.dart                  # Configuração de orientação, status bar e inicialização do Provider
├── components/                # Elementos gráficos e atores do jogo
│   ├── bird.dart              # Pássaro animado por sprites com fallback de desenho vetorial
│   └── pipe.dart              # Par de canos de obstáculos com flip vertical para a parte superior
├── controllers/               # Lógica de negócios e simulação física
│   └── game_controller.dart   # Máquina de estados (GameState), gravidade, colisões e recordes
└── views/                     # Interface de usuário (Screens e Overlays)
    ├── game_view.dart         # Palco do jogo (Stage) gerenciando o Ticker e fundo Parallax
    ├── menu_view.dart         # Tela de Menu Inicial com animação de flutuação e estatísticas
    └── game_over_view.dart    # Painel de Fim de Jogo com transições de fade-in e opções de reinício

🛠️ Ajustando a Dificuldade (Game Tweaking)

Você pode calibrar toda a dinâmica do jogo de forma simples alterando as constantes físicas no topo da classe GameController (lib/controllers/game_controller.dart):

// Aceleração da gravidade (pixels por segundo ao quadrado)
static const double gravity = 900.0;     

// Velocidade vertical aplicada para cima ao pular (pixels por segundo)
static const double jumpForce = -350.0;   

// Velocidade terminal máxima de queda
static const double maxFallSpeed = 480.0; 

// Velocidade horizontal com que os canos correm
static const double pipeSpeed = 200.0;    

// Intervalo de tempo de nascimento dos novos canos (segundos)
static const double spawnInterval = 1.8;  

🏁 Instalação e Execução

Pré-requisitos

  • Flutter SDK instalado no seu ambiente de desenvolvimento (versão recomendada >= 3.12.2).

Passos para rodar o projeto localmente:

  1. Clone o repositório para o seu ambiente local.
  2. Navegue até o diretório do projeto e execute o comando para baixar as dependências:
    flutter pub get
  3. Execute o projeto no seu dispositivo conectado ou emulador:
    flutter run

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages