Projekt_Sztuczna_Inteligencja/project_constants.py

191 lines
4.8 KiB
Python
Raw Normal View History

import pygame
2021-03-12 11:45:27 +01:00
import os
2021-04-14 23:45:34 +02:00
from enum import Enum
# VARIABLE STARTS WITH ... IF IT'S
# V a value like a string or an int
# STRUCT a list or other structure of values
# ASSET a png file (or other graphic format)
# MAP a JSON map file
2021-03-11 18:51:43 +01:00
# ================= #
# === VARIABLES === #
# ================= #
V_NAME_OF_WINDOW = "MineFusion TM"
2021-03-12 11:45:27 +01:00
ASSETS_DIR = os.path.join("resources", "assets")
2021-03-16 06:41:40 +01:00
V_FPS = 60
ACTION_INTERVAL = 1 # interval between two actions in seconds
V_TILE_SIZE = 60
V_GRID_VER_TILES = V_GRID_HOR_TILES = 10 # vertical (number of rows), horizontal (number of columns)
V_SCREEN_PADDING = 10
2021-04-14 12:01:20 +02:00
V_WINDOW_HEIGHT = V_TILE_SIZE * V_GRID_VER_TILES
V_WINDOW_WIDTH = V_TILE_SIZE * V_GRID_HOR_TILES
SCREEN = pygame.display.set_mode(
(
V_TILE_SIZE * V_GRID_HOR_TILES + 2 * V_SCREEN_PADDING, # screen width
V_TILE_SIZE * V_GRID_HOR_TILES + 2 * V_SCREEN_PADDING # screen height
)
)
2021-04-14 23:45:34 +02:00
# =============== #
# ==== ENUMS ==== #
# =============== #
class Direction(Enum):
2021-04-17 16:45:20 +02:00
UP = 0
RIGHT = 1
DOWN = 2
LEFT = 3
2021-04-14 23:45:34 +02:00
def next(self):
v = (self.value + 1) % 4
return Direction(v)
def previous (self):
v = (self.value - 1) % 4
return Direction(v)
2021-04-14 23:45:34 +02:00
class Action(Enum):
2021-04-17 16:45:20 +02:00
ROTATE_LEFT = 0
ROTATE_RIGHT = 1
GO = 2
2021-04-14 23:45:34 +02:00
# =============== #
# === STRUCTS === #
# =============== #
# # NORMAL STRUCTS
# # USED BY JSON GENERATOR
2021-03-27 18:30:46 +01:00
# used to generate random tile colors
STRUCT_TILE_COLORS = ["BLUE", "GREEN", "ORANGE", "PURPLE", "RED", "WHITE", "YELLOW"]
2021-03-27 18:30:46 +01:00
# used to generate random mines and create not random mines
STRUCT_MINE_TYPES = ["standard", "chained", "time"]
STRUCT_MINE_ASSET_TYPES = ['A', 'B', 'F', 'K']
2021-03-27 18:30:46 +01:00
# values that are predefined for certain mine types and can't be changed by changing any parameters
# put here all dict keys that have hardcoded values and are not supposed to be editable
HARDCODED_VALUES = ["asset", "mine_type"]
2021-03-27 18:30:46 +01:00
# default values and key-value pairs for JsonGenerator class
# when defining a new mine it's dict template must be put here
STRUCT_MINE_ATTRIBUTES = {
"standard": {
"asset": STRUCT_MINE_ASSET_TYPES.__getitem__(0),
"mine_type": "standard"
},
"chained": {
"asset": STRUCT_MINE_ASSET_TYPES.__getitem__(1),
"mine_type": "chained",
"predecessor": None
},
"time": {
"asset": STRUCT_MINE_ASSET_TYPES.__getitem__(2),
"mine_type": "time",
"timer": None
}
}
2021-03-27 18:30:46 +01:00
# types of attributes the mines have
# used for random mine generation
# int - integral number
# (int, int) - index "row,column" where row=int and column=int (used exclusively for chained mine)
2021-04-14 12:01:20 +02:00
STRUCT_MINE_ATTRIBUTE_TYPES = {
"standard": [],
"chained": [],
"time": [int]
}
# ============== #
# ==== MAPS ==== #
# ============== #
2021-04-14 12:01:20 +02:00
MAP_RANDOM_10x10 = os.path.join("resources", "minefields", "secondmap.json")
2021-04-14 12:01:20 +02:00
2021-03-11 18:51:43 +01:00
# ============== #
# === ASSETS === #
# ============== #
ASSET_BACKGROUND = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "new_grid.png")),
2021-04-14 12:01:20 +02:00
(V_WINDOW_WIDTH, V_WINDOW_WIDTH)
2021-03-11 18:51:43 +01:00
)
ASSET_SAPPER = pygame.transform.scale(
2021-04-14 12:01:20 +02:00
pygame.image.load(os.path.join(ASSETS_DIR, "robot_sapper.png")),
(V_TILE_SIZE, V_TILE_SIZE)
)
ASSET_WALL = pygame.transform.scale(
pygame.image.load(os.path.join(ASSETS_DIR, "brick_wall.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_MINE_A = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "mine_a.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_MINE_B = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "mine_b.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_MINE_F = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "mine_f.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_MINE_K = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "mine_k.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_ORANGE = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_orange.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_RED = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_red.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_BLUE = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_blue.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_PURPLE = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_purple.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_GREEN = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_green.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_YELLOW = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_yellow.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
2021-03-11 18:51:43 +01:00
)
ASSET_TILE_WHITE = pygame.transform.scale(
2021-03-12 11:45:27 +01:00
pygame.image.load(os.path.join(ASSETS_DIR, "tile_white.png")),
2021-03-12 09:55:59 +01:00
(V_TILE_SIZE, V_TILE_SIZE)
)