# Minesweeper A classic Minesweeper game for the terminal, built with Dart and [nocterm](https://pub.dev/packages/nocterm). ``` ███╗ ███╗██╗███╗ ██╗███████╗███████╗ ████╗ ████║██║████╗ ██║██╔════╝██╔════╝ ██╔████╔██║██║██╔██╗ ██║█████╗ ███████╗ ██║╚██╔╝██║██║██║╚██╗██║██╔══╝ ╚════██║ ██║ ╚═╝ ██║██║██║ ╚████║███████╗███████║ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ ``` Minesweeper Minesweeper Minesweeper Minesweeper ## Features - Terminal-based UI with keyboard controls - Three difficulty levels: | Difficulty | Grid Size | Mine Density | | ---------- | --------- | ------------ | | Easy | 9×9 | 12% | | Medium | 16×16 | 24% | | Hard | 24×24 | 36% | - Animated game over sequence - Flag system to mark suspected mines ## Requirements - Dart SDK `>=3.9.0 <4.0.0` ## Installation ```bash dart pub get ``` ## Usage ```bash dart run ``` ## Controls | Key | Action | | ---------- | ----------------- | | Arrow Keys | Move cursor | | Space | Reveal cell | | F | Flag/unflag cell | | Enter | Confirm selection | ## How to Play 1. Select a difficulty level on the intro screen 2. Navigate the grid using arrow keys 3. Press **Space** to reveal a cell 4. Press **F** to flag cells you suspect contain mines 5. Reveal all non-mine cells to win 6. Hit a mine and it's game over! ## Project Structure ``` lib/ ├── main.dart # Entry point └── src/ ├── app.dart # Root application component ├── models/ # Data models (Difficulty, Place, etc.) ├── provider/ # State management └── screens/ ├── intro/ # Difficulty selection screen ├── mine_sweeper/ # Main game screen └── game_over/ # Game over screen ``` ## Dependencies - [nocterm](https://pub.dev/packages/nocterm) – Terminal UI framework - [scoped_deps](https://pub.dev/packages/scoped_deps) – Dependency injection - [file](https://pub.dev/packages/file) – File system abstraction