diff --git a/conf/debug_functions.py b/conf/debug_functions.py index 5c98c7f..cde4b70 100644 --- a/conf/debug_functions.py +++ b/conf/debug_functions.py @@ -1,20 +1,27 @@ -def add_new_event(): - name = input("Введите название ивента\n") - description = input("Введите описание ивента\n") +def add_new_event() -> dict: + """ + Создаёт новый ивент в систему + + :return: Dict - json объект, в нём либо ошибка, либо созданный элемент + """ + name = input("Введите название ивента\n") # получаю name + description = input("Введите описание ивента\n") # получаю description try: - well = input("Этот ивент хороший?\n") - if well == "True": + well = input("Этот ивент хороший?\n") # получаю well + if well == "True": # временный костыль well = True else: well = False + # TODO заменить костыль except Exception as e: - return e - variants = input("Введите варианты развития ивентов, разделённые */!/*\n").split("*/!/*") + return {"err": e} + variants = input("Введите варианты развития ивентов, разделённые */!/*\n").split("*/!/*") # получаю variants consequence = input("Введите функции которые выполнятся при варианте ивента, " - "разделённые */!/*\n").split("*/!/*") - probability_consequence = [int(i) for i in input("Введите вероятности вариантов ивентов," - " разделённые */!/*\n").split("*/!/*")] - if len(variants) == len(consequence) == len(probability_consequence): + "разделённые */!/*\n").split("*/!/*") # получаю consequence + probability_consequence = [int(i) for i in input("Введите вероятности вариантов" + " ивентов, разделённые */!/*\n" + "").split("*/!/*")] # получаю probability_consequence + if len(variants) == len(consequence) == len(probability_consequence): # если все длины сошлись response = { "name": name, "description": description, @@ -23,18 +30,18 @@ def add_new_event(): "probability_consequence": probability_consequence, "probability": 50, "well": well - } - from modules.DB import UseDB - db = UseDB("events") - db.insert_document(response) - return response + } # собираю json объект для сохранения + from modules.DB import UseDB # импортирую базу + db = UseDB("events") # соединяюсь + db.insert_document(response) # записываю объект + return response # возвращаю его else: - return "Длины variants, consequence и probability_consequence не равны" + return {"err": "Длины variants, consequence и probability_consequence не равны"} def main(): while True: - answer = input("Что сегодня сделаем?\n") + answer = input("Что сегодня сделаем?\n") # получаем вопрос if answer == "добавить эвент": print(add_new_event()) else: diff --git a/modules/DB.py b/modules/DB.py index c4baad3..1b7c3f9 100644 --- a/modules/DB.py +++ b/modules/DB.py @@ -2,20 +2,53 @@ from pymongo import MongoClient class UseDB: + """ + Класс для работы с базой данных + """ def __init__(self, collection_name): self.series_collection = None self.client = MongoClient('localhost', 27017) self.db = self.client['toads'] self.series_collection = self.db[collection_name] - def find_document(self, elements): + def find_document(self, elements: dict) -> list: + """ + Функция поиска элемента в базе данных + + :param elements: dict - элемент, который надо искать + + :return: list - сам элемент + """ return [x for x in self.series_collection.find(elements)] - def insert_document(self, data): + def insert_document(self, data: dict) -> list: + """ + Функция добавления элемента в базу данных + + :param data: dict - элемент, который надо добавить + + :return: list - созданный элемент + """ return self.series_collection.insert_one(data).inserted_id - def update_document(self, query_elements, new_values): + def update_document(self, query_elements: dict, new_values: dict) -> None: + """ + Функция обновления элемента в базе данных + + :param query_elements: dict - элемент, который надо обновить + + :param new_values: dict - элемент, этот самый элемент + + :return: None + """ self.series_collection.update_one(query_elements, {'$set': new_values}) - def del_document(self, query_elements): + def del_document(self, query_elements: dict) -> None: + """ + Функция удаления элемента в базу данных + + :param query_elements: dict - элемент, который надо удалить + + :return: None + """ self.series_collection.delete_one(query_elements) diff --git a/modules/GameMenu.py b/modules/GameMenu.py index bde8423..dc9690a 100644 --- a/modules/GameMenu.py +++ b/modules/GameMenu.py @@ -3,29 +3,44 @@ import pygame_menu import configparser -def set_difficulty(value, _): +def set_difficulty(value: dict, _) -> None: + """ + Функция сохраняет сложность временную переменную + + :param value: dict - тут лежит, всё что программа знает о сложности + + :param _: мы не знаем, что это такое, если бы мы знали, что это такое, но мы не знаем, что это такое + + :return: None + """ global difficulty difficulty = value[0][0] -def start_the_game(): - config = configparser.ConfigParser() - config.read('conf/config.ini') - config['Settings']['difficulty'] = difficulty - with open('conf/config.ini', 'w') as configfile: - config.write(configfile) - menu.toggle() +def start_the_game() -> None: + """ + Функция запуска игры + + :return: None + """ + config = configparser.ConfigParser() # создаю объект ConfigParser + config.read('conf/config.ini') # читаю файл + config['Settings']['difficulty'] = difficulty # перезаписываю сложность + with open('conf/config.ini', 'w') as configfile: # открываю файл для записи + config.write(configfile) # записываю + menu.toggle() # останавливаю меню -difficulty = "Простая" -pygame.init() -surface = pygame.display.set_mode((600, 400)) -mytheme = pygame_menu.themes.THEME_DARK.copy() +difficulty = "Простая" # временная переменная для сложности +pygame.init() # запускаю pygame +surface = pygame.display.set_mode((600, 400)) # создаю полотно +mytheme = pygame_menu.themes.THEME_DARK.copy() # создаю свою тему mytheme.background_color = pygame_menu.baseimage.BaseImage(image_path='styles/background.jpg') -menu = pygame_menu.Menu('Welcome', 600, 400, theme=mytheme) -menu.add.label("Сложность") +# натягиваю свой background +menu = pygame_menu.Menu('Welcome', 600, 400, theme=mytheme) # создаю меню +menu.add.label("Сложность") # добавляю label menu.add.selector('', [('Простая', 1), ('Средняя', 2), ('Сложная', 3), ('Проигрывать весело', 4)], - onchange=set_difficulty) -menu.add.button('Play', start_the_game) -menu.add.button('Quit', pygame_menu.events.EXIT) -menu.mainloop(surface) + onchange=set_difficulty) # добавляю selector с выбором сложности +menu.add.button('Play', start_the_game) # добавляю кнопку начала игры +menu.add.button('Quit', pygame_menu.events.EXIT) # добавляю кнопку выхода +menu.mainloop(surface) # запускаю меню diff --git a/test.py b/test.py index d6478fc..3d280fe 100644 --- a/test.py +++ b/test.py @@ -5,4 +5,4 @@ for i in db.find_document({}): print(i) # db.del_document({"name": i["name"]}) # db.update_document({"name": "test not bad"}, {"probability": 50}) -db.update_document({"name": "test bad "}, {"probability": 50}) \ No newline at end of file +db.update_document({"name": "test bad "}, {"probability": 50})