Files
toads/modules/Mathematics.py
T

84 lines
3.5 KiB
Python

from modules.DB import UseDB
from loguru import logger
import random
import configparser
def get_random_event():
db = UseDB("events")
response = db.find_document({})
random_event = random.choices([i["_id"] for i in response],
weights=[i["probability"] for i in response])
return db.find_document({"_id": random_event[0]})[0]
def recalculation_events(well):
difficulties = {
"Простая": [5, 5],
"Средняя": [5, 2],
"Сложная": [5, 1],
"Проигрывать весело": [10, 1]
}
config = configparser.ConfigParser()
config.read("conf/config.ini")
difficulty = config['Settings']['difficulty']
db = UseDB("events")
not_well_events = db.find_document({"well": False})
well_events = db.find_document({"well": True})
if well:
for i in not_well_events:
db.update_document({"_id": i["_id"]},
{"probability": i["probability"] + difficulties[difficulty][0]})
ratio = len(not_well_events) * difficulties[difficulty][0] / len(well_events)
for i in well_events:
db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - ratio})
else:
for i in well_events:
db.update_document({"_id": i["_id"]},
{"probability": i["probability"] + difficulties[difficulty][1]})
ratio = len(well_events) * difficulties[difficulty][1] / len(not_well_events)
for i in not_well_events:
db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - ratio})
def start_calculating():
logger.debug("Валидация началась")
db = UseDB("events")
response = db.find_document({})
sum_percent_probability = sum([i["probability"] for i in response])
sum_percent_probability_in_events = sum([sum(i["probability_consequence"]) for i in response])
if sum_percent_probability != 100:
logger.critical("Сумма вероятностей всех ивентов не равна 100, это плохо, не надо так")
quit(0)
if sum_percent_probability_in_events != len(response) * 100:
logger.critical("Проблема в каком-то ивенте, сумма вероятностей не правильная")
quit(0)
for i in response:
if not (len(i["variants"]) == len(i["consequence"]) == len(i["probability_consequence"])):
logger.critical(f"Ошибка в ивенте {i['name']}. Разница в длинах variants, consequence "
f"и probability_consequence")
quit(0)
logger.debug("Валидация игры успешно прошла")
def field_generation():
difficulties = {
"Простая": [40, 30, 15, 10, 5],
"Средняя": [30, 30, 25, 10, 5],
"Сложная": [30, 40, 15, 10, 5],
"Проигрывать весело": [5, 50, 20, 10, 15]
}
config = configparser.ConfigParser()
config.read("conf/config.ini")
difficulty = config['Settings']['difficulty']
import random
board = []
for _ in range(8):
line = []
for _ in range(13):
# 0 - ничего, 1 - мина, любое другое число - указывает на количество получаемых мух
variant = random.choices(['0', '1', '2', '5', '10'], weights=difficulties[difficulty])
line.append(int(variant[0]))
board.append(line)
return board