The objective of this game is to clear a rectangular board containing hidden "mines" or bombs without detonating any of them, with help from clues about the number of neighboring mines in each cell.
Try out the app, download the apk from the link below:
|Dark mode||Light mode|
- Zoomable and Pannable minefield
- Safe first click - The first cell is never a mine as the minefield is generated around the first click
- Multiple difficulty levels to choose from
- Quick toggle for click / flag mode
- Haptic & Aural feedback
- Day / Night theme
- Animating gradient cell background
- Randomly generated levels
- Tap a cell to reveal it
- Long press an unrevealed cell to flag/unflag it
- Tap an already revealed cell to expose potentially solved cells
Package Structure :
com.jayasuryat.minesweeperjc ├── 📂 app/ # App module │ ├── presentation/ # Navigation & Screens │ ├── theme/ # Theming │ └── MinesweeperApp.kt │ ├── 📂 minesweeper-engine/ # Module for driving all the logics of the game │ ├── controller/ # Game actions, events, game controller and action handlers │ │ └── model/ # Models for actions and events │ ├── gridgenerator/ # Generators for the minefield │ ├── model/ # Models for cells and grid │ ├── state/ # Stateful grid and utils │ └── util/ │ ├── 📂 minesweeper-engine-debug/ # Module for debug utils related to minesweeper-engine │ ├── 📂 minesweeper-ui/ # Module for all of the UI components of the mine grid │ └── composable/ │ ├── action/ # Action listeners for Minefield interaction actions │ ├── cell/ # All composables related to MineCells │ ├── component/ # Helper composables │ ├── grid/ # All composables related to MineGrid │ └── theme/ # Theming for Minefield UI components │ ├── 📂 ui-game/ # Module for the actual MineField screen │ ├── composable/ # All UI components │ │ ├── feedback/ # Composables for handling feedback │ │ └── topbar/ # Composables for game TopBar │ ├── feedback/ # Helper classes for performing feedback operations │ ├── logic/ # Game logic coordinators │ └── GameScreen.kt # Actual Game-Screen │ ├── 📂 ui-difficulty-selection/ # Module for difficulty selection screen │ └── 📂 util/ # Module for common utilities
Contributions are welcome! See Contributing Guidelines.
All the SFX used in this project are sourced from freesound.org and are licensed under the Creative Commons 0 License.
Copyright 2022 Jaya Surya Thotapalli Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.