Mini Games Collection - A Flutter-based multi-game app inspired by Nintendo Switch's "Clubhouse Games: 51 Worldwide Classics"
Games โข Installation โข Tech Stack โข Contributing
| Game | Status | AI Modes | Save System |
|---|---|---|---|
| Hit & Blow | โ Complete | - | Leaderboard |
| Yacht Dice | โ Complete | Easy/Medium/Hard | 5 slots |
| Guess Arrangement | โ Complete | Easy/Medium/Hard | Records |
| 2048 | โ Complete | - | 5 slots + auto-save |
| Mancala | โ Complete | Easy/Medium/Hard | 5 slots |
| Hearts | โ Complete | Easy/Medium/Hard | 5 slots |
| Bluff Bar | โ Complete | Easy/Medium/Hard | 5 slots |
| Reaction Test | โ Complete | - | Leaderboard |
| Aim Test | โ Complete | - | Leaderboard |
| Chess | โ Complete | Easy/Hard | Records |
| Schulte Grid | โ Complete | - | Leaderboard (per size) |
| Fishing | โ Complete | - | - |
Hit & Blow is inspired by Nintendo Switch's Clubhouse Games: 51 Worldwide Classics' Hit & Blow.
Description:
A number guessing game where you deduce hidden n digits and their positions (default n=4). Select numbers from 1 to n and place them, then press "Check" for feedback:
- Hit (colored โ): Correct number AND position
- Blow (grey โ): Correct number, wrong position
Keep guessing until all positions are correct!
Features:
- Two difficulty levels: Easy (4 digits, 1-6), Hard (6 digits, 1-8)
- 10 attempts maximum
- Guess history tracking
- Timer and playtime statistics
Simple Dice Game inspired by Nintendo Switch's Clubhouse Games: 51 Worldwide Classics' Yacht Dices.
Description: Roll dice to create scoring combinations! After each roll, tap dice to "hold" good ones and reroll the rest. Double-tap a score category to confirm. Each category can only be used once per game. Highest score wins!
Game Modes:
- 2 Players: Local multiplayer
- vs AI: Easy (random), Medium (rule-based), Hard (optimal strategy)
Features:
- Animated dice rolling
- Score preview with valid categories highlighted
- Hold and reroll mechanics (up to 3 rolls per turn)
- Save/resume game functionality
- All 13 Yahtzee-style categories
A card deduction game inspired by board game classics.
Description: Two players draw 8 cards each and arrange them face-down from low to high (A=1, K=13). Take turns guessing opponent's cards by position and rank. Correct guesses reveal the card and earn combo points!
Gameplay:
- Guess: "Position 3 is a 7" (rank only, no suit)
- Correct: Card revealed, continue guessing, build combo
- Wrong: Turn passes, combo resets
- Win: First to reveal all opponent's cards
Game Modes:
- 2 Players: Local multiplayer with hidden cards
- vs AI: Easy (random), Medium (position rules), Hard (probability analysis)
Features:
- Animated card flip effects
- Combo tracking system
- Position-based deduction (cards sorted ascending)
- AI turn summary dialog
- Game records persistence
Classic tile-sliding puzzle game.
Description: Slide tiles in four directions to merge matching numbers. When two tiles with the same value collide, they merge into one with double the value. Try to reach the 2048 tile!
Gameplay:
- Swipe up/down/left/right to move all tiles
- Matching tiles merge on collision
- New tile spawns after each move (90% = 2, 10% = 4)
- Game ends when no moves possible
Scoring:
- Base: Merged tile value (e.g., 4+4 โ 8 points)
- Multi-merge bonus: ร1.5
- Consecutive merge bonus: ร2.0
Features:
- Animated tile sliding and spawning
- Auto-save every 3 minutes
- 5 save slots (1 auto + 4 manual)
- Best score tracking
- Game timer
- Light/Dark theme support
Ancient seed-sowing strategy game.
Description: Capture more seeds than your opponent! Each player has 6 pits and a store. Pick seeds from your pit and sow them counter-clockwise.
Gameplay:
- Pick all seeds from one of your pits
- Sow one per pit counter-clockwise (skip opponent's store)
- Land in your store: Extra turn!
- Land in your empty pit with seeds opposite: Capture them all!
- Game ends when one side empty - remaining seeds go to owner's store
- Most seeds wins
Game Modes:
- 2 Players: Local multiplayer
- vs AI: Easy (random), Medium (heuristics), Hard (minimax + alpha-beta)
Features:
- Animated seed sowing
- Turn indicator
- Extra turn logic
- Capture animations
- 5 save slots
- Game timer
Classic trick-taking card game - avoid hearts and the Queen of Spades!
Description: Four-player Hearts with passing phase and shoot-the-moon mechanics. Avoid collecting points (hearts = 1 each, Qโ = 13). First to 100 points loses!
Gameplay:
- Pass Phase: Select 3 cards to pass (Left โ Right โ Across โ No Pass, rotating)
- Trick-Taking: Follow suit if possible, highest card wins trick
- Scoring: Hearts = 1 point each, Queen of Spades = 13 points
- Shoot the Moon: Collect all 26 points = opponents get 26 each instead!
- First player to 100 points triggers game end - lowest score wins
Game Modes:
- Player vs 3 AI: Human plays against AI opponents
- AI Difficulties: Easy (avoid points), Medium (strategic), Hard (card tracking + shoot moon)
Features:
- 4-pass direction rotation cycle
- Card tracking system (AI remembers played cards)
- Shoot-the-moon detection and scoring
- Pass timer option (15s, 30s, 60s, none)
- Moon announcement setting (hidden/shown)
- 5 save slots with full state persistence
- Scoreboard and trick history
- Rule validation and scoring logic
A bluffing card game with Russian roulette elimination - call "Liar!" to challenge!
Description: Four-player bluffing game where you play cards face-down claiming they match the target rank (J/Q/K/A). Others can challenge your claim. Loser faces Russian roulette (1 bullet + 5 blanks)! Be the last survivor to win!
Gameplay:
- Target Card: Each round has a target rank (J/Q/K/A), shown at center
- Play Cards: Select 1-5 cards face-down, claim they match the target
- Challenge: Call "Liar!" to flip previous player's cards
- Fake cards found โ challenger wins, bluffer faces roulette
- All cards valid โ bluffer wins, challenger faces roulette
- Roulette: 1 bullet + 5 blanks shuffled. Draw one card - bullet = eliminated!
- Jokers: Wild cards that count as any target rank
- Win Condition: Be the last surviving player
Game Modes:
- Player vs 3 AI: Human (South) plays against AI opponents (East, West, North)
- AI Difficulties: Easy (random), Medium (basic strategy), Hard (probability analysis + bluff detection)
Features:
- 24-card deck: 5รJ/Q/K/A + 4 Jokers
- Highlighted target cards and Jokers in hand
- Clockwise turn order: South โ East โ North โ West
- Cumulative roulette shot tracking (X/6)
- Challenge reveal overlay with card flip animation
- Roulette draw animation with result display
- 5 save slots with full game state
Classic international chess with AI opponent, FEN import and PGN export.
Description: Full-featured chess implementation with complete rules engine, two AI difficulty levels, and standard notation support. Play as white or black against the AI, import custom positions via FEN, and export your games in PGN format.
Gameplay:
- Tap a piece to see legal moves highlighted on the board
- Tap a highlighted square to move (including castling, en passant, promotion)
- AI responds automatically after your move
- Game detects check, checkmate, stalemate, and draw conditions
Game Modes:
- vs AI: Easy (greedy + random), Hard (alpha-beta pruning + iterative deepening)
Features:
- Complete rules engine (castling, en passant, pawn promotion, 50-move rule, threefold repetition, insufficient material)
- FEN position import with validation
- PGN export (standard notation with headers)
- Move history display (algebraic notation)
- Captured pieces tracking with material advantage
- Two piece styles: Outline and Filled
- Portrait and landscape layouts
- Undo move support
- Check/checkmate/stalemate/draw detection
Focus training tool using the classic Schulte Grid method.
Description: Tap numbers from 1 to N in ascending order as fast as you can on a randomly shuffled grid. The timer starts when you tap 1 and stops when you tap the last number. Train your concentration and peripheral vision!
Grid Sizes:
- 4ร4: 16 numbers (1-16)
- 5ร5: 25 numbers (1-25)
- 6ร6: 36 numbers (1-36)
Features:
- Millisecond-precision timer (MM:SS.ms format)
- Wrong tap visual feedback (red flash) without resetting timer
- Independent leaderboard per grid size (top 10 records)
- New personal best detection
- Timer pauses on app backgrounding, resumes on return
- Portrait and landscape layouts
- Responsive grid that adapts to screen size
Relaxing fishing simulation - cast your line and reel them in!
Description: Cast your rod and wait for a fish to bite. When you see the bite indicator, tap quickly! Then play a mini-game to reel in the fish by keeping the power block aligned with the fish position.
Gameplay:
- Cast: Throw your line into the water and wait
- Bite: Fish bites randomly - a countdown timer appears
- Reel Mini-Game: Move the power block up/down to track the fish
- Progress: Fill the progress bar by staying aligned to catch the fish
- Timer: Complete the mini-game before time runs out
Features:
- Animated bite indicator with countdown timer
- Power block alignment mini-game with progress tracking
- Portrait and landscape layouts
- Fish caught/escaped statistics
| Game | Screenshot |
|---|---|
| Hit & Blow | arts/hnb.webp, arts/hnb_leaderboard.webp |
| Yacht Dice | arts/dices.webp |
- Guess Arrangement
- 2048
- Mancala
- Hearts
- Fishing
- Flutter SDK: 3.27+ (Install Flutter)
- Dart SDK: 3.11+ (included with Flutter)
- Platform-specific:
- Android: Android SDK, Java 17
- iOS/macOS: Xcode 15+
- Windows/Linux: Visual Studio Build Tools / Clang
-
Clone the repository
git clone https://github.com/z7workbench/minigames.git cd minigames -
Install dependencies
flutter pub get
-
Generate code (Required for Riverpod & Drift)
flutter pub run build_runner build --delete-conflicting-outputs
-
Run the app
flutter run
# Android
flutter build apk
flutter build appbundle # For Play Store
# iOS
flutter build ios
flutter build ipa # For distribution
# Web
flutter build web # Output: build/web/
# Windows
flutter build windows
# Linux
flutter build linux
# macOS
flutter build macos# Watch mode for code generation (keeps running)
flutter pub run build_runner watch --delete-conflicting-outputs
# Run on specific device
flutter run -d android
flutter run -d ios
flutter run -d windows
flutter run -d macos
flutter run -d linux
flutter run -d chrome # Web
# Run tests
flutter analyze
flutter test| Category | Technology | Version | Purpose |
|---|---|---|---|
| Framework | Flutter | 3.27+ | Cross-platform UI |
| Language | Dart | 3.11+ | Application code |
| Game Engine | Flame | 1.19+ | Game rendering & logic |
| Audio | flame_audio | 2.10+ | Sound effects |
| State Management | Riverpod | 2.5+ | Reactive state |
| Database | Drift | 2.28+ | SQLite persistence |
| Localization | flutter_localizations | SDK | i18n support |
| Storage | shared_preferences | 2.2+ | Settings persistence |
| Platform | Status | CI/CD |
|---|---|---|
| Android | โ Full Support | GitHub Actions |
| iOS | โ Full Support | GitHub Actions |
| Web | โ Full Support | GitHub Actions |
| Windows | โ Full Support | GitHub Actions |
| Linux | โ Full Support | GitHub Actions |
| macOS | โ Full Support | GitHub Actions |
All games run offline - no network dependencies required.
lib/
โโโ data/ # Data layer (Drift database)
โ โโโ database.dart # Main database class
โ โโโ tables/ # Table definitions
โ โ โโโ game_records.dart
โ โ โโโ game_settings.dart
โ โ โโโ user_progress.dart
โ โ โโโ yacht_dice_saves.dart
โ โ โโโ twenty48_saves.dart
โ โ โโโ hearts_saves.dart
โ โ โโโ mancala_saves.dart
โ โโโ daos/ # Data access objects
โ โโโ providers/ # Database providers
โ
โโโ games/ # Game implementations
โ โโโ hit_and_blow/ # Number guessing game
โ โโโ yacht_dice/ # Yahtzee-style dice game
โ โโโ guess_arrangement/ # Card deduction game
โ โโโ twenty48/ # 2048 puzzle
โ โโโ mancala/ # Seed-sowing game
โ โโโ hearts/ # Trick-taking card game
โ โโโ bluff_bar/ # Bluffing card game
โ โโโ dice_battle/ # Dice combat RPG
โ โโโ reaction_test/ # Reaction speed test
โ โโโ aim_test/ # Aiming accuracy test
โ โโโ chess_intl/ # International chess
โ โโโ schulte_grid/ # Schulte Grid focus training
โ โโโ fishing/ # Fishing simulation
โ
โโโ ui/ # Shared UI layer
โ โโโ screens/ # App screens (home, settings)
โ โโโ widgets/ # Reusable widgets
โ โ โโโ game_card.dart
โ โ โโโ wooden_button.dart
โ โ โโโ wooden_app_bar.dart
โ โโโ theme/ # Theme system
โ โโโ app_theme.dart
โ โโโ wooden_colors.dart
โ โโโ starlight_colors.dart
โ โโโ forest_colors.dart
โ โโโ theme_colors.dart # Theme-aware extensions
โ โโโ theme_provider.dart
โ
โโโ l10n/ # Internationalization
โ โโโ app_en.arb # English
โ โโโ app_zh.arb # Chinese
โ โโโ generated/ # Generated localizations
โ
โโโ providers/ # Global state providers
โโโ models/ # Shared data models
โโโ utils/ # Utilities
โโโ main.dart # App entry point
Three-layer architecture:
- Data Layer (
data/): Drift database, tables, DAOs for persistence - Game Layer (
games/): Flame engine, game logic, AI systems - UI Layer (
ui/): Flutter widgets, screens, theme system
This app supports 3 color schemes ร 2 brightness modes = 6 theme combinations:
| Color Scheme | Light Mode | Dark Mode |
|---|---|---|
| Wooden | Warm wood tones (khaki, brown) | Dark walnut (deep brown, ebony) |
| Starlight | Soft purple, sky blue | Deep purple, navy blue |
| Forest | Soft green, mint | Dark forest (deep green) |
When developing components, always use theme-aware colors from context.theme* extension:
import 'package:flutter/material.dart';
import '../../ui/theme/theme_colors.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
// โ
Correct: Auto-adapts to Wooden/Starlight/Forest + Dark/Light
color: context.themeBackground,
child: Text(
'Hello',
style: TextStyle(color: context.themeTextPrimary),
),
);
}
}| Extension | Usage |
|---|---|
context.themePrimary |
Primary color (AppBar, main buttons) |
context.themeBackground |
Background color (Scaffold) |
context.themeSurface |
Surface color (cards, containers) |
context.themeCard |
Card background |
context.themeAccent |
Accent color (icons, highlights) |
context.themeTextPrimary |
Primary text |
context.themeTextSecondary |
Secondary text |
context.themeBorder |
Border color |
context.themeOnPrimary |
Text/icons on primary color (AppBar icons) |
context.themeSuccess |
Success/positive color |
context.themeError |
Error/negative color |
context.themeWarning |
Warning color |
// โ WRONG: This breaks Starlight/Forest theme
Icon(Icons.settings, color: WoodenColors.accentAmber),
// โ
CORRECT: Works for all themes
Icon(Icons.settings, color: context.themeOnPrimary),These components are already theme-aware:
WoodenButton- Button (primary, secondary, accent, ghost variants)WoodenAppBar- Application barGameCard- Game selection cardThemeToggle- Theme switch control
Contributions are welcome! Please follow these guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following existing patterns
- Run tests and linting:
flutter analyze && flutter test - Commit using Conventional Commits
- Push:
git push origin feature/amazing-feature - Open a Pull Request
- Files:
snake_case(e.g.,game_records_dao.dart) - Classes:
PascalCase(e.g.,GameRecordsDao) - Methods/Variables:
camelCase(e.g.,getHighScore) - Private members:
_prefix(e.g.,_database) - Run
flutter format .before committing
<type>(<scope>): <description>
Types: feat, fix, docs, refactor, test, chore
Scopes: game, ui, data, i18n, theme, deps
Examples:
- feat(game): add Hearts AI hard difficulty
- fix(data): correct high score calculation
- docs(readme): add installation section
- refactor(ui): extract theme colors to extension
- Create game folder:
lib/games/<game_name>/ - Implement:
- Provider (state management with Riverpod)
- Screen (main game UI)
- Models (game state, data structures)
- Components (reusable widgets)
- AI (if applicable: easy, medium, hard)
- Add to
GameTypeenum inlib/models/game_type.dart - Update
lib/ui/screens/home_screen.dartnavigation - Add localization strings to
lib/l10n/app_en.arbandapp_zh.arb - Create database table if save system needed
- Update this README
- Flutter - Cross-platform framework
- Dart - Programming language
- Flame - Game engine
- Riverpod - State management
- Drift - Database
- flutter_localizations - i18n
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2021 ZeroGo Yoosee
- Inspired by Nintendo Switch's "Clubhouse Games: 51 Worldwide Classics"
- Built with the amazing Flame game engine
- Thanks to the Flutter and Dart communities
- AI algorithms adapted from classic game theory implementations
Made with โค๏ธ using Flutter & Flame
