What You'll Build
- A Simon Says memory game with:
- 4 colored buttons that light up in sequence
- Audio tones unique to each button color
- Increasing sequence length as you progress
- A score counter and high score tracker
- Visual feedback when you press the right or wrong button
- A game over screen with replay option
Tool: Lovable (no coding needed) Difficulty: Beginner Time: ~20 minutes Coding required: None
Simon Says is a classic memory game where you watch a sequence of colored lights flash, then repeat the pattern from memory. Each round adds one more step to the sequence, and the game gets harder as the pattern grows. It's simple to understand but surprisingly addictive — and it's a great first game to build.
This project is ideal for vibe coding beginners because the core mechanic is straightforward but the result feels polished. Lovable handles the audio, animations, and game state while you focus on describing what you want. In 20 minutes, you'll have a fully playable Simon Says game you can share with anyone.
What You Need
The Founding Prompt
Go to lovable.dev and start a new project. Paste this prompt:
Build a Simon Says memory game in the browser using React. Layout: Center the game on screen. Show 4 large colored buttons arranged in a 2x2 grid: top-left is green, top-right is red, bottom-left is yellow, bottom-right is blue. Each button should be a rounded quarter-circle shape so together they form a circle, like the classic Simon toy. Gameplay: 1. Press a "Start" button to begin. 2. The game plays a sequence by lighting up buttons one at a time (brighten the color for 600ms, then dim for 200ms between steps). 3. The player then clicks the buttons in the same order. 4. If correct, add one more random color to the sequence and replay it. 5. If wrong, show a "Game Over" screen with the player's score (sequence length minus 1). Audio: Each button plays a distinct tone when it lights up or is clicked. Use the Web Audio API to generate sine wave tones — green: 330Hz, red: 440Hz, yellow: 554Hz, blue: 660Hz. Play each tone for 400ms. On a wrong press, play a low buzzer tone (150Hz). Scoring: Display the current round number (sequence length) prominently above the buttons. Track and display the all-time high score using localStorage. Show "New High Score!" text with a glow effect when the player beats their record. Visual style: Dark background (#1a1a2e). Buttons should have a subtle inner glow when idle. When a button is activated (by the game or the player), it should brighten significantly with a glow effect. Add a smooth scale-up animation on press. Disable player input while the sequence is playing. Show a "Watch..." label during the sequence and "Your turn!" when the player should start clicking. Make it mobile friendly — buttons should be large enough to tap easily on a phone screen.
Click Generate and wait for Lovable to build your game.
Step 1: Test the Core Gameplay
Open the preview and click Start. Watch the first color flash, then click the same button. Play through a few rounds to make sure the sequence grows correctly, the buttons light up clearly, and the game over screen appears when you make a mistake.
Step 2: Improve the Audio Tones
The default sine wave tones work, but they can sound flat. Make them more satisfying with better audio design.
Improve the audio tones. Use oscillator nodes with a slight fade-out envelope (attack: 10ms, sustain: 300ms, release: 100ms) so tones don't click or pop. Add a subtle reverb effect. Make the tones slightly louder when the game plays the sequence and slightly softer when the player clicks, so players can distinguish between the two. Add a satisfying "ding-ding-ding" ascending chime when the player completes a round successfully.
Step 3: Add Visual Polish and Animations
The game should feel satisfying to watch and interact with. Add more visual feedback and smoother animations.
Add visual polish to the game. When a button lights up, add a radial glow that extends slightly beyond the button. Add a subtle pulse animation to the "Your turn!" text. When the player completes a round, flash all 4 buttons simultaneously in a quick celebration. Add a particle burst effect (small colored dots) when the player presses a correct button. On game over, add a screen shake effect and fade the buttons to grayscale before showing the game over overlay.
Step 4: Add Speed Progression
The game should get faster as the player advances, increasing the challenge naturally.
Add speed progression to the game. For rounds 1-4, play the sequence at normal speed (600ms per flash). For rounds 5-9, speed up to 450ms per flash. For rounds 10-14, speed up to 350ms. For rounds 15+, speed up to 250ms. Show a "Speed Up!" notification when the speed increases. Display the current speed level as a small label under the round counter: "Normal", "Fast", "Faster", "Insane".
Step 5: Add Sound Effects and Background Music
Beyond the button tones, add game sound effects that make the experience feel complete.
Add additional sound effects. Play a short whoosh sound when the Start button is pressed. Play a subtle tick between sequence steps. Play a triumphant short jingle when the player beats their high score. Play a descending "wah wah wah" tone on game over. Add a very soft ambient background hum that plays during the game to create atmosphere. Include a mute toggle button in the top-right corner that mutes all audio.
Step 6: Make It Fully Mobile Friendly
Simon Says is perfect for phones — make sure the touch experience is flawless.
Optimize for mobile devices. The 4 buttons should scale to fill the available screen width on phones, with a maximum size of 300px per button on desktop. Add touch feedback: when a player touches a button, it should respond instantly with no 300ms delay (use touch-action: manipulation). Prevent accidental double-taps from zooming the page. The Start and Restart buttons should be large (full-width on mobile). Center everything vertically on the screen so the game doesn't require scrolling on any device.
Step 7: Deploy and Share
Click the Publish button in Lovable to deploy your game. You'll get a live URL you can share with friends. Challenge them to beat your high score — Simon Says is perfect for quick competitive sessions.
Level Up Your Game
Try these follow-up prompts to make your game even better:
Add difficulty levels:
Add a difficulty selector on the start screen: Easy (sequence plays twice before your turn), Normal (default), and Hard (sequence plays 20% faster than normal, and the gap between flashes is only 100ms). Save separate high scores for each difficulty level.
Add a timer:
Add a reaction timer that measures how long the player takes to complete each round. Show the time in milliseconds below the round counter. On the game over screen, show the player's average reaction time per round. Highlight rounds where they responded in under 2 seconds with a gold star.
Add animations:
Add a smooth entrance animation when the game loads — the 4 buttons should scale up from 0 to full size with a staggered bounce effect (green first, then red, yellow, blue, each 100ms apart). Add a rotation animation to the button grid when the speed increases. Add a confetti explosion when beating the high score.
Add high score saving:
Show a top-5 leaderboard on the start screen pulled from localStorage. Each entry shows the player's initials (prompt for 3 characters on game over if they made the top 5), their score, and the date. Highlight the most recent entry. Add a "Reset Scores" button with a confirmation dialog.
Add a two-player mode:
Add a "2 Player" mode option on the start screen. In this mode, two players take turns. Each player plays a full game, and when both are done, compare their scores side by side on a versus screen. Show crowns next to the winner's name. Let players enter their names before starting.
Want persistent high scores? Follow our leaderboard guide to connect your game to a database.
Common Errors
Blank screen after prompt If Lovable generates a blank screen, add to your prompt: "Make sure the game renders immediately on page load with no user setup required."
Game not responding to keyboard Add to your prompt: "Ensure keyboard event listeners are attached to the document, not a specific element. Auto-focus the game container on load."
Mobile touch controls not working Add to your prompt: "Add touch event handlers for mobile. Include visible on-screen buttons for all controls on screens under 768px wide."