This is a Minesweeper-like puzzle game, built using Jetpack Compose, for Android.
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.
MJC-Demo-1.0.0.mov
Zoomable
andpannable
minefield- Safe first click - The first cell is never a
mine
as theminefield
is generated around the first click - Automatically
save
andresume
game progress - Multiple
difficulty levels
to choose from Settings
screen to update and persist userpreferences
Quick toggle
for click / flag modeHaptic
&Aural
feedback- Day / Night theme
- Randomly generated levels
- Tap a
cell
to reveal it - Long press an
unrevealed cell
toflag
/un-flag
it - Tap an already
revealed cell
to expose potentiallysolved cells
- Change default tap / long-press behaviour from the
quick toggle
com.jayasuryat.minesweeperjc
โโโ ๐ app/ # App module
โ โโโ data/ # Data source mappings
โ โโโ di/ # DI wiring
โ โโโ presentation/ # Navigation & Screens
โ โโโ theme/ # Theming
โ โโโ MinesweeperApp.kt
โ
โโโ ๐ buildScripts/ # Build scripts and pre-commit hooks
โ
โโโ ๐ buildSrc/ # Dependency versions LUT
โ
โโโ ๐ 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
โ
โโโ ๐ minesweeper-engine-debug/ # Module for debug utils related to minesweeper-engine
โ
โโโ ๐ minesweeper-ui/ # Module for all of the UI components of the mine grid
โ โโโ action/ # Action listeners for Minefield interaction actions
โ โโโ cell/ # All composables related to MineCells
โ โโโ component/ # Helper composables
โ โโโ config/ # UI configuration for mine grid
โ โโโ grid/ # All composables related to MineGrid
โ โโโ model/ # UI models for all the MineCells and layout information
โ โโโ theme/ # Theming for Minefield UI components
โ
โโโ ๐ data/ # A Kotlin Multiplatform Mobile module for all of the data operations
โ โโโ androidMain/ # Android implementations
โ โ โโโ di/ # Wiring of Android specific implementations
โ โ โโโ sqldelight/ # Android Sqlite driver setup
โ โโโ iosMain/ # iOS implementations
โ โ โโโ di/ # Wiring of iOS specific implementations
โ โ โโโ sqldelight/ # Native Sqlite driver setup
โ โโโ commonMain/ # Common infrastructure
โ โ โโโ sqldelight/ # Sqlite query definitions
โ โ โโโ kotlin/
โ โ โโโ di/ # DI wiring for all of the data layer
โ โ โโโ model/ # Data models for the data layer
โ โ โโโ source/ # Data sources
โ โ โโโ sqldelight/ # DB setup
โ
โโโ ๐ ui-game/ # Module for the actual MineField screen
โ โโโ composable/ # All UI components
โ โ โโโ feedback/ # Composables for handling feedback
โ โ โโโ toggle/ # Composables for in game quick-toggle
โ โ โโโ topbar/ # Composables for game TopBar
โ โโโ data/ # Data layer skeletons for game state persistence
โ โโโ 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.