From b9128bc7c8e3e2d4561241477f39e255e764d8f4 Mon Sep 17 00:00:00 2001 From: s452635 Date: Mon, 3 May 2021 20:03:32 +0200 Subject: [PATCH] added display_assets, added new tiles (mud, grass and concrete) --- display_assets.py | 215 ++++++++++++++++-- main.py | 45 +--- project_constants.py | 210 ++++++++++++++++- resources/assets/chains.png | Bin 0 -> 325 bytes resources/assets/concrete.png | Bin 0 -> 423 bytes .../blue_tile.png | Bin .../green_tile.png | Bin .../{first assets => first_assets}/grid.png | Bin .../hex_mine.png | Bin .../pen_mine.png | Bin .../{first assets => first_assets}/romb.png | Bin .../white_tile.png | Bin resources/assets/grass.png | Bin 0 -> 472 bytes resources/assets/mud.png | Bin 0 -> 926 bytes resources/assets/numbered_grid.png | Bin 903 -> 909 bytes .../assets/{ => old_tiles}/tile_blue.png | Bin .../assets/{ => old_tiles}/tile_green.png | Bin .../assets/{ => old_tiles}/tile_orange.png | Bin .../assets/{ => old_tiles}/tile_purple.png | Bin resources/assets/{ => old_tiles}/tile_red.png | Bin .../assets/{ => old_tiles}/tile_white.png | Bin .../assets/{ => old_tiles}/tile_yellow.png | Bin .../mine_a.png | Bin .../mine_b.png | Bin .../mine_f.png | Bin .../mine_k.png | Bin .../assets/{ => simple_assets}/new_grid.png | Bin .../sapper.png | Bin .../{number0.png => time_number_0.png} | Bin .../{number1.png => time_number_1.png} | Bin .../{number2.png => time_number_2.png} | Bin .../{number3.png => time_number_3.png} | Bin .../{number4.png => time_number_4.png} | Bin .../{number5.png => time_number_5.png} | Bin .../{number6.png => time_number_6.png} | Bin .../{number7.png => time_number_7.png} | Bin .../{number8.png => time_number_8.png} | Bin .../{number9.png => time_number_9.png} | Bin 38 files changed, 409 insertions(+), 61 deletions(-) create mode 100644 resources/assets/chains.png create mode 100644 resources/assets/concrete.png rename resources/assets/{first assets => first_assets}/blue_tile.png (100%) rename resources/assets/{first assets => first_assets}/green_tile.png (100%) rename resources/assets/{first assets => first_assets}/grid.png (100%) rename resources/assets/{first assets => first_assets}/hex_mine.png (100%) rename resources/assets/{first assets => first_assets}/pen_mine.png (100%) rename resources/assets/{first assets => first_assets}/romb.png (100%) rename resources/assets/{first assets => first_assets}/white_tile.png (100%) create mode 100644 resources/assets/grass.png create mode 100644 resources/assets/mud.png rename resources/assets/{ => old_tiles}/tile_blue.png (100%) rename resources/assets/{ => old_tiles}/tile_green.png (100%) rename resources/assets/{ => old_tiles}/tile_orange.png (100%) rename resources/assets/{ => old_tiles}/tile_purple.png (100%) rename resources/assets/{ => old_tiles}/tile_red.png (100%) rename resources/assets/{ => old_tiles}/tile_white.png (100%) rename resources/assets/{ => old_tiles}/tile_yellow.png (100%) rename resources/assets/{simple assets => simple_assets}/mine_a.png (100%) rename resources/assets/{simple assets => simple_assets}/mine_b.png (100%) rename resources/assets/{simple assets => simple_assets}/mine_f.png (100%) rename resources/assets/{simple assets => simple_assets}/mine_k.png (100%) rename resources/assets/{ => simple_assets}/new_grid.png (100%) rename resources/assets/{simple assets => simple_assets}/sapper.png (100%) rename resources/assets/time_numbers/{number0.png => time_number_0.png} (100%) rename resources/assets/time_numbers/{number1.png => time_number_1.png} (100%) rename resources/assets/time_numbers/{number2.png => time_number_2.png} (100%) rename resources/assets/time_numbers/{number3.png => time_number_3.png} (100%) rename resources/assets/time_numbers/{number4.png => time_number_4.png} (100%) rename resources/assets/time_numbers/{number5.png => time_number_5.png} (100%) rename resources/assets/time_numbers/{number6.png => time_number_6.png} (100%) rename resources/assets/time_numbers/{number7.png => time_number_7.png} (100%) rename resources/assets/time_numbers/{number8.png => time_number_8.png} (100%) rename resources/assets/time_numbers/{number9.png => time_number_9.png} (100%) diff --git a/display_assets.py b/display_assets.py index 62fbcfd..5c57547 100644 --- a/display_assets.py +++ b/display_assets.py @@ -3,45 +3,228 @@ import pygame import project_constants as const -# moved here from minefield -def calculate_screen_position(row, column): +# ====================== # +# === MAIN FUNCTIONS === # +# ====================== # + +def test_blits(): + display_concrete((2, 3)) + display_mud((5, 6)) + display_mud((5, 7)) + display_grass((2, 1)) + display_mine((2, 7)) + display_mine((5, 7)) + display_concrete((0, 0)) + display_chained_mine((1, 2), (2, 3)) + display_chained_mine((2, 3)) + display_chained_mine((4, 8), (11, 15)) + display_time_mine((1, 8), 12) + display_time_mine((2, 8), 34) + + +def blit_graphics(minefield): + # background grid (fills frame with white, blits grid) + const.SCREEN.fill((255, 255, 255)) + const.SCREEN.blit( + const.ASSET_BACKGROUND, + ( + const.V_SCREEN_PADDING, + const.V_SCREEN_PADDING + ) + ) + + # draw tiles and mines from minefield + minefield.draw(const.SCREEN) + + # all the tests in one place + test_blits() + + # sapper + display_sapper( + minefield.agent.position, + minefield.agent.direction + ) + + # update graphics after blitting + pygame.display.update() + + +# moved here from minefield +def calculate_screen_position(coords): coords = ( - const.V_NUMBER_PADDING + const.V_SCREEN_PADDING + const.V_TILE_SIZE * column, - const.V_NUMBER_PADDING + const.V_SCREEN_PADDING + const.V_TILE_SIZE * row, + const.V_NUMBER_PADDING + const.V_SCREEN_PADDING + const.V_TILE_SIZE * coords[1], + const.V_NUMBER_PADDING + const.V_SCREEN_PADDING + const.V_TILE_SIZE * coords[0], ) return coords -def display_sapper(sapper_x, sapper_y, sapper_dir): +# ============== # +# === SAPPER === # +# ============== # - sapper_screen_coords = calculate_screen_position( - sapper_x, - sapper_y - ) - if sapper_dir == const.Direction.UP: +def display_sapper(coords, direction): + sapper_screen_coords = calculate_screen_position(coords) + + if direction == const.Direction.UP: const.SCREEN.blit( const.ASSET_SAPPER, sapper_screen_coords ) - - if sapper_dir == const.Direction.RIGHT: + elif direction == const.Direction.RIGHT: const.SCREEN.blit( pygame.transform.rotate(const.ASSET_SAPPER, 270), sapper_screen_coords ) - - if sapper_dir == const.Direction.DOWN: + elif direction == const.Direction.DOWN: const.SCREEN.blit( pygame.transform.rotate(const.ASSET_SAPPER, 180), sapper_screen_coords ) - - if sapper_dir == const.Direction.LEFT: + elif direction == const.Direction.LEFT: const.SCREEN.blit( pygame.transform.rotate(const.ASSET_SAPPER, 90), sapper_screen_coords ) + +# ============= # +# === TILES === # +# ============= # + + +def display_concrete(coords): + const.SCREEN.blit( + const.ASSET_CONCRETE, + calculate_screen_position(coords) + ) + + +def display_mud(coords): + const.SCREEN.blit( + const.ASSET_MUD, + calculate_screen_position(coords) + ) + + +def display_grass(coords): + const.SCREEN.blit( + const.ASSET_GRASS, + calculate_screen_position(coords) + ) + + +# ============= # +# === MINES === # +# ============= # + + +def display_mine(coords): + const.SCREEN.blit( + const.ASSET_MINE, + calculate_screen_position(coords) + ) + + +def display_chained_mine(coords, parent_coords=None): + def display_number(which_coord, number): + + number_asset = const.ASSET_NUMBER_CHAINS_0 + if number == 1: + number_asset = const.ASSET_NUMBER_CHAINS_1 + elif number == 3: + number_asset = const.ASSET_NUMBER_CHAINS_3 + elif number == 4: + number_asset = const.ASSET_NUMBER_CHAINS_4 + elif number == 5: + number_asset = const.ASSET_NUMBER_CHAINS_5 + elif number == 6: + number_asset = const.ASSET_NUMBER_CHAINS_6 + elif number == 7: + number_asset = const.ASSET_NUMBER_CHAINS_7 + elif number == 8: + number_asset = const.ASSET_NUMBER_CHAINS_8 + elif number == 9: + number_asset = const.ASSET_NUMBER_CHAINS_9 + elif number == 10: + number_asset = const.ASSET_NUMBER_CHAINS_10 + elif number == 11: + number_asset = const.ASSET_NUMBER_CHAINS_11 + elif number == 12: + number_asset = const.ASSET_NUMBER_CHAINS_12 + elif number == 13: + number_asset = const.ASSET_NUMBER_CHAINS_13 + elif number == 14: + number_asset = const.ASSET_NUMBER_CHAINS_14 + elif number == 15: + number_asset = const.ASSET_NUMBER_CHAINS_15 + + mine_coords = calculate_screen_position(coords) + number_coords = mine_coords + if which_coord == const.Coords.X: + number_coords = (mine_coords[0] + 20, mine_coords[1] + 24) + elif which_coord == const.Coords.Y: + number_coords = (mine_coords[0] + 34, mine_coords[1] + 24) + + const.SCREEN.blit( + number_asset, + number_coords + ) + + display_mine(coords) + + if parent_coords is not None: + const.SCREEN.blit( + const.ASSET_CHAINS, + calculate_screen_position(coords) + ) + + display_number(const.Coords.X, parent_coords[0]) + display_number(const.Coords.Y, parent_coords[1]) + + +def display_time_mine(coords, time): + + def display_number(which_digit, number): + + number_asset = const.ASSET_NUMBER_TIME_0 + if number == 1: + number_asset = const.ASSET_NUMBER_TIME_1 + elif number == 2: + number_asset = const.ASSET_NUMBER_TIME_2 + elif number == 3: + number_asset = const.ASSET_NUMBER_TIME_3 + elif number == 4: + number_asset = const.ASSET_NUMBER_TIME_4 + elif number == 5: + number_asset = const.ASSET_NUMBER_TIME_5 + elif number == 6: + number_asset = const.ASSET_NUMBER_TIME_6 + elif number == 7: + number_asset = const.ASSET_NUMBER_TIME_7 + elif number == 8: + number_asset = const.ASSET_NUMBER_TIME_8 + elif number == 9: + number_asset = const.ASSET_NUMBER_TIME_9 + + mine_coords = calculate_screen_position(coords) + number_coords = mine_coords + if which_digit == const.Digit.ONES: + number_coords = (mine_coords[0] + 36, mine_coords[1] + 22) + elif which_digit == const.Digit.TENS: + number_coords = (mine_coords[0] + 44, mine_coords[1] + 22) + + const.SCREEN.blit( + number_asset, + number_coords + ) + + const.SCREEN.blit( + const.ASSET_TIME_MINE, + calculate_screen_position(coords) + ) + + display_number(const.Digit.ONES, int(str(time)[-1])) + display_number(const.Digit.TENS, int(str(time)[-2])) diff --git a/main.py b/main.py index 7cefe05..9f46b88 100644 --- a/main.py +++ b/main.py @@ -8,20 +8,21 @@ from pyglet.gl import * # for blocky textures import project_constants as const import minefield as mf import searching_algorithms.bfs as bfs -from display_assets import display_sapper +from display_assets import blit_graphics def main(): + pygame.init() pygame.display.set_caption(const.V_NAME_OF_WINDOW) - # FPS clock - clock = pygame.time.Clock() - # for blocky textures glEnable(GL_TEXTURE_2D) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) + # FPS clock + clock = pygame.time.Clock() + # create an instance of Minefield, pass necessary data minefield = mf.Minefield(const.MAP_RANDOM_10x10) @@ -31,43 +32,22 @@ def main(): row=minefield.agent.position[0], column=minefield.agent.position[1], direction=const.Direction.UP), - minefield=minefield) + minefield=minefield) running = True while running: + # FPS control clock.tick(const.V_FPS) - # ================ # - # === GRAPHICS === # - # ================ # - - # background grid (fills frame with white, blits grid) - const.SCREEN.fill((255, 255, 255)) - const.SCREEN.blit( - const.ASSET_BACKGROUND, - ( - const.V_SCREEN_PADDING, - const.V_SCREEN_PADDING - ) - ) - - # draw tiles and mines - minefield.draw(const.SCREEN) - - # sapper - display_sapper( - minefield.agent.position[0], - minefield.agent.position[1], - minefield.agent.direction - ) - - # update graphics after blitting - pygame.display.update() + # graphics (from display_assets) + blit_graphics(minefield) # make the next move from sequence of actions if any(action_sequence): + action = action_sequence.pop(0) + if action == const.Action.ROTATE_LEFT: minefield.agent.rotate_left() elif action == const.Action.ROTATE_RIGHT: @@ -78,13 +58,12 @@ def main(): time.sleep(const.ACTION_INTERVAL) else: + for event in pygame.event.get(): if event.type == pygame.QUIT: running = False - # Assigning all input from keyboard as variables into an array - if __name__ == "__main__": main() diff --git a/project_constants.py b/project_constants.py index b49d62f..6f63163 100644 --- a/project_constants.py +++ b/project_constants.py @@ -39,7 +39,6 @@ SCREEN = pygame.display.set_mode( # ==== ENUMS ==== # # =============== # - class Direction(Enum): UP = 0 RIGHT = 1 @@ -61,6 +60,16 @@ class Action(Enum): GO = 2 +class Digit(Enum): + ONES = 0 + TENS = 1 + + +class Coords(Enum): + X = 0 + Y = 1 + + # =============== # # === STRUCTS === # # =============== # @@ -104,12 +113,14 @@ STRUCT_MINE_ATTRIBUTE_TYPES = { "time": [int] } + # ============== # # ==== MAPS ==== # # ============== # MAP_RANDOM_10x10 = os.path.join("resources", "minefields", "secondmap.json") + # ============== # # === ASSETS === # # ============== # @@ -129,57 +140,232 @@ ASSET_WALL = pygame.transform.scale( (V_TILE_SIZE, V_TILE_SIZE) ) +ASSET_CONCRETE = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "concrete.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + +ASSET_MUD = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "mud.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + +ASSET_GRASS = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "grass.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + +ASSET_MINE = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "mine.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + +ASSET_CHAINS = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chains.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + +ASSET_TIME_MINE = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_mine.png")), + (V_TILE_SIZE, V_TILE_SIZE) +) + + +# ==================== # +# === TIME NUMBERS === # +# ==================== # + +ASSET_NUMBER_TIME_0 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_0.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_1 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_1.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_2 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_2.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_3 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_3.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_4 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_4.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_5 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_5.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_6 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_6.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_7 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_7.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_8 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_8.png")), + (6, 16) +) + +ASSET_NUMBER_TIME_9 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "time_numbers/time_number_9.png")), + (6, 16) +) + + +# ====================== # +# === CHAINS NUMBERS === # +# ====================== # + +ASSET_NUMBER_CHAINS_0 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_0.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_1 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_1.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_2 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_2.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_3 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_3.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_4 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_4.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_5 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_5.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_6 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_6.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_7 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_7.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_8 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_8.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_9 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_9.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_10 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_10.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_11 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_11.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_12 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_12.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_13 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_13.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_14 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_14.png")), + (6, 12) +) + +ASSET_NUMBER_CHAINS_15 = pygame.transform.scale( + pygame.image.load(os.path.join(DIR_ASSETS, "chain_numbers/chain_number_15.png")), + (6, 12) +) + + +# ================== # +# === OLD ASSETS === # +# ================== # + ASSET_MINE_A = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "simple assets/mine_a.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "simple_assets/mine_a.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_MINE_B = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "simple assets/mine_b.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "simple_assets/mine_b.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_MINE_F = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "simple assets/mine_f.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "simple_assets/mine_f.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_MINE_K = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "simple assets/mine_k.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "simple_assets/mine_k.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_ORANGE = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_orange.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_orange.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_RED = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_red.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_red.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_BLUE = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_blue.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_blue.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_PURPLE = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_purple.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_purple.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_GREEN = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_green.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_green.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_YELLOW = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_yellow.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_yellow.png")), (V_TILE_SIZE, V_TILE_SIZE) ) ASSET_TILE_WHITE = pygame.transform.scale( - pygame.image.load(os.path.join(DIR_ASSETS, "tile_white.png")), + pygame.image.load(os.path.join(DIR_ASSETS, "old_tiles/tile_white.png")), (V_TILE_SIZE, V_TILE_SIZE) ) diff --git a/resources/assets/chains.png b/resources/assets/chains.png new file mode 100644 index 0000000000000000000000000000000000000000..9a7d67cb6dc1dbc18883e9d16c567cf19586bf31 GIT binary patch literal 325 zcmV-L0lNN)P)64D8^ai7~8M4~a~b9XYssJO|xKoW@_`wMHW8C*n+h)6`t$6IR_ zu`_tYKg2{ts%p`J@dSun#e1&ZLma@&yUA76nAxu2@u53nyo@Pg<}{^n z?rfXA<~lVWFla0n2x&E3!5`#SD^BH~2Ead&vo`{!9cEWXu% z`DK1q6R7vh_DWpQA%wXLECKRSfL;}|%2Aal@ZS5ZwOU_ei2qXAb6pc>0FRBags8O+v% z>9xmfPbZ?#k*Tg#25!ipVgEa0SyPArt4ebUYe;m|x~#s4)+*0nm4>t}DG z&l6SZ#t{+yIw{o1R{_fL=s#Ci1p}d~&hc8Uo_=)@p;X)94?Sb#Co}E#{tLj;U}_5a R$o2pL002ovPDHLkV1gYk%rgK0 literal 0 HcmV?d00001 diff --git a/resources/assets/first assets/blue_tile.png b/resources/assets/first_assets/blue_tile.png similarity index 100% rename from resources/assets/first assets/blue_tile.png rename to resources/assets/first_assets/blue_tile.png diff --git a/resources/assets/first assets/green_tile.png b/resources/assets/first_assets/green_tile.png similarity index 100% rename from resources/assets/first assets/green_tile.png rename to resources/assets/first_assets/green_tile.png diff --git a/resources/assets/first assets/grid.png b/resources/assets/first_assets/grid.png similarity index 100% rename from resources/assets/first assets/grid.png rename to resources/assets/first_assets/grid.png diff --git a/resources/assets/first assets/hex_mine.png b/resources/assets/first_assets/hex_mine.png similarity index 100% rename from resources/assets/first assets/hex_mine.png rename to resources/assets/first_assets/hex_mine.png diff --git a/resources/assets/first assets/pen_mine.png b/resources/assets/first_assets/pen_mine.png similarity index 100% rename from resources/assets/first assets/pen_mine.png rename to resources/assets/first_assets/pen_mine.png diff --git a/resources/assets/first assets/romb.png b/resources/assets/first_assets/romb.png similarity index 100% rename from resources/assets/first assets/romb.png rename to resources/assets/first_assets/romb.png diff --git a/resources/assets/first assets/white_tile.png b/resources/assets/first_assets/white_tile.png similarity index 100% rename from resources/assets/first assets/white_tile.png rename to resources/assets/first_assets/white_tile.png diff --git a/resources/assets/grass.png b/resources/assets/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..7d11c849bea592bb69148f54f5b8929c00409444 GIT binary patch literal 472 zcmV;}0Vn>6P)NklBrSv@wH$9k)$X+E@%zB;-nqxu* zt4pz~F`a={=8XJjRlv%uGS;_C#8b zDaV4OtE;55gik>GePsE#TPbbTbLU=Vu-nRHkJM~Brc{m_i!tG(p%N9-+&c%#^HB1t z#gH#2(`_}nVHNvGiKM| z^kt#nU-zT*WucLH-H+IX#DM7r21tzq$B}fc zH+n6csJF14k_*7_l)b_M>|x4z@Dg)iMeC>J8ZWz<3I=Q5ckEWVsurjLQ2v-9zl6{IyR=c%kAV4vRNFW06KD~R^XUy3@U$ZrcPVLr`VNM!U!m`a+!C-R z7Z!rg2qQMZfYuxNE%Hc0?Vm5rU@i~{DHjMHaz9{>wb*tI%|8DTEy>M#GhR)&CfdtQ_%px>weVE11(Y- z(FpicQwCmh$;3Tz?M^!sZVb}`5zz_d3=5Z3yqm;c!^Y z-35{+jZDg2X!GlSoXKnY2cU9=WVf)@%;W}udC49_qXE3sykj8LFp&REWS^{C>i#j% zSuBMT#xf{J2J;!$(>+t=aZ4UH-pEwb#7BpC8XZ3y%7`SM`s- zi^u=)&pEB1*wfBl_nPoc^I^ZuVed_O|7R*YnJYc{ef3Y@E%r^{BrpB?p({6kvGS)} z7Yi$q>181+bM{xPjCvn_>aC=qzpUW3-kaHvXUc}&o;SsI?v<|i_rZtfU7fdA`4G$Z zS#l?L_bJ35&~CC>!0}1YbppGQVAgq;_g~siiFZvX|7R{K*MI!~ri+xr;c;1+e_=P&&cfr63>3Qkme~Vtf6= z+=~J~`&?E;I`61rblI1v1#r`{~yYCT1N zv#DE`(9?R=hhdVWau zik*B5+ZX!Wi)yZ6#;SXb=?Ug*Qcsj;Z)KZ4t0kpsG9_kxPYIMO_@x1I zwS(Xj6`22PCb#nCN)hyDqEtj{Feqyzw3m44RF{_?0?O%Kc}N6U1`d*SF8d*k8NeU zZw@QN`FN51a_bgmj65NTJgO$pLhE9 zYYO)pa5~)noxk0uZOdZ=q`LqAsN~f%>_7ZpaN&{%SDX(&1^Q!};-Z4epRX4B0Aqx) z=J46T%H{pwAV!JAk3puD2hO)m>))eeSRH?O$DZ$|CkTfb&?G_eDNh>p=kvZ5`fTy% t_@c>5J%_7L&$fARa#76@M8rOj-?;UMP`bs<1YkB}@O1TaS?83{1OQb!uSx&_ literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^O(4v{1|++f1^zNHF#CDBIEGZrc{?|;sL4QtZRh{F zJNmcZ`1hf8VaKF|Ag9gudyLm^PB6(?3)`|mE>V!QR{l(6&LS?j%8 zwoIN>uKi@cLH53orY*jF|Ib?6sK5SpT}E)1VB&8E)tr~yk-uD`-|v577}Y!Db#77I zfd)wLhJn!`UkZg^g zGEV%?Gxuy|`^mQFvOAJFE`m=OT_^NMWKUpUV|v29ESp!)u>W{;$)x&k-;GQvG9+ew zPYIMO_@#krJxJSrXHUCLyZa_gUM=qMMEa`Kw|zS-|L!f{UF8|FFK}(5Zj!v-Yt7Du0Y~DY8;X!AhYjIg^Q9Gr7#{w08nLlP*yw5!T zAm8oRWx)4dHUCosP>bO5{!a}`C)`CGk;16(mj*vDdO%SG42^A%*P8a6tj?IgzR$wF op?WUQN$c7v=O2hV$~DMGWPM!5bjxlXFoQ98y85}Sb4q9e0El3tdjJ3c diff --git a/resources/assets/tile_blue.png b/resources/assets/old_tiles/tile_blue.png similarity index 100% rename from resources/assets/tile_blue.png rename to resources/assets/old_tiles/tile_blue.png diff --git a/resources/assets/tile_green.png b/resources/assets/old_tiles/tile_green.png similarity index 100% rename from resources/assets/tile_green.png rename to resources/assets/old_tiles/tile_green.png diff --git a/resources/assets/tile_orange.png b/resources/assets/old_tiles/tile_orange.png similarity index 100% rename from resources/assets/tile_orange.png rename to resources/assets/old_tiles/tile_orange.png diff --git a/resources/assets/tile_purple.png b/resources/assets/old_tiles/tile_purple.png similarity index 100% rename from resources/assets/tile_purple.png rename to resources/assets/old_tiles/tile_purple.png diff --git a/resources/assets/tile_red.png b/resources/assets/old_tiles/tile_red.png similarity index 100% rename from resources/assets/tile_red.png rename to resources/assets/old_tiles/tile_red.png diff --git a/resources/assets/tile_white.png b/resources/assets/old_tiles/tile_white.png similarity index 100% rename from resources/assets/tile_white.png rename to resources/assets/old_tiles/tile_white.png diff --git a/resources/assets/tile_yellow.png b/resources/assets/old_tiles/tile_yellow.png similarity index 100% rename from resources/assets/tile_yellow.png rename to resources/assets/old_tiles/tile_yellow.png diff --git a/resources/assets/simple assets/mine_a.png b/resources/assets/simple_assets/mine_a.png similarity index 100% rename from resources/assets/simple assets/mine_a.png rename to resources/assets/simple_assets/mine_a.png diff --git a/resources/assets/simple assets/mine_b.png b/resources/assets/simple_assets/mine_b.png similarity index 100% rename from resources/assets/simple assets/mine_b.png rename to resources/assets/simple_assets/mine_b.png diff --git a/resources/assets/simple assets/mine_f.png b/resources/assets/simple_assets/mine_f.png similarity index 100% rename from resources/assets/simple assets/mine_f.png rename to resources/assets/simple_assets/mine_f.png diff --git a/resources/assets/simple assets/mine_k.png b/resources/assets/simple_assets/mine_k.png similarity index 100% rename from resources/assets/simple assets/mine_k.png rename to resources/assets/simple_assets/mine_k.png diff --git a/resources/assets/new_grid.png b/resources/assets/simple_assets/new_grid.png similarity index 100% rename from resources/assets/new_grid.png rename to resources/assets/simple_assets/new_grid.png diff --git a/resources/assets/simple assets/sapper.png b/resources/assets/simple_assets/sapper.png similarity index 100% rename from resources/assets/simple assets/sapper.png rename to resources/assets/simple_assets/sapper.png diff --git a/resources/assets/time_numbers/number0.png b/resources/assets/time_numbers/time_number_0.png similarity index 100% rename from resources/assets/time_numbers/number0.png rename to resources/assets/time_numbers/time_number_0.png diff --git a/resources/assets/time_numbers/number1.png b/resources/assets/time_numbers/time_number_1.png similarity index 100% rename from resources/assets/time_numbers/number1.png rename to resources/assets/time_numbers/time_number_1.png diff --git a/resources/assets/time_numbers/number2.png b/resources/assets/time_numbers/time_number_2.png similarity index 100% rename from resources/assets/time_numbers/number2.png rename to resources/assets/time_numbers/time_number_2.png diff --git a/resources/assets/time_numbers/number3.png b/resources/assets/time_numbers/time_number_3.png similarity index 100% rename from resources/assets/time_numbers/number3.png rename to resources/assets/time_numbers/time_number_3.png diff --git a/resources/assets/time_numbers/number4.png b/resources/assets/time_numbers/time_number_4.png similarity index 100% rename from resources/assets/time_numbers/number4.png rename to resources/assets/time_numbers/time_number_4.png diff --git a/resources/assets/time_numbers/number5.png b/resources/assets/time_numbers/time_number_5.png similarity index 100% rename from resources/assets/time_numbers/number5.png rename to resources/assets/time_numbers/time_number_5.png diff --git a/resources/assets/time_numbers/number6.png b/resources/assets/time_numbers/time_number_6.png similarity index 100% rename from resources/assets/time_numbers/number6.png rename to resources/assets/time_numbers/time_number_6.png diff --git a/resources/assets/time_numbers/number7.png b/resources/assets/time_numbers/time_number_7.png similarity index 100% rename from resources/assets/time_numbers/number7.png rename to resources/assets/time_numbers/time_number_7.png diff --git a/resources/assets/time_numbers/number8.png b/resources/assets/time_numbers/time_number_8.png similarity index 100% rename from resources/assets/time_numbers/number8.png rename to resources/assets/time_numbers/time_number_8.png diff --git a/resources/assets/time_numbers/number9.png b/resources/assets/time_numbers/time_number_9.png similarity index 100% rename from resources/assets/time_numbers/number9.png rename to resources/assets/time_numbers/time_number_9.png