summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/com/a404m/mine_game/model/GameState.kt14
1 files changed, 8 insertions, 6 deletions
diff --git a/app/src/main/java/com/a404m/mine_game/model/GameState.kt b/app/src/main/java/com/a404m/mine_game/model/GameState.kt
index 656ca72..5b4c36a 100644
--- a/app/src/main/java/com/a404m/mine_game/model/GameState.kt
+++ b/app/src/main/java/com/a404m/mine_game/model/GameState.kt
@@ -11,9 +11,11 @@ import org.json.JSONArray
import org.json.JSONObject
import kotlin.random.Random
+typealias GameMatrix = ArrayList<ArrayList<GameState.Cell>>
+
class GameState(
val startDate: PersianDate,
- val matrix: ArrayList<ArrayList<Cell>>,
+ val matrix: GameMatrix,
millis: Long = 0,
) : JsonSerializable {
var millis by mutableLongStateOf(millis)
@@ -37,8 +39,8 @@ class GameState(
seed: Int?,
) : this(
startDate = PersianDate(),
- matrix = arrayListOf<ArrayList<Cell>>().apply {
- ensureCapacity(width)
+ matrix = GameMatrix().apply {
+ ensureCapacity(height)
var cellRemaining = width * height
if (cellRemaining < mines) {
throw IllegalStateException("Mines are more than cells $mines > $cellRemaining")
@@ -47,11 +49,11 @@ class GameState(
val random = if (seed == null) Random else Random(seed)
- for (i in 0 until width) {
+ for (i in 0 until height) {
add(
arrayListOf<Cell>().apply {
- ensureCapacity(height)
- for (j in 0 until height) {
+ ensureCapacity(width)
+ for (j in 0 until width) {
val isBomb = random.nextInt(cellRemaining) < bombsRemaining
add(
Cell(