From c37fe8a963d6b227754b05c3c0ac6533f5a2f596 Mon Sep 17 00:00:00 2001 From: soywiz Date: Sun, 16 Feb 2020 02:42:43 +0100 Subject: [PATCH] Ported minesweeper sample (from my old Lunea engine) using Process (similar to DIV Game Studio) --- gradle/wrapper/gradle-wrapper.properties | 5 +- sample-minesweeper/.gitignore | 1 + sample-minesweeper/build.gradle | 9 + .../soywiz/korge/samples/minesweeper/Board.kt | 366 ++++++++++++++++++ .../korge/samples/minesweeper/Process.kt | 227 +++++++++++ .../korge/samples/minesweeper/RandomLight.kt | 67 ++++ .../soywiz/korge/samples/minesweeper/main.kt | 48 +++ .../src/commonMain/resources/bg.jpg | Bin 0 -> 3724 bytes .../src/commonMain/resources/bomba.ico | Bin 0 -> 19790 bytes .../src/commonMain/resources/boom.wav | Bin 0 -> 84782 bytes .../src/commonMain/resources/buscaminas.png | Bin 0 -> 6690 bytes .../src/commonMain/resources/click.wav | Bin 0 -> 512 bytes .../src/commonMain/resources/font.ttf | Bin 0 -> 39236 bytes .../src/commonMain/resources/light.png | Bin 0 -> 10405 bytes 14 files changed, 721 insertions(+), 2 deletions(-) create mode 100644 sample-minesweeper/.gitignore create mode 100644 sample-minesweeper/build.gradle create mode 100644 sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Board.kt create mode 100644 sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Process.kt create mode 100644 sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/RandomLight.kt create mode 100644 sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/main.kt create mode 100644 sample-minesweeper/src/commonMain/resources/bg.jpg create mode 100644 sample-minesweeper/src/commonMain/resources/bomba.ico create mode 100644 sample-minesweeper/src/commonMain/resources/boom.wav create mode 100644 sample-minesweeper/src/commonMain/resources/buscaminas.png create mode 100644 sample-minesweeper/src/commonMain/resources/click.wav create mode 100644 sample-minesweeper/src/commonMain/resources/font.ttf create mode 100644 sample-minesweeper/src/commonMain/resources/light.png diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f04d6a2..9af4f73 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Sun Feb 16 00:33:26 CET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-bin.zip -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/sample-minesweeper/.gitignore b/sample-minesweeper/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/sample-minesweeper/.gitignore @@ -0,0 +1 @@ +/build diff --git a/sample-minesweeper/build.gradle b/sample-minesweeper/build.gradle new file mode 100644 index 0000000..75f5f2b --- /dev/null +++ b/sample-minesweeper/build.gradle @@ -0,0 +1,9 @@ +// Ported from here: https://github.com/soywiz/lunea/tree/master/samples/busca + +apply plugin: "korge" + +korge { + entryPoint = "com.soywiz.korge.samples.minesweeper.main" + jvmMainClassName = "com.soywiz.korge.samples.minesweeper.MainKt" + id = "com.soywiz.samples.minesweeper" +} diff --git a/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Board.kt b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Board.kt new file mode 100644 index 0000000..f2de006 --- /dev/null +++ b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Board.kt @@ -0,0 +1,366 @@ +package com.soywiz.korge.samples.minesweeper + +import com.soywiz.klock.* +import com.soywiz.korau.sound.* +import com.soywiz.korge.html.* +import com.soywiz.korge.render.* +import com.soywiz.korge.view.* +import com.soywiz.korim.bitmap.* +import com.soywiz.korio.lang.* +import com.soywiz.korma.random.* +import kotlin.random.* + +// Proceso que se encarga del tablero +class Board( + parent: Container, + val imageset: BmpSlice, + val imagenes: List, + val click: NativeSound, + val boom: NativeSound, + // Se establecen el ancho, el alto y la cantidad de minas + // Características del tablero: ancho, alto, cantidad de minas + var bwidth: Int, + var bheight: Int, + var minas: Int +) : Process(parent) { + // Matriz con el tablero + var board: Array = arrayOf() + // Matriz de máscara (indica que partes del tablero están destapadas) + var mask: Array = arrayOf() + // Matriz de marcado (indica que partes del tablero están marcadas como "posible mina") (click derecho) + var mark: Array = arrayOf() + + // Variables utilizadas para el contador + var stime: DateTime = DateTime.EPOCH + var tstop: DateTime = DateTime.EPOCH + var timeText: Text + + var lastx: Int = 0 + var lasty: Int = 0 + + // Constructor del proceso en el cual se le pasan el ancho, el alto y la cantidad de minas + init { + // Se crea el texto del contador + //timeText = new Text("", 50, 50, Text.Align.center, Text.Align.middle, Color.white, new Font("Arial", 40)); + //timeText = Text("", 50, 50, Text.Align.center, Text.Align.middle, Color.white, Font.fromResource("font.ttf", 40)); + val FONT_HEIGHT = 32.0 + timeText = text("", textSize = FONT_HEIGHT).xy((bwidth * imageset.height) / 2, -FONT_HEIGHT).apply { + //format = Html.Format(align = Html.Alignment.CENTER, size = FONT_HEIGHT.toInt()) + format = Html.Format(align = Html.Alignment.CENTER) + } + // Se pinta el contador como hijo del tablero + //timeText.group.z = this; + // Y se actualiza su texto + updateTimeText() + + // Se centra el tablero en la pantalla + x = Screen.width / 2 - (bwidth * imageset.height) / 2 + y = Screen.height / 2 - (bheight * imageset.height - 10 - FONT_HEIGHT) / 2 + + // Se establecen algunas características del texto, posición, borde y sombra + //timeText.shadow = 5; + //timeText.border = 1; + + // Se reinicia el tablero + clear() + } + + // Destructor, aquí se quita el texto cuando se borra el tablero + override fun onDestroy() { + timeText.removeFromParent() + } + + // Devuelve el tiempo actual (en milisegundos) + val time: DateTime get() = DateTime.now() + + // Resetea el contador + fun resetTimer() { + stime = time + tstop = DateTime.EPOCH + } + + // Para el contador + fun stopTimer() { + tstop = time + } + + // Devuelve el tiempo ha pasado en segundos desde que se inició el contador + val elapsed: Int + get() = run { + var ctime = time + if (tstop != DateTime.EPOCH) ctime = tstop + return (ctime - stime).seconds.toInt() + } + + // Actualiza el texto del contador con el formato %02d:%02d MM:SS + fun updateTimeText() { + timeText.text = "%02d:%02d".format(elapsed / 60, elapsed % 60) + } + + // Función que se encarga de borrar el tablero y crear uno nuevo + fun clear() { + // Ahora que vamos a borrar un nuevo tablero (y que vamos a crear una nueva partida) + // reiniciamos el contador + resetTimer() + + // Creamos las matrices con el tablero, la máscara de visión y la máscara de marcado (de posibles minas) + board = Array(bheight) { IntArray(bwidth) } + mask = Array(bheight) { BooleanArray(bwidth) } + mark = Array(bheight) { BooleanArray(bwidth) } + + // Comprobamos que no se intenten colocar mas minas que posiciones hay, evitando así un bucle infinito + // en realidad solo se colocan como mucho una cantidad de minas igual a las posiciones del tablero - 1 + // para que pueda haber partida (si no se ganaría directamente) + if (minas > bwidth * bheight - 1) minas = bwidth * bheight - 1 + + // Ahora procederemos a colocar las minas en el tablero + for (n in 0 until minas) { + // Declaramos px, py que utilizaremos para almacenar las posiciones temporales de la mina + var px: Int = 0 + var py: Int = 0 + do { + // Obtenemos una posible posición de la mina + px = Random[0, bwidth - 1] + py = Random[0, bheight - 1] + // Comprobamos si en esa posición hay una mina y estaremos buscando posiciones hasta + // que en esa posición no haya mina + } while (board[py][px] == 10) + + // Ahora que sabemos que en esa posición no hay mina, colocamos una + board[py][px] = 10 + } + + // Ahora que hemos colocado las minas, vamos a colocar los números alrededor de ellas + // Esta es una parte interesante del buscaminas, aquí se colcan los numeros alrededor de las minas + + // Nos recorremos el tablero entero + for (y in 0 until bheight) { + for (x in 0 until bwidth) { + // Comprobamos que en esa posición no haya mina, si hay mina, "pasamos", hacemos un continue y seguimos a la siguiente posición + // sin ejecutar lo que viene después + if (board[y][x] == 10) continue + + // Ahora vamos a contar las minas que hay alrededor de esta posición (ya que en esta posición no hay mina y es posible que tengamos + // que poner un número si tiene alguna mina contigua) + var count = 0 + // Recorremos con x1 € [-1,1], y1 € [-1, 1] + for (y1 in -1..+1) { + for (x1 in -1..+1) { + // Ahora x + x1 y y + y1 tomaran posiciones de la matriz contiguas a la posición actual + // empezando por x - 1, y - 1 para acabar en x + 1, y + 1 + // Comprobamos que la posición esté dentro de la matriz, ya que por ejemplo en la posición 0 + // la posición 0 - 1, 0 - 1, sería la -1, -1, que no está dentro de la matriz y si no está dentro + // de los límites de la matriz, pasamos + if (!in_bounds(x + x1, y + y1)) continue + // Si en esta posición contigua hay una mina entonces incrementamos el contador + if (board[y + y1][x + x1] == 10) count++ + } + } + + // Introducimos en el tablero la nueva imagen (puesto que la imagen con 0 posiciones es la 1 y las siguientes + // son 1, 2, 3, 4, 5, 6, 7, 8) ponemos la imagen correspondiente a count + 1 + board[y][x] = count + 1 + } + } + + // Ahora ya tenemos el tablero preparado + } + + // Indica si una posición está dentro de la matriz + fun in_bounds(px: Int, py: Int): Boolean { + // Si la posición es negativa o si la posición está mas a la derecha del ancho del tablero, devuelve false (no está dentro) + if (px < 0 || px >= bwidth) return false + // Si ocurre lo mismo con la posición y, también devolvemos false + if (py < 0 || py >= bheight) return false + // Si no hemos devuelto ya false, quiere decir que la posición si que está dentro del tablero, así que devolvemos true + return true + } + + var fillpos = 0 + + // Rellena una posición (recursivamente; la forma mas clara y sencilla) + suspend fun fill(px: Int, py: Int) { + if (!in_bounds(px, py)) return + if (mask[py][px] || mark[py][px]) return + mask[py][px] = true + + if (fillpos % 7 == 0) audio.play(click) + frame() + fillpos++ + + if (board[py][px] != 1) return + fill(px - 1, py) + fill(px + 1, py) + fill(px, py - 1) + fill(px, py + 1) + fill(px - 1, py - 1) + fill(px + 1, py + 1) + fill(px + 1, py - 1) + fill(px - 1, py + 1) + } + + suspend fun show_board_lose() { + // Subfunción de show_board_lose que se encarga de + // desenmascarar una posición despues de comprobar + // si es correcta + fun unmask(x: Int, y: Int): Boolean { + if (!in_bounds(x, y)) return false + mask[y][x] = true + return true + } + + // Propagación con forma de diamante + var dist = 0 + while (true) { + var drawing = false + + for (n in 0..dist) { + if (unmask(lastx - n + dist, lasty - n)) drawing = true + if (unmask(lastx + n - dist, lasty - n)) drawing = true + if (unmask(lastx - n + dist, lasty + n)) drawing = true + if (unmask(lastx + n - dist, lasty + n)) drawing = true + } + + if (!drawing) break + + dist++ + frame() + //if (dist >= max(width * 2, height * 2)) break; + } + } + + suspend fun show_board_win() { + for (y in 0 until bheight) { + for (x in 0 until bwidth) { + if (board[y][x] == 10) { + mask[y][x] = false + mark[y][x] = true + frame() + } else { + mask[y][x] = true + } + } + } + } + + suspend fun check(px: Int, py: Int): Boolean { + if (!in_bounds(px, py)) return false + + // Guardamos la última posición en la que hicimos click + lastx = px; lasty = py + + // Estamos ante una mina + if (board[py][px] == 10) return true + + // Estamos ante una casilla vacía + if (board[py][px] == 1) { + fps = 140.0 + fillpos = 0 + fill(px, py) + fps = 60.0 + return false + } + + if (!mask[py][px]) { + mask[py][px] = true + audio.play(click) + } + + return false + } + + // Comprueba si el tablero está en un estado en el cual podemos dar por ganada la partida + fun check_win(): Boolean { + var count = 0 + for (y in 0 until bheight) { + for (x in 0 until bwidth) { + if (mask[y][x]) count++ + } + } + + return (count == bwidth * bheight - minas) + } + + // La acción principal redirecciona a la acción de juego + override suspend fun main() = action(::play) + + // La acción principal de juego que se encarga de gestionar los clicks de ratón + suspend fun play() { + while (true) { + //println("Mouse.x: ${Mouse.x}, x=$x") + if (Mouse.x >= x && Mouse.x < x + bwidth * imageset.height) { + if (Mouse.y >= y && Mouse.y < y + bheight * imageset.height) { + val px = ((Mouse.x - x) / imageset.height).toInt() + val py = ((Mouse.y - y) / imageset.height).toInt() + + if (Mouse.released[0]) { + if (!mark[py][px]) { + if (check(px, py)) { + action(::lose) + } else if (check_win()) { + action(::win) + } + } + } else if (Mouse.released[1] || Mouse.released[2]) { + mark[py][px] = !mark[py][px] + } + } + } + + frame() + } + } + + // Acción del tablero que ocurre cuando el jugador ha perdido + suspend fun lose() { + audio.play(boom, 0) + stopTimer() + show_board_lose() + + while (true) { + if (Mouse.left || Mouse.right) { + clear() + for (n in 0 until 10) frame() + action(::play) + } + frame() + } + } + + // Acción del tablero que ocurre cuando el jugador ha ganado + suspend fun win() { + stopTimer() + show_board_win() + + while (true) { + if (Mouse.left || Mouse.right) { + clear() + for (n in 0 until 10) frame() + action(::play) + } + frame() + } + } + + val images = Array(bheight) { py -> + Array(bwidth) { px -> + image(Bitmaps.transparent).xy(px * imageset.height, py * imageset.height).scale(0.9) + } + } + + override fun renderInternal(ctx: RenderContext) { + for (py in 0 until bheight) { + for (px in 0 until bwidth) { + val image = if (!mask[py][px]) { + imagenes[if (mark[py][px]) 11 else 0] + } else { + imagenes[board[py][px]] + } + + images[py][px].texture = image + } + } + + super.renderInternal(ctx) + } +} diff --git a/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Process.kt b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Process.kt new file mode 100644 index 0000000..710784c --- /dev/null +++ b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/Process.kt @@ -0,0 +1,227 @@ +package com.soywiz.korge.samples.minesweeper + +import com.soywiz.kds.* +import com.soywiz.klock.* +import com.soywiz.kmem.* +import com.soywiz.korau.sound.* +import com.soywiz.korev.* +import com.soywiz.korev.KeysEvents +import com.soywiz.korge.component.* +import com.soywiz.korge.input.* +import com.soywiz.korge.time.* +import com.soywiz.korge.view.* +import com.soywiz.korim.bitmap.* +import com.soywiz.korim.format.* +import com.soywiz.korio.async.* +import com.soywiz.korio.file.std.* +import kotlinx.coroutines.* +import kotlin.reflect.* + +abstract class Process(parent: Container) : Container() { + init { + parent.addChild(this) + } + + override val stage: Stage get() = super.stage!! + val views: Views get() = stage.views + val type: KClass get() = this::class + var fps: Double = 60.0 + + val key get() = stage.views.key + + val Mouse get() = views.mouseV + val Screen get() = views.screenV + val audio get() = views.audioV + + var angle: Double + get() = rotationDegrees + set(value) = run { rotationDegrees = value } + + suspend fun frame() { + //delayFrame() + delay((1.0 / fps).seconds) + } + + fun action(action: KSuspendFunction0) { + throw ChangeActionException(action) + } + + abstract suspend fun main() + + private lateinit var job: Job + + fun destroy() { + removeFromParent() + } + + open fun onDestroy() { + } + + class ChangeActionException(val action: KSuspendFunction0) : Exception() + + init { + job = views.launchAsap { + var action = ::main + while (true) { + try { + action() + break + } catch (e: ChangeActionException) { + action = e.action + } + } + } + + addComponent(object : StageComponent { + override val view: View = this@Process + + override fun added(views: Views) { + //println("added: $views") + } + + override fun removed(views: Views) { + //println("removed: $views") + job.cancel() + onDestroy() + } + }) + } + + fun collision(type: KClass): Boolean { + return false + } +} + +@Suppress("UNCHECKED_CAST", "NOTHING_TO_INLINE") +class extraPropertyFixed(val name: String? = null, val default: () -> T) { + inline operator fun getValue(thisRef: Extra, property: KProperty<*>): T { + if (thisRef.extra == null) thisRef.extra = LinkedHashMap() + return (thisRef.extra!!.getOrPut(name ?: property.name) { default() } as T) + } + + inline operator fun setValue(thisRef: Extra, property: KProperty<*>, value: T): Unit = run { + if (thisRef.extra == null) thisRef.extra = LinkedHashMap() + thisRef.extra!![name ?: property.name] = value as Any? + } +} + +private val Views.componentsInStagePrev by extraPropertyFixed { linkedSetOf() } +private val Views.componentsInStageCur by extraPropertyFixed { linkedSetOf() } +private val Views.componentsInStage by extraPropertyFixed { linkedSetOf() } +private val Views.tempComponents2 by extraPropertyFixed { arrayListOf() } + +fun Views.registerStageComponent() { + onBeforeRender { + componentsInStagePrev.clear() + componentsInStagePrev += componentsInStageCur + componentsInStageCur.clear() + stage.forEachComponent(tempComponents2) { + componentsInStageCur += it + //println("DEMO: $it -- $componentsInStage") + if (it !in componentsInStage) { + componentsInStage += it + it.added(views) + } + } + for (it in componentsInStagePrev) { + if (it !in componentsInStageCur) { + it.removed(views) + } + } + } +} + +/** + * Component with [added] and [removed] methods that are executed + * once the view is going to be displayed, and when the view has been removed + */ +interface StageComponent : Component { + fun added(views: Views) + fun removed(views: Views) +} + +class Key2(val views: Views) { + operator fun get(key: Key): Boolean = views.keysPressed[key] == true +} + + +class MouseV(val views: Views) { + val left: Boolean get() = pressing[0] + val right: Boolean get() = pressing[1] || pressing[2] + val x: Int get() = (views.input.mouse.x / views.stage.scaleX).toInt() + val y: Int get() = (views.input.mouse.y / views.stage.scaleY).toInt() + val pressing = BooleanArray(8) + val pressed = BooleanArray(8) + val released = BooleanArray(8) + val _pressed = BooleanArray(8) + val _released = BooleanArray(8) +} + +class ScreenV(val views: Views) { + val width: Double get() = views.virtualWidth.toDouble() + val height: Double get() = views.virtualHeight.toDouble() +} + +class AudioV(val views: Views) { + fun play(sound: NativeSound, repeat: Int = 0) { + } +} + +val Views.keysPressed by extraPropertyFixed { LinkedHashMap() } +val Views.key by Extra.PropertyThis { Key2(this) } + +val Views.mouseV by Extra.PropertyThis { MouseV(this) } +val Views.screenV by Extra.PropertyThis { ScreenV(this) } +val Views.audioV by Extra.PropertyThis { AudioV(this) } + +fun Views.registerProcessSystem() { + registerStageComponent() + + stage.addEventListener { e -> + when (e.type) { + MouseEvent.Type.MOVE -> Unit + MouseEvent.Type.DRAG -> Unit + MouseEvent.Type.UP -> { + mouseV.pressing[e.button.id] = false + mouseV._released[e.button.id] = true + } + MouseEvent.Type.DOWN -> { + mouseV.pressing[e.button.id] = true + mouseV._pressed[e.button.id] = true + } + MouseEvent.Type.CLICK -> Unit + MouseEvent.Type.ENTER -> Unit + MouseEvent.Type.EXIT -> Unit + MouseEvent.Type.SCROLL -> Unit + } + } + // @TODO: Use onAfterRender + onBeforeRender { + arraycopy(mouseV._released, 0, mouseV.released, 0, 8) + arraycopy(mouseV._pressed, 0, mouseV.pressed, 0, 8) + + mouseV._released.fill(false) + mouseV._pressed.fill(false) + } + stage.addEventListener { e -> + keysPressed[e.key] = e.type == KeyEvent.Type.DOWN + } +} + +suspend fun readImage(path: String) = resourcesVfs[path].readBitmapSlice() +suspend fun readSound(path: String) = resourcesVfs[path].readNativeSoundOptimized() + +// @TODO: Move to KorIM +fun BitmapSlice.split(width: Int, height: Int): List { + val self = this + val nheight = self.height / height + val nwidth = self.width / width + return arrayListOf().apply { + for (y in 0 until nheight) { + for (x in 0 until nwidth) { + add(self.sliceWithSize(x * width, y * height, width, height)) + } + } + } +} + diff --git a/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/RandomLight.kt b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/RandomLight.kt new file mode 100644 index 0000000..79c597d --- /dev/null +++ b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/RandomLight.kt @@ -0,0 +1,67 @@ +package com.soywiz.korge.samples.minesweeper + +import com.soywiz.korge.view.* +import com.soywiz.korim.bitmap.* +import com.soywiz.korma.random.* +import kotlin.math.* +import kotlin.random.* + +class RandomLight( + parent: Container, + light: BmpSlice +) : Process(parent) { + var w2: Double = stage.width / 2 + var h2: Double = stage.height / 2 + val random = Random + var sx: Double = 0.0 + var sy: Double = 0.0 + var inca: Double = 0.0 + var incs: Double = 0.0 + var excx: Double = 0.0 + var excy: Double = 0.0 + + init { + image(light, 0.5, 0.5).apply { + this.blendMode = BlendMode.ADD + } + } + + override suspend fun main() { + sx = random[-w2, w2] + sy = random[-h2, h2] + inca = random[0.0001, 0.03] + incs = random[0.5, 2.0] + excx = random[0.7, 1.3] + excy = random[0.7, 1.3] + alpha = random[0.4, 0.7] + alpha = 0.1 + + while (true) { + angle += inca + x = w2 - cos(angle) * w2 * excx + sx + y = h2 - sin(angle) * h2 * excy + sy + scale = 1 + (cos(angle) / 6) * incs + + // Comprueba si una esfera de luz ha chocado con otra + // El sistema de colisión por defecto es inner circle + if (this.collision(this.type)) { + if (alpha <= 0.8) alpha += 0.01 + } else { + if (alpha >= 0.1) alpha -= 0.01 + } + + frame() + } + } + + suspend fun fadeout() { + while (alpha > 0) { + alpha -= 0.1 + frame() + } + } + + fun draw() { + //graph.draw(__x, __y, alpha, 0, size, alpha, alpha, alpha, GL_ONE, GL_ONE); + } +} diff --git a/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/main.kt b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/main.kt new file mode 100644 index 0000000..e7648c9 --- /dev/null +++ b/sample-minesweeper/src/commonMain/kotlin/com/soywiz/korge/samples/minesweeper/main.kt @@ -0,0 +1,48 @@ +package com.soywiz.korge.samples.minesweeper + +import com.soywiz.korev.* +import com.soywiz.korge.* +import com.soywiz.korge.view.* + +// Ported from here: https://github.com/soywiz/lunea/tree/master/samples/busca + +suspend fun main() = Korge(width = 800, height = 600, virtualWidth = 640, virtualHeight = 480, title = "Minesweeper") { + views.registerProcessSystem() + MainProcess(this) +} + +class MainProcess(parent: Container) : Process(parent) { + val lights = arrayListOf() + + override suspend fun main() { + val light = readImage("light.png") + image(readImage("bg.jpg")) + for (n in 0 until 20) { + lights += RandomLight(this, light) + } + + val imageset = readImage("buscaminas.png") + val imagenes = imageset.split(imageset.height, imageset.height) + val click = readSound("click.wav") + val boom = readSound("boom.wav") + + val board = Board(this, imageset, imagenes, click, boom, 22, 15, 40) + + while (true) { + if (key[Key.ESCAPE]) { + error("ESC!") + } + if (key[Key.UP]) { + lights += RandomLight(this, light) + } + if (key[Key.DOWN]) { + if (lights.isNotEmpty()) { + lights.removeAt(lights.size - 1).destroy() + } + } + board.updateTimeText() + frame() + } + } +} + diff --git a/sample-minesweeper/src/commonMain/resources/bg.jpg b/sample-minesweeper/src/commonMain/resources/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f81dc3f76bd6d36d8970a64f6ad791cc47aeab7 GIT binary patch literal 3724 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

Z?Gy8@| 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 literal 0 HcmV?d00001 diff --git a/sample-minesweeper/src/commonMain/resources/click.wav b/sample-minesweeper/src/commonMain/resources/click.wav new file mode 100644 index 0000000000000000000000000000000000000000..625e91f38d16782364b66e364ee49a7ec14ef1df GIT binary patch literal 512 zcmXAjy>1gh5Xa9QC2s%?JOC9X2w`DC6-7`b#F8Bof9CG&+}-Z&%T|FRL> z3Oem+`?uE+3czE?!gRVTD&&2bKkv0xqvkL9uyZi{cC+)k?$-}m@1IrQ?+vc^ety0` z`0>PCB4%Pa+ zQ{#)vsH;1ZwSA+e9jL=d?=D2V8uj%s%ET#6h6mA6%>5-o)dg%Plu*rS7?Map#4Kc~ zz@W~1g)xg>nB|MPt+M`jpmbJDNFJZfj7{t;jdC}0Ma-GxF_h_(=Kv}60lS?Te;UZU35eXs%0zgRy%8^hKYD?$<3(W;{H78qGS6MEdb!<%G zj3&p{S!U9P$ZCu1j74J5T9GCK^aU9KH7ND~K{FyM?G@XXPan9|YQL1Wwx!xL(*ExM Q1ht_# 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