SparkJS Logo
HomeIntermediateFlappy Bird Clone

🐦 Flappy Bird Clone

Build the addictive tap-to-fly game with pipes, scoring, and realistic physics

⏱️ 5 hours⚡ Intermediate🎮 Game Project

Play the Game

Press SPACE or UP ARROW to jump

📋 How to Play

  • 1.Press SPACE or UP ARROW to make the bird jump
  • 2.Navigate through the green pipes without hitting them
  • 3.Each pipe you pass successfully increases your score
  • 4.Gravity pulls the bird down constantly - timing is everything!
  • 5.Game over if you hit pipes, the ground, or the ceiling

🎯 Key Concepts

Physics

Gravity and velocity create realistic falling motion. Jump gives instant upward velocity.

Collision Detection

AABB collision checks between bird and pipes, ground, ceiling.

Procedural Generation

Random pipe heights generate unique layouts each game.

Score Tracking

Track score and high score using game state and localStorage.

💻 Code Walkthrough

Game State Structure

interface Bird {
  x: number;        // Horizontal position
  y: number;        // Vertical position
  velocity: number; // Current vertical velocity
}

interface Pipe {
  x: number;         // Horizontal position
  topHeight: number; // Height of top pipe
  passed: boolean;   // Whether bird has passed this pipe
}

Physics Update

// Apply gravity every frame
bird.velocity += GRAVITY;  // Accelerate downward
bird.y += bird.velocity;   // Move bird

// Jump resets velocity
if (jump) {
  bird.velocity = JUMP_STRENGTH; // Set upward velocity
}

Collision Detection

// Check if bird hits pipes
if (birdRight > pipeLeft && birdLeft < pipeRight) {
  if (birdTop < topPipeBottom || birdBottom > bottomPipeTop) {
    gameOver = true; // Collision detected!
  }
}

🚀 Challenges to Try

  • Speed Up: Gradually increase pipe speed after every 10 points passed
  • Power-ups: Add shield or slow-motion power-ups
  • Sound Effects: Play jump and point sounds
  • Animations: Rotate bird based on velocity direction
  • Particles: Add particle effects when collecting points