added different mine types recognition and creation in Minefield
This commit is contained in:
parent
be3e2ee942
commit
a90cc61586
43
minefield.py
43
minefield.py
@ -3,7 +3,9 @@ import ctypes #
|
|||||||
import agent as ag
|
import agent as ag
|
||||||
import project_constants as const
|
import project_constants as const
|
||||||
import tile as tl
|
import tile as tl
|
||||||
from mines_models import standard_mine as sm
|
from mine_models import standard_mine as sm
|
||||||
|
from mine_models import time_mine as tm
|
||||||
|
from mine_models import chained_mine as cm
|
||||||
|
|
||||||
|
|
||||||
tile_asset_options = {
|
tile_asset_options = {
|
||||||
@ -57,17 +59,13 @@ class Minefield:
|
|||||||
# load tile's data from json
|
# load tile's data from json
|
||||||
tile_data = data[f"{x},{y}"]
|
tile_data = data[f"{x},{y}"]
|
||||||
|
|
||||||
# create and add mine if there is one
|
# if there is a mine, create & assign new Mine object (type recognition included)
|
||||||
if tile_data["mine"] is not None:
|
if tile_data["mine"] is not None:
|
||||||
# TODO: check mine type and create suitable one
|
mine = self._create_mine(tile_data["mine"], x, y)
|
||||||
# JSON file doesn't represent new mine types yet, so every mine is a standard one at the moment
|
|
||||||
mine = sm.StandardMine((x, y))
|
|
||||||
self.matrix[x][y].mine = mine
|
self.matrix[x][y].mine = mine
|
||||||
|
|
||||||
self.matrix[x][y].color = tile_data["color"].upper()
|
self.matrix[x][y].color = tile_data["color"].upper()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def draw(self, window):
|
def draw(self, window):
|
||||||
# iterate through tiles
|
# iterate through tiles
|
||||||
for raw in self.matrix:
|
for raw in self.matrix:
|
||||||
@ -84,7 +82,6 @@ class Minefield:
|
|||||||
# TODO: blit appropriate mine type
|
# TODO: blit appropriate mine type
|
||||||
# current icons don't represent actual types, thus every mine has the same icon (temporary solution)
|
# current icons don't represent actual types, thus every mine has the same icon (temporary solution)
|
||||||
window.blit(mine_asset_options['A'], tile_screen_coords)
|
window.blit(mine_asset_options['A'], tile_screen_coords)
|
||||||
|
|
||||||
|
|
||||||
# draw the sapper
|
# draw the sapper
|
||||||
sapper_screen_coords = calculate_screen_position(self.agent.position[0], self.agent.position[1])
|
sapper_screen_coords = calculate_screen_position(self.agent.position[0], self.agent.position[1])
|
||||||
@ -107,7 +104,31 @@ class Minefield:
|
|||||||
self.agent.position[1] = int(self.agent.y)
|
self.agent.position[1] = int(self.agent.y)
|
||||||
ctypes.windll.user32.MessageBoxW(0, "Znowu się nie udało", "GAME OVER", 1)
|
ctypes.windll.user32.MessageBoxW(0, "Znowu się nie udało", "GAME OVER", 1)
|
||||||
# This part of the pop up message is just a temporary solution
|
# This part of the pop up message is just a temporary solution
|
||||||
|
|
||||||
# Here are defined functions that move our agent. They are being called in main when certain key is pressed
|
|
||||||
|
|
||||||
|
# distinguishes new mine's type and creates appropriate object
|
||||||
|
def _create_mine(self, mine_data, x, y):
|
||||||
|
mine_type = mine_data["mine_type"]
|
||||||
|
|
||||||
|
# TIME MINE
|
||||||
|
if mine_type == "time":
|
||||||
|
timer = mine_data["timer"]
|
||||||
|
mine = tm.TimeMine((x, y), int(timer))
|
||||||
|
|
||||||
|
# CHAINED MINE
|
||||||
|
elif mine_type == "chained":
|
||||||
|
if mine_data["predecessor"] is not None:
|
||||||
|
# locate predecessor
|
||||||
|
x, y = map(int, mine_data["predecessor"].split(','))
|
||||||
|
|
||||||
|
# get predecessor object and assign it to the new mine
|
||||||
|
predecessor = self.matrix[x][y].mine
|
||||||
|
mine = cm.ChainedMine((x, y), predecessor)
|
||||||
|
|
||||||
|
else:
|
||||||
|
mine = cm.ChainedMine((x, y))
|
||||||
|
|
||||||
|
# STANDARD MINE
|
||||||
|
else:
|
||||||
|
mine = sm.StandardMine((x, y))
|
||||||
|
|
||||||
|
return mine
|
||||||
|
@ -80,7 +80,7 @@ STRUCT_MINE_ATTRIBUTE_TYPES = {
|
|||||||
# ============== #
|
# ============== #
|
||||||
# ==== MAPS ==== #
|
# ==== MAPS ==== #
|
||||||
# ============== #
|
# ============== #
|
||||||
MAP_RANDOM_10x10 = os.path.join("resources", "minefields", "firstmap.json")
|
MAP_RANDOM_10x10 = os.path.join("resources", "minefields", "secondmap.json")
|
||||||
|
|
||||||
# ============== #
|
# ============== #
|
||||||
# === ASSETS === #
|
# === ASSETS === #
|
||||||
|
499
resources/minefields/secondmap.json
Normal file
499
resources/minefields/secondmap.json
Normal file
@ -0,0 +1,499 @@
|
|||||||
|
{
|
||||||
|
"0,0": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,1": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,2": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,3": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0,4": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0,5": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,6": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,7": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"0,8": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "0,3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0,9": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": {
|
||||||
|
"asset": "F",
|
||||||
|
"mine_type": "time",
|
||||||
|
"timer": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1,0": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,1": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1,2": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,3": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1,4": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,5": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,6": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,7": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,8": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"1,9": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,0": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,1": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2,2": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,3": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2,4": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,5": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2,6": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,7": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"2,8": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2,9": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,0": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,1": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": {
|
||||||
|
"asset": "F",
|
||||||
|
"mine_type": "time",
|
||||||
|
"timer": 19
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3,2": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,3": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "1,3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3,4": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,5": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,6": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"3,7": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,8": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"3,9": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,0": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,1": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,2": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4,3": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,4": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,5": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,6": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,7": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4,8": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"4,9": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,0": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,1": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "2,3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5,2": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,3": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,4": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "2,8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"5,5": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,6": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,7": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,8": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"5,9": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,0": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,1": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,2": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,3": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,4": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,5": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"6,6": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,7": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,8": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"6,9": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7,0": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "4,7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7,1": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,2": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,3": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,4": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,5": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7,6": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "F",
|
||||||
|
"mine_type": "time",
|
||||||
|
"timer": 39
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7,7": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,8": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"7,9": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,0": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,1": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "F",
|
||||||
|
"mine_type": "time",
|
||||||
|
"timer": 24
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8,2": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,3": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": {
|
||||||
|
"asset": "A",
|
||||||
|
"mine_type": "standard"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8,4": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,5": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,6": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,7": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"8,8": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "3,6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"8,9": {
|
||||||
|
"color": "WHITE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,0": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,1": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,2": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,3": {
|
||||||
|
"color": "BLUE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,4": {
|
||||||
|
"color": "YELLOW",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,5": {
|
||||||
|
"color": "GREEN",
|
||||||
|
"mine": {
|
||||||
|
"asset": "B",
|
||||||
|
"mine_type": "chained",
|
||||||
|
"predecessor": "0,4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"9,6": {
|
||||||
|
"color": "PURPLE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,7": {
|
||||||
|
"color": "ORANGE",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,8": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"9,9": {
|
||||||
|
"color": "RED",
|
||||||
|
"mine": null
|
||||||
|
},
|
||||||
|
"agent_starting_position": "0,0"
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user