From d41059fe51afb23c84b4ca75a2b3a75ac23d02bb Mon Sep 17 00:00:00 2001 From: nc5432 Date: Tue, 13 May 2025 11:16:02 -0400 Subject: [PATCH] Got started on the basics with sprites and grid generation --- .gitattributes | 2 + .gitignore | 16 +---- README.md | 2 +- minesweeper/.editorconfig | 4 ++ minesweeper/.gitattributes | 2 + minesweeper/.gitignore | 3 + minesweeper/icon.svg | 1 + minesweeper/icon.svg.import | 37 +++++++++++ minesweeper/project.godot | 35 +++++++++++ minesweeper/scenes/Mine.tscn | 23 +++++++ minesweeper/scenes/Minefield.tscn | 9 +++ minesweeper/scripts/Mine.gd | 72 ++++++++++++++++++++++ minesweeper/scripts/Mine.gd.uid | 1 + minesweeper/scripts/Minefield.gd | 48 +++++++++++++++ minesweeper/scripts/Minefield.gd.uid | 1 + minesweeper/sprites/1.png | Bin 0 -> 594 bytes minesweeper/sprites/1.png.import | 34 ++++++++++ minesweeper/sprites/2.png | Bin 0 -> 606 bytes minesweeper/sprites/2.png.import | 34 ++++++++++ minesweeper/sprites/3.png | Bin 0 -> 593 bytes minesweeper/sprites/3.png.import | 34 ++++++++++ minesweeper/sprites/4.png | Bin 0 -> 591 bytes minesweeper/sprites/4.png.import | 34 ++++++++++ minesweeper/sprites/5.png | Bin 0 -> 595 bytes minesweeper/sprites/5.png.import | 34 ++++++++++ minesweeper/sprites/6.png | Bin 0 -> 601 bytes minesweeper/sprites/6.png.import | 34 ++++++++++ minesweeper/sprites/7.png | Bin 0 -> 600 bytes minesweeper/sprites/7.png.import | 34 ++++++++++ minesweeper/sprites/8.png | Bin 0 -> 594 bytes minesweeper/sprites/8.png.import | 34 ++++++++++ minesweeper/sprites/backplate.png | Bin 0 -> 666 bytes minesweeper/sprites/backplate.png.import | 34 ++++++++++ minesweeper/sprites/cover.png | Bin 0 -> 660 bytes minesweeper/sprites/cover.png.import | 34 ++++++++++ minesweeper/sprites/flag.png | Bin 0 -> 626 bytes minesweeper/sprites/flag.png.import | 34 ++++++++++ minesweeper/sprites/mine.png | Bin 0 -> 642 bytes minesweeper/sprites/mine.png.import | 34 ++++++++++ minesweeper/sprites/minsweeperSprites.xcf | Bin 0 -> 6227 bytes 40 files changed, 648 insertions(+), 16 deletions(-) create mode 100644 .gitattributes create mode 100644 minesweeper/.editorconfig create mode 100644 minesweeper/.gitattributes create mode 100644 minesweeper/.gitignore create mode 100644 minesweeper/icon.svg create mode 100644 minesweeper/icon.svg.import create mode 100644 minesweeper/project.godot create mode 100644 minesweeper/scenes/Mine.tscn create mode 100644 minesweeper/scenes/Minefield.tscn create mode 100644 minesweeper/scripts/Mine.gd create mode 100644 minesweeper/scripts/Mine.gd.uid create mode 100644 minesweeper/scripts/Minefield.gd create mode 100644 minesweeper/scripts/Minefield.gd.uid create mode 100644 minesweeper/sprites/1.png create mode 100644 minesweeper/sprites/1.png.import create mode 100644 minesweeper/sprites/2.png create mode 100644 minesweeper/sprites/2.png.import create mode 100644 minesweeper/sprites/3.png create mode 100644 minesweeper/sprites/3.png.import create mode 100644 minesweeper/sprites/4.png create mode 100644 minesweeper/sprites/4.png.import create mode 100644 minesweeper/sprites/5.png create mode 100644 minesweeper/sprites/5.png.import create mode 100644 minesweeper/sprites/6.png create mode 100644 minesweeper/sprites/6.png.import create mode 100644 minesweeper/sprites/7.png create mode 100644 minesweeper/sprites/7.png.import create mode 100644 minesweeper/sprites/8.png create mode 100644 minesweeper/sprites/8.png.import create mode 100644 minesweeper/sprites/backplate.png create mode 100644 minesweeper/sprites/backplate.png.import create mode 100644 minesweeper/sprites/cover.png create mode 100644 minesweeper/sprites/cover.png.import create mode 100644 minesweeper/sprites/flag.png create mode 100644 minesweeper/sprites/flag.png.import create mode 100644 minesweeper/sprites/mine.png create mode 100644 minesweeper/sprites/mine.png.import create mode 100644 minesweeper/sprites/minsweeperSprites.xcf diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore index bf83296..0af181c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,3 @@ -# ---> Godot # Godot 4+ specific ignores .godot/ - -# Godot-specific ignores -.import/ -export.cfg -export_presets.cfg - -# Imported translations (automatically generated from CSV files) -*.translation - -# Mono-specific ignores -.mono/ -data_*/ -mono_crash.*.json - +/android/ diff --git a/README.md b/README.md index 68737a2..90f5b92 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # Minesweeper -Minesweeper \ No newline at end of file +I was a bit bored so now I'm making minesweeper. \ No newline at end of file diff --git a/minesweeper/.editorconfig b/minesweeper/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/minesweeper/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/minesweeper/.gitattributes b/minesweeper/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/minesweeper/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/minesweeper/.gitignore b/minesweeper/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/minesweeper/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/minesweeper/icon.svg b/minesweeper/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/minesweeper/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/minesweeper/icon.svg.import b/minesweeper/icon.svg.import new file mode 100644 index 0000000..5a80662 --- /dev/null +++ b/minesweeper/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dulhlruvjhhqn" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/minesweeper/project.godot b/minesweeper/project.godot new file mode 100644 index 0000000..bc42178 --- /dev/null +++ b/minesweeper/project.godot @@ -0,0 +1,35 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Minesweeper" +config/features=PackedStringArray("4.4", "GL Compatibility") +config/icon="res://icon.svg" + +[debug] + +gdscript/warnings/untyped_declaration=2 +gdscript/warnings/inferred_declaration=2 + +[display] + +window/stretch/mode="viewport" +window/stretch/aspect="expand" + +[dotnet] + +project/assembly_name="Minesweeper" + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" diff --git a/minesweeper/scenes/Mine.tscn b/minesweeper/scenes/Mine.tscn new file mode 100644 index 0000000..b2e2d92 --- /dev/null +++ b/minesweeper/scenes/Mine.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3 uid="uid://b03smhbrrkgmw"] + +[ext_resource type="Script" uid="uid://3wkgv7brl1l2" path="res://scripts/Mine.gd" id="1_rrkvo"] +[ext_resource type="Texture2D" uid="uid://b26tmpl7dhsls" path="res://sprites/cover.png" id="3_ke0lc"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_xpffi"] +size = Vector2(16, 16) + +[node name="Mine" type="Node2D"] +script = ExtResource("1_rrkvo") + +[node name="layer1" type="Sprite2D" parent="."] +texture = ExtResource("3_ke0lc") + +[node name="layer2" type="Sprite2D" parent="."] + +[node name="StaticBody2D" type="StaticBody2D" parent="."] +input_pickable = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +shape = SubResource("RectangleShape2D_xpffi") + +[connection signal="input_event" from="StaticBody2D" to="." method="_on_static_body_2d_input_event"] diff --git a/minesweeper/scenes/Minefield.tscn b/minesweeper/scenes/Minefield.tscn new file mode 100644 index 0000000..f14de50 --- /dev/null +++ b/minesweeper/scenes/Minefield.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://b8ewc3373b0t2"] + +[ext_resource type="Script" uid="uid://du63nf81skbpt" path="res://scripts/Minefield.gd" id="1_rm6t6"] + +[node name="Minefield" type="Node2D"] +script = ExtResource("1_rm6t6") + +[node name="Camera2D" type="Camera2D" parent="."] +zoom = Vector2(4, 4) diff --git a/minesweeper/scripts/Mine.gd b/minesweeper/scripts/Mine.gd new file mode 100644 index 0000000..33bbe4d --- /dev/null +++ b/minesweeper/scripts/Mine.gd @@ -0,0 +1,72 @@ +class_name Mine extends Node2D + +@onready var backplate: CompressedTexture2D = preload("res://sprites/backplate.png") +@onready var cover: CompressedTexture2D = preload("res://sprites/cover.png") +@onready var mine: CompressedTexture2D = preload("res://sprites/mine.png") +@onready var flag: CompressedTexture2D = preload("res://sprites/flag.png") +@onready var nums: Array[CompressedTexture2D] = [ + preload("res://sprites/1.png"), + preload("res://sprites/2.png"), + preload("res://sprites/3.png"), + preload("res://sprites/4.png"), + preload("res://sprites/5.png"), + preload("res://sprites/6.png"), + preload("res://sprites/7.png"), + preload("res://sprites/8.png") +] + +enum MineType{ + EMPTY, + ONE, + TWO, + THREE, + FOUR, + FIVE, + SIX, + SEVEN, + EIGHT, + MINE +} + +@onready var layer1: Sprite2D = $layer1 +@onready var layer2: Sprite2D = $layer2 + +var type: MineType +var coord: Vector2i +var revealed: bool = false + +func evaluateType() -> void: + if (type == MineType.MINE): return + var count: int = 0 + for x: int in range(-1, 2): + for y: int in range(-1, 2): + if (x == 0 && y == 0): continue + var mine: Mine = Minefield.instance.getMine(coord + Vector2i(x, y)) + if (mine == null): continue + if (mine.type == MineType.MINE): count += 1 + type = count as MineType + +func reveal() -> void: + if (revealed): return + revealed = true + layer1.texture = backplate + match type: + MineType.EMPTY: + layer2.texture = null + for x: int in range(-1, 2): + for y: int in range(-1, 2): + if (x == 0 && y == 0): continue + var mine: Mine = Minefield.instance.getMine(coord + Vector2i(x, y)) + if (mine == null): continue + mine.reveal() + MineType.MINE: + layer2.texture = mine + _: + layer2.texture = nums[type as int - 1] + +func _on_static_body_2d_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void: + if (event.is_pressed()): + print("Pressed " + str(coord)) + if (!Minefield.instance.fieldInitialized): + Minefield.instance.initField(coord) + reveal() diff --git a/minesweeper/scripts/Mine.gd.uid b/minesweeper/scripts/Mine.gd.uid new file mode 100644 index 0000000..faad8d4 --- /dev/null +++ b/minesweeper/scripts/Mine.gd.uid @@ -0,0 +1 @@ +uid://3wkgv7brl1l2 diff --git a/minesweeper/scripts/Minefield.gd b/minesweeper/scripts/Minefield.gd new file mode 100644 index 0000000..e8192e7 --- /dev/null +++ b/minesweeper/scripts/Minefield.gd @@ -0,0 +1,48 @@ +class_name Minefield extends Node2D + +static var instance: Minefield + +@onready var minePrefab: PackedScene = preload("res://scenes/Mine.tscn") +@onready var cam: Camera2D = $Camera2D + +@export var width: int = 10 +@export var height: int = 10 +@export var mineCount: int = 10 + +var mines: Array[Mine] +var spriteWidth: int = 16 +var fieldInitialized: bool = false + +func _enter_tree() -> void: + if (instance == null || is_instance_valid(instance)): instance = self + else: queue_free() + +func _ready() -> void: + var scale: float = 1 + for x: int in range(width): + for y: int in range(height): + var mine: Mine = minePrefab.instantiate() + mine.coord = Vector2i(x, y) + mine.position = Vector2(spriteWidth * x - (spriteWidth * (width / 2)) + (spriteWidth / 2), + spriteWidth * y - (spriteWidth * (height / 2)) + (spriteWidth / 2)) + add_child(mine) + mines.append(mine) + +func initField(coord: Vector2i) -> void: + var picked: Array[Vector2i] + for i: int in range(mineCount): + var pick: Vector2i + while (true): + pick = Vector2i(randi_range(0, width - 1), randi_range(0, height - 1)) + if abs(coord - pick) <= Vector2i(1, 1) || pick in picked: + continue + break + print("Picked " + str(pick)) + picked.append(pick) + getMine(pick).type = Mine.MineType.MINE + for mine: Mine in mines: + mine.evaluateType() + +func getMine(coord: Vector2i) -> Mine: + if (coord.x < 0 || coord.y < 0 || coord.x >= width || coord.y >= width): return null + return mines[(coord.x * height) + coord.y] diff --git a/minesweeper/scripts/Minefield.gd.uid b/minesweeper/scripts/Minefield.gd.uid new file mode 100644 index 0000000..7f65bfb --- /dev/null +++ b/minesweeper/scripts/Minefield.gd.uid @@ -0,0 +1 @@ +uid://du63nf81skbpt diff --git a/minesweeper/sprites/1.png b/minesweeper/sprites/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a345124720d85ea8173ac8a9e67dbd01473193c3 GIT binary patch literal 594 zcmV-Y0EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=w9@2L%9RL6T8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b04qsEK~y-)V_+BsvEX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=y2ZSo*UjP6A8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b05?fQK~y-)V_+Bs6az+ll9Jm6|HIhNJ>N5uWHPd5YEX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=zD%kFcYXATM8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b04hmDK~y-)V_+Bsv;~(XB>rEPkoZrwW^8PV4WqASVhmxT fxy@8DXqW>4H`^2!7NIzU00000NkvXXu0mjfXwv*~ literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/3.png.import b/minesweeper/sprites/3.png.import new file mode 100644 index 0000000..b1f4adb --- /dev/null +++ b/minesweeper/sprites/3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://1hobtvrhhpag" +path="res://.godot/imported/3.png-4b696cede5d7c22c43379d68dba522fe.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/3.png" +dest_files=["res://.godot/imported/3.png-4b696cede5d7c22c43379d68dba522fe.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/4.png b/minesweeper/sprites/4.png new file mode 100644 index 0000000000000000000000000000000000000000..b964fdfe9426a418cf73a78b7d3e84074271249c GIT binary patch literal 591 zcmV-V0EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=!E{9!bP5=M^8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b04PaBK~y-)V_+Bsv;&J&xBbV)Mh8rkTEs%EE2!ojs(WGJ d4HyLs3;EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=$Ei7VGb^rhX8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b04zyFK~y-)V_+Bs6az+F64eY0|Ix)-@u(-t0BnGXZeAeC h`J{Mh2zg-`0|0=z2>cI*4_W{K002ovPDHLkV1lfE`&0k` literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/5.png.import b/minesweeper/sprites/5.png.import new file mode 100644 index 0000000..2ea1d73 --- /dev/null +++ b/minesweeper/sprites/5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://yie3i2fv6qwp" +path="res://.godot/imported/5.png-9623488411965634f7236a3a6f7224ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/5.png" +dest_files=["res://.godot/imported/5.png-9623488411965634f7236a3a6f7224ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/6.png b/minesweeper/sprites/6.png new file mode 100644 index 0000000000000000000000000000000000000000..86a0ff28f89c538a47b187fbabfbe3841749544c GIT binary patch literal 601 zcmV-f0;c_mP)EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=&5F${&;Q#;t8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b05VBLK~y-)V_+Bs6az+ll58Cl|HIh7D)JdgG8tJjHa^J) nkn9C?18C+2rokHvBM1NhfLRut_`Vp)00000NkvXXu0mjfuG{?u literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/6.png.import b/minesweeper/sprites/6.png.import new file mode 100644 index 0000000..324f2c8 --- /dev/null +++ b/minesweeper/sprites/6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ip4h63iwekv7" +path="res://.godot/imported/6.png-3d2dc1b4460661c5fbb97d3d09a18c6d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/6.png" +dest_files=["res://.godot/imported/6.png-3d2dc1b4460661c5fbb97d3d09a18c6d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/7.png b/minesweeper/sprites/7.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb94fee061f970e85071600231b5049eeb2cfad GIT binary patch literal 600 zcmV-e0;m0nP)EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=(54J;tRR9108FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b05M5KK~y-)V_+Bs6az+F5;8I}|Ix*sJbA)MwoTX!q>5%H mngEX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=)DNkcnYXATM8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b04qsEK~y-)V_+Bs6az+ll9`#A|6%Ou)2B0%WHPd5YPx# literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/8.png.import b/minesweeper/sprites/8.png.import new file mode 100644 index 0000000..22ca2d4 --- /dev/null +++ b/minesweeper/sprites/8.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://uahv8esecsl5" +path="res://.godot/imported/8.png-cd60b246701e0b04181ccd2d015862bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/8.png" +dest_files=["res://.godot/imported/8.png-cd60b246701e0b04181ccd2d015862bf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/backplate.png b/minesweeper/sprites/backplate.png new file mode 100644 index 0000000000000000000000000000000000000000..e214a97091cb1a5c3be36b7302bdda08807b8dd6 GIT binary patch literal 666 zcmV;L0%iS)P)EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=u5{;Y1umAu68FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0CP!1K~y-)&62SVfG`XM55yQLvw-(+l0960mm#1)AO$Fr zP{4Qg>ra;TQ_gv%QKgh>mc;U8v`7-b4gg3gH3eggnAsh0n7vxAix5H=VCJP>0o?uL z3jpSk4*chd6=0-9RguhW93biJb~oS}boVa621=zR;YqL(w*UYD07*qoM6N<$g1&Je Ax&QzG literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/backplate.png.import b/minesweeper/sprites/backplate.png.import new file mode 100644 index 0000000..90a4a13 --- /dev/null +++ b/minesweeper/sprites/backplate.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blar6qfjvvqx4" +path="res://.godot/imported/backplate.png-1f2bb5c1f1cd3c968c9ff327e44e2294.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/backplate.png" +dest_files=["res://.godot/imported/backplate.png-1f2bb5c1f1cd3c968c9ff327e44e2294.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/cover.png b/minesweeper/sprites/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..802ab85e3a44502c613f9ceef6eec111fb4b9261 GIT binary patch literal 660 zcmV;F0&D$=P)EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi!2rPk!BIGLMF0Q*32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=r5Y{`|(EtDd8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0BuP`K~y-)&66<-fG`Y2pVG1S>M47e-lOB+x^~w=EEW_R z74%OjArBH>rUjeu)!%P54&22Ma|5ZmhELj2U?j`6tA8^M20000EX>4Tx04R}tkv&MmKpe$iQ%gl!9PA+CkfAzRgeu}#t5Adrp;l;yWphgA|?JWDYS_3;J6>}?mh0_0Ya# zo%23%gq3BL_?&pcpbHW|a$RxxjdRIifoDdHY-XM~LM)bgSm|L_HZNsGzSbbDicWQdq)s#Kpat9cGs>_D#NPe0^u?W1M(KqFRp<7^J&F!tTkJASrOI@XJfP+I| zyhPdS9`Ek&?d{()o&J6R-9K{C?78o$00006VoOIv02Tli02cb3v(5kj010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>-i8H733@31|QS02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{002r!L_t(I%VS^|1&p{PZn3fbhp}x01Q=eudWBUj3qFm+ z048(+wO_v&DKY?N2&o3)1!7`i|4DKIRbl~~?bu?1kyNMSiq4S?0BQ^tg;ktypa1{> M07*qoM6N<$f^cdE0{{R3 literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/flag.png.import b/minesweeper/sprites/flag.png.import new file mode 100644 index 0000000..1351d30 --- /dev/null +++ b/minesweeper/sprites/flag.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpjs7i4830gbc" +path="res://.godot/imported/flag.png-6b6f638db08d282fbed517913740f6a9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/flag.png" +dest_files=["res://.godot/imported/flag.png-6b6f638db08d282fbed517913740f6a9.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/mine.png b/minesweeper/sprites/mine.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc6bc21f0b4cfb33ec2ccddac631eae066570d1 GIT binary patch literal 642 zcmV-|0)737P)EX>4Tx04R}tkv&MmKpe$iQ;Q-k9n2u&kfA!+MMWHI6^c+H)C#RSm|Xe=O#E0ZoJ%eXJX18YnR#N7SSt0f+QY1D>crE;F-EcFOy3pR|Sk5 z3#dVd;`+h=;CHuHaca^_3MYZki{pHZ0sXr`yXiRJ$BxrJ0fNuKmC^OrTEOfl>CLVd zI|8EHz{Pb}Q}=+&9bovWu9%7|1!)S!BJh4j-;@W2Zh^ryueZ)VP9K0Qb(OvW4i16w z5@oOZynCRxw|~!c`uhPwy>gSZ?4>CH000JJOGiWi^8oVz^JU@x-2eap32;bRa{vG? zBLDy{BLR4&KXw2B00(qQO+^Rk1q}=-5_#~TfB*mh8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b09#2!K~y-)V_+BsGz0&MU^6f07*qoM6N<$g83;6=Kufz literal 0 HcmV?d00001 diff --git a/minesweeper/sprites/mine.png.import b/minesweeper/sprites/mine.png.import new file mode 100644 index 0000000..adadaba --- /dev/null +++ b/minesweeper/sprites/mine.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpu5owqvay3ih" +path="res://.godot/imported/mine.png-3aeb482e7dc562a62adab144bb21aa06.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://sprites/mine.png" +dest_files=["res://.godot/imported/mine.png-3aeb482e7dc562a62adab144bb21aa06.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/minesweeper/sprites/minsweeperSprites.xcf b/minesweeper/sprites/minsweeperSprites.xcf new file mode 100644 index 0000000000000000000000000000000000000000..90a89e8580dc77c6e8d3228a6250f818f3a169a9 GIT binary patch literal 6227 zcmeHLO=u)V6t3=`OftX8ottAQBfe4m5iA2U3>?N_LyJg}p^U>KFc+5fW8zJ~I?>E_c$1J3L3P$j)yhnD(^;V$u^ZD{^&Pij zZ`E99b=Vnpc3Do?` z%=Wrdx1II!t;!btqPDuaRjJ#8uf;M9lBvyFF}{)&>l5jtuSq}noAj}7rBA#qed>zz z=`W=pxhwtX3(}AMB>lvD(g%)8GwQQ}Rku_n)buG)c+!c(9;f*7yEsBi80G0lF+YZ5 zPiXO^7RR;N*5ZT~C$%`G#lwi{da4W}plj3lr~DX>Jw-7`fqznq)w6a3IjxxAXcg57 zbY2wmSLwx3VU#~s`2sV4VB!cSj*rH) zc#IA3IBqz}OpbF2!&N!1$``4bs@tDEk7j7L>x_K2vzlB*S6dRpO^ z=<)%TUZhMvsq{46P_HC!_u}rI`zj?r2*Hp_eyZ{qT~UmHC`LdOBOsc_+m~LaJVr!R zjKe)3d&um8xd&#TPI)l*1alwEePs5*+y^sIr#zVZf*BZVUPd%Pfy(Rtd=UV+tj}Lzzf+02hyUJf!cOG+;m%1bPbe6llPJo(dF-80Tg|+UYqr6UG-x<=Y!B_DHG0{iK$!gwi4VzKY<_ zsFm%$|7jS)Y*YOvxY-hOkGvLb@whSXNCw_e