| .github | ||
| MemoryGame | ||
| .gitignore | ||
| README.md | ||
Memory Game
A Blazor WebAssembly application designed to help people with dementia practice image-to-word associations.
Features
- 10-Round Game Sessions: Each game consists of 10 rounds to provide a focused practice session
- Dual Game Modes:
- Show an image with 4 word choices
- Show a word with 4 image choices
- Adaptive Learning:
- Words answered correctly become less frequent in future games
- Words answered incorrectly appear more often for additional practice
- Progress Tracking: Statistics are stored in browser local storage and persist across sessions
- Tablet-Optimized UI: Designed for 11" tablets with large, easy-to-tap buttons
- Simple Vocabulary: Uses everyday objects (fork, knife, door, ball, house, etc.)
- Immediate Feedback: Shows whether the answer was correct or incorrect after each round
- Game Results: Displays total correct and incorrect answers at the end of each game
Technology Stack
- .NET 10.0: Using the latest .NET framework
- Blazor WebAssembly: Client-side web application that runs entirely in the browser
- Local Storage: Browser-based persistence for tracking progress across sessions
- SVG Images: Scalable vector graphics for clear display on all screen sizes
Getting Started
Prerequisites
Running the Application
-
Clone the repository:
git clone https://github.com/clayschaad/MemoryGame.git cd MemoryGame -
Navigate to the project directory:
cd MemoryGame -
Run the application:
dotnet run -
Open your browser and navigate to the URL shown in the console (typically
http://localhost:5000)
Building for Production
To build the application for deployment:
dotnet publish -c Release
The published files will be in bin/Release/net10.0/publish/wwwroot/ and can be hosted on any static web server.
How to Use
- Start Screen: Click "Start New Game" to begin a new game session
- Game Rounds:
- Read the question (image or word)
- Select the correct answer from 4 options
- Receive immediate feedback
- Wait 2 seconds before automatically moving to the next round
- Results: After 10 rounds, view your score and click "Play Again" to start a new game
Game Statistics
The application tracks performance for each word/image pair:
- Correct Count: Number of times the word was answered correctly
- Incorrect Count: Number of times the word was answered incorrectly
- Priority: Calculated based on performance (higher priority = more frequent appearance)
This data is stored in browser local storage and persists across sessions, enabling the adaptive learning feature.
Project Structure
MemoryGame/
├── Models/ # Data models for game state
│ ├── GameWord.cs
│ ├── GameSession.cs
│ ├── GameStatistics.cs
│ ├── Round.cs
│ └── RoundType.cs
├── Services/ # Business logic and storage
│ ├── GameService.cs
│ └── LocalStorageService.cs
├── Pages/ # Blazor pages
│ └── Home.razor
├── Layout/ # Layout components
│ └── MainLayout.razor
└── wwwroot/
├── images/ # SVG image files
└── css/ # Stylesheets
Adding New Words/Images
To add new words and images:
- Add an SVG image to
wwwroot/images/(name it[word].svg) - Update the
_defaultWordslist inServices/GameService.cs:new() { Word = "newword", ImagePath = "images/newword.svg", CorrectCount = 0, IncorrectCount = 0 }
Browser Compatibility
The application works in all modern browsers that support WebAssembly:
- Chrome/Edge (recommended)
- Firefox
- Safari
- Opera
License
This project is open source and available under the MIT License.
Acknowledgments
Built with Blazor WebAssembly for optimal performance and offline capability.