added hash function and hash enums

This commit is contained in:
s452645 2021-05-20 00:44:06 +02:00
parent 7fe9e0958c
commit 096d506553
9 changed files with 100 additions and 10 deletions

View File

@ -2,9 +2,9 @@ import pygame
import project_constants as const
from mine_models.standard_mine import StandardMine
from mine_models.chained_mine import ChainedMine
from mine_models.time_mine import TimeMine
from mines.mine_models.standard_mine import StandardMine
from mines.mine_models.chained_mine import ChainedMine
from mines.mine_models.time_mine import TimeMine
# ================================= #

View File

@ -7,9 +7,9 @@ import project_constants as const
from tile import Tile
# import mine models
from mine_models.standard_mine import StandardMine
from mine_models.time_mine import TimeMine
from mine_models.chained_mine import ChainedMine
from mines.mine_models.standard_mine import StandardMine
from mines.mine_models.time_mine import TimeMine
from mines.mine_models.chained_mine import ChainedMine
class JsonGenerator:

View File

@ -5,13 +5,11 @@ import random
# other files of this project
import project_constants as const
import minefield as mf
from mine_models.time_mine import TimeMine
from mines.mine_models.time_mine import TimeMine
import searching_algorithms.a_star as a_star
from display_assets import blit_graphics
from project_constants import HIGHLIGHT, INPUT_ROW, INPUT_COLUMN, RANDOM_BUTTON, OK_BUTTON
from ui.ui_components_list import UiComponentsList
def _get_next_agent_position(action, agent):

View File

@ -1,7 +1,7 @@
import agent as ag
import project_constants as const
import tile as tl
from mine_models.time_mine import TimeMine
from mines.mine_models.time_mine import TimeMine
import json_generator as jg

92
mines/hash_function.py Normal file
View File

@ -0,0 +1,92 @@
from enum import Enum
class Wire(Enum):
BLUE = 1
GREEN = 2
RED = 3
class TypeHash(Enum):
TIME = 90
CHAINED = 12
STANDARD = 0
class DangerClassHash(Enum):
BIG_BANG = 64
WEAPON_OF_MASS_DESTRUCTION = 32
RADIOACTIVE = 16
CASUAL_DEVASTATOR = 8
CHERRY_BOMB = 0
class SeriesHash(Enum):
TCH_2990TONER = 65
TCH_2990INKJET = 64
TVY_2400H = 55
SWX_5000 = 53
SWX_4000 = 50
WORKFORCE_3200 = 43
FX_500 = 40
TVY_2400 = 23
class IndicatorHash(Enum):
RED = 10
YELLOW = 8
BLUE = 5
GREEN = 2
WHITE = 0
class SpecificityHash(Enum):
ANTI_AIRCRAFT = 55
ANTI_PERSONNEL = 43
DEPTH_MINE = 37
ANTI_TANK = 26
PROXIMITY_MINE = 18
PRESSURE_MINE = 9
FRAGMENTATION_MINE = 0
# ASSUMING ALL ENUMS' MEMBERS ARE IN DESCENDING ORDER
MAX_VALUE = list(TypeHash)[0].value \
+ list(DangerClassHash)[0].value \
+ list(SeriesHash)[0].value \
+ list(IndicatorHash)[0].value \
+ list(SpecificityHash)[0].value
def _get_wire_color(hash_sum):
if hash_sum < 0.4 * MAX_VALUE:
return Wire.BLUE
elif 0.4 * MAX_VALUE < hash_sum <= 0.6 * MAX_VALUE:
return Wire.GREEN
else:
return Wire.RED
# STRING ARGUMENTS
def get_correct_wire_str(mine_type: str, danger_cls: str, series: str, indicator: str, specificity: str):
type_hash = TypeHash[mine_type.upper()].value
danger_cls_hash = DangerClassHash[danger_cls.upper()].value
series_hash = SeriesHash[series.upper()].value
indicator_hash = IndicatorHash[indicator.upper()].value
specificity_hash = SpecificityHash[specificity.upper()].value
hash_sum = type_hash + danger_cls_hash + series_hash + indicator_hash + specificity_hash
return _get_wire_color(hash_sum)
# ENUM ARGUMENTS
def get_correct_wire_enums(
mine_type: TypeHash,
danger_cls: DangerClassHash,
series: SeriesHash,
indicator: IndicatorHash,
specificity: SpecificityHash):
hash_sum = mine_type.value + danger_cls.value + series.value + indicator.value + specificity.value
return _get_wire_color(hash_sum)