From d1160a66e010a2d9915a4a0abefd31a614b7e8b7 Mon Sep 17 00:00:00 2001 From: dmitrium12 Date: Sat, 24 Dec 2022 14:23:20 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B9=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B8=D0=B2=D0=B5=D0=BD=D1=82=D0=B0=20=D0=B8=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B1=D0=B8=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E=20=D0=B2=D0=B5=D0=B7=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=9F?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=D1=81=D1=82=D0=B8=D0=BB=20=D0=BA=D0=BE=D0=B4?= =?UTF-8?q?.=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=BB=D0=B8=D1=88?= =?UTF-8?q?=D0=BD=D0=B5=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 4 ++++ modules/DB.py | 2 +- modules/GameMenu.py | 4 ++-- modules/Mathematics.py | 53 +++++++++++++++++++++++++++++++++++++++++ styles/Retro.ttf | Bin 42256 -> 0 bytes test.py | 4 ++++ 6 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 modules/Mathematics.py delete mode 100644 styles/Retro.ttf create mode 100644 test.py diff --git a/main.py b/main.py index d559392..fd1789b 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,13 @@ import pygame +from loguru import logger from modules.Game import Game from modules.GameMenu import menu +from modules.Mathematics import start_calculating def main(): + logger.info("Игра запущена") + start_calculating() running = True show_menu = True while running: diff --git a/modules/DB.py b/modules/DB.py index 85e32a2..5cb0ca8 100644 --- a/modules/DB.py +++ b/modules/DB.py @@ -5,7 +5,7 @@ class UseDB: def __init__(self, collection_name): self.series_collection = None self.client = MongoClient('localhost', 27017) - self.db = self.client['stepik'] + self.db = self.client['toads'] self.series_collection = self.db[collection_name] def find_document(self, elements): diff --git a/modules/GameMenu.py b/modules/GameMenu.py index 7c91e44..8f81332 100644 --- a/modules/GameMenu.py +++ b/modules/GameMenu.py @@ -4,10 +4,10 @@ from pygame import * def menu(): init() - DISPLAYSURF = display.set_mode((480, 600)) + DISPLAYPORT = display.set_mode((480, 600)) display.set_caption('The Lonely Shooter') background = image.load('styles/background.jpeg').convert() - DISPLAYSURF.blit(background, background.get_rect()) + DISPLAYPORT.blit(background, background.get_rect()) display.update() while True: events = event.poll() diff --git a/modules/Mathematics.py b/modules/Mathematics.py new file mode 100644 index 0000000..5a01d7d --- /dev/null +++ b/modules/Mathematics.py @@ -0,0 +1,53 @@ +from modules.DB import UseDB +from loguru import logger +import random + + +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): + if well: + db = UseDB("events") + not_well_events = db.find_document({"well": False}) + for i in not_well_events: + db.update_document({"_id": i["_id"]}, {"probability": i["probability"] + 5}) + well_events = db.find_document({"well": True}) + cooficent = len(not_well_events) * 5 / len(well_events) + for i in well_events: + db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - cooficent}) + else: + db = UseDB("events") + well_events = db.find_document({"well": True}) + for i in well_events: + db.update_document({"_id": i["_id"]}, {"probability": i["probability"] + 5}) + not_well_events = db.find_document({"well": False}) + cooficent = len(well_events) * 5 / len(not_well_events) + for i in not_well_events: + db.update_document({"_id": i["_id"]}, {"probability": i["probability"] - cooficent}) + + +def start_calculating(): + logger.remove() + logger.add("conf/log.log", level="INFO") + logger.info("Валидация началась") + 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.info("Валидация игры успешно прошла") diff --git a/styles/Retro.ttf b/styles/Retro.ttf deleted file mode 100644 index 02baf66ce725bb8b059aef6547c5a48f510f01f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42256 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 YFA)9V>qK7$%@-lhi+J`D=zKN)UwWoifB*mh diff --git a/test.py b/test.py new file mode 100644 index 0000000..88834fc --- /dev/null +++ b/test.py @@ -0,0 +1,4 @@ +from modules.Mathematics import recalculation_events, get_random_event + +event = get_random_event() +recalculation_events(event["well"])