- Published on
Create a Number Memory Game in Excel
- Authors
- Name
- James Hong
Game Overview
Create an exciting memory challenge game where players need to remember and repeat a sequence of random numbers. The game gets progressively harder as players succeed, making it both fun and challenging.
Here's how the game interface looks:
Game Interface Layout:
+----------------+------------------+
| Remember: | High Score: 5 |
| 4 7 2 | Current: 3 |
+----------------+------------------+
| Your Turn: | |
| [___] | [Submit] |
+----------------+------------------+
| Status: Watching numbers... |
+----------------+------------------+
Game Features
Progressive Difficulty:
- Starts with 3 numbers
- Adds one number for each successful round
- Numbers flash one at a time
Score Tracking:
- Current score
- High score saved between games
- Round number display
Visual Feedback:
- Numbers appear one by one
- Clear success/failure indicators
- Status messages guide the player
Implementation Steps
1. Set Up the Interface
- Create the game board:
Sub SetupGameBoard()
' Clear and format the game area
Range("A1:D10").Clear
' Create headers
Range("A1").Value = "Remember:"
Range("C1").Value = "High Score:"
Range("A4").Value = "Your Turn:"
Range("A7").Value = "Status:"
' Format cells
With Range("A1:D1")
.Font.Bold = True
.Font.Size = 14
End With
' Add submit button
ActiveSheet.Buttons.Add(240, 75, 80, 30).Select
Selection.OnAction = "CheckAnswer"
Selection.Characters.Text = "Submit"
End Sub
2. Game Logic
- Generate random sequence:
Function GenerateSequence(length As Integer) As String
Dim i As Integer
Dim sequence As String
For i = 1 To length
sequence = sequence & Int(Rnd * 9 + 1) & " "
Next i
GenerateSequence = Trim(sequence)
End Function
- Display sequence:
Sub ShowSequence(sequence As String)
Dim numbers() As String
numbers = Split(sequence)
Range("B2").Value = ""
Range("A7").Value = "Watch carefully..."
' Show each number with delay
For i = 0 To UBound(numbers)
Range("B2").Value = numbers(i)
Application.Wait Now + TimeValue("00:00:01")
Range("B2").Value = ""
Application.Wait Now + TimeValue("00:00:00.5")
Next i
Range("A7").Value = "Your turn! Type the sequence"
End Sub
- Check player's answer:
Sub CheckAnswer()
Dim playerAnswer As String
Dim correctSequence As String
playerAnswer = Range("B5").Value
correctSequence = Range("Hidden").Value
If playerAnswer = correctSequence Then
Range("A7").Value = "Correct! Next sequence..."
CurrentLength = CurrentLength + 1
StartNewRound
Else
Range("A7").Value = "Game Over! Score: " & (CurrentLength - 3)
UpdateHighScore
ResetGame
End If
End Sub
3. Game Flow Control
- Start new round:
Sub StartNewRound()
Dim sequence As String
' Generate new sequence
sequence = GenerateSequence(CurrentLength)
' Store sequence
Range("Hidden").Value = sequence
' Show sequence to player
ShowSequence sequence
' Clear input box
Range("B5").Value = ""
End Sub
- Reset game:
Sub ResetGame()
CurrentLength = 3
Range("B5").Value = ""
Range("Hidden").Value = ""
StartNewRound
End Sub
Enhancement Ideas
Sound Effects:
- Add beeps for each number
- Success/failure sounds
- Background music option
Visual Improvements:
- Color-coded numbers
- Animated transitions
- Progress bar for sequence display
Additional Features:
- Different game modes (numbers, colors, shapes)
- Time pressure mode
- Multiplayer mode
Statistics Tracking:
- Average score
- Total games played
- Success rate percentage
Learning Outcomes
By creating this game, you'll learn:
- VBA programming basics
- Excel user interface design
- Game logic implementation
- Score tracking systems
- Animation timing in Excel
This memory game provides a perfect balance of fun and challenge while teaching essential Excel VBA concepts. Feel free to modify and enhance it to create your own unique version!