Untitled
unknown
python
2 years ago
5.3 kB
4
Indexable
import os from typing import List from pick import pick import json all_maps = [] workflow = {} class Map_worker: def map_checker(): for file in os.listdir(): if file.endswith(".json") and not file in all_maps: all_maps.append(os.path.join(file)) return input("Было найдено карт с домами: {}\nДоступны данные карты: {}\nНажмите любую клавишу для продолжения"\ .format(len(set(all_maps)), set(all_maps))) def choose(self): global all_maps os.system('cls||clear') Map_worker.map_checker() os.system('cls||clear') while True: selected, index = pick(['Создать новую карту', 'Редактировать текущую'\ , 'Выйти из программы'], 'Набор функций:') if index == 0: Map_worker.create_map() elif index == 1: Map_worker.map_selection() elif index == 2: os.system('cls||clear') exit() def create_map(): global map_list, name_of_file name_of_file = input("Введите имя для карты без расширения\n") + ".json" if name_of_file not in all_maps: workflow = {} size = int(input("Введите размерность карты: ")) map_list = [[0] * size for _ in range(size)] workflow = {"houses": [], "size": size} with open(name_of_file, "w") as file: json.dump(workflow, file) Building.build() else: print("Это имя занято :(") Map_worker.create_map() def read_map(): global name_of_file if name_of_file in all_maps: with open(name_of_file, "rt") as map_file: conf_data = json.loads(map_file.read()) map_configuration = conf_data["map_conf"] buildings = conf_data["buildings"] rows = map_configuration["size_row"] def map_selection(): global all_maps, name_of_file, map_list name_of_file, row = pick(all_maps, "Выберите карту") if name_of_file in all_maps: with open(name_of_file, 'r') as j: workflow.update(json.loads(j.read())) size = workflow["size"] map_list = [[0] * size for _ in range(size)] cells = [] for i in range(len(workflow["houses"])): cells.append(list(workflow["houses"][i].keys())[0]) for i in cells: map_list[int(i[0])][int(i[1])] = 1 Map_worker.action() else: print("Такой файл не найден") def action(): global name_of_file, map_list name, index = pick(["Создать дом", "Удалить дом"], "Выберите действие:") if index == 0: Building.build() if index == 1: Building.delete() class Building: def __init__(self, height: int, area: int, floor: int): self.height = height self.area = area self.floor = floor def write_json(new_data): global name_of_file with open(name_of_file,'r+') as file: file_data = json.load(file) file_data["houses"].append(new_data) file.seek(0) json.dump(file_data, file, indent = 4) def build(*wargs): selected, row_1 = pick(map_list, 'Выберите область для редактирования: ') selected, row_2 = pick(map_list[row_1], 'Выберите дом: ') if map_list[row_1][row_2] == 1: input("Тут уже есть дом, выберите другую клетку") Building.build() height = input("Введите высоту дома: ") area = input("Введите площадь основания дома: ") floor = input("Введите количество этажей дома: ") temp = Building(height, area, floor) temp_data = {} temp_data[str(row_1) + str(row_2)] = temp.__dict__ Building.write_json(temp_data) Map_worker.choose('') def delete(): global name_of_file, map_list print(name_of_file) with open(name_of_file, encoding="utf8") as file: dict = json.load(file) title = 'Выберите колонку с домом: ' option, row = pick(map_list, title) title = 'Выберите дом: ' option, column = pick(map_list[int(row)], title) if map_list[row][column] == 0: print("Тут ничего нет, выберите другую клетку") Building.delete() for i in range(len(dict["houses"])): if str(row) + str(column) == list(dict["houses"][i].keys())[0]: dict["houses"].pop(i) with open(name_of_file, "w") as file: json.dump(dict, file) Map_worker.choose('') a = Map_worker() print(a.choose())
Editor is loading...