class Menu(): def __init__(self,*args): self.menu = DiccionarioOrdenado() i = 1 for opcion in args: self.menu.append(str(i),opcion) i+=1 def revisar_input(self): encontrado = False for nro,opcion in self.menu: if self.input == nro: encontrado = True return encontrado def display(self): # mostrar menu print("Selecciona una opción:\n") for nro,opcion in self.menu: print(nro + ". " + opcion) # revisar input self.input = (input()) while not Menu.revisar_input(self): print("Error, ingresa un numero correcto\n") self.input = (input()) return self.menu[self.input] def append(self, numero, opcion): # permite agregar opciones manualmente self.menu.append(numero,opcion) return opcion def __eq__(self, other): return int(self.input) == other
def airports_to_dict(): with open("Archivos/random_airports.csv") as f: x = csv.reader(f, delimiter=",") total = DiccionarioOrdenado() for line in x: linea = MiLista(*line) total.append(linea[0], linea[1]) total.pop() f.close() return total
def csv_to_dict_of_dicts(archivo): with open("Archivos/" + archivo) as f: x = csv.reader(f, delimiter=",") total = DiccionarioOrdenado() header = None for line in x: if not header: header = MiLista(*line) header.pop() else: linea = MiLista(*line) pais = linea.pop() info = DiccionarioOrdenado() i = 0 for j in header: info.append(j, linea[i]) i += 1 total.append(pais, info) return total
def borders_to_dict(): with open("Archivos/borders.csv") as f: x = csv.reader(f, delimiter=";") total = DiccionarioOrdenado() for line in x: linea = MiLista(*line) total.append(linea[0], linea[1]) total.pop() for key, pais2 in total: if type(pais2) != MiLista: total[key] = MiLista(pais2) return total
def load_to_mundo(): with open("Archivos/load.csv", "r") as f: x = csv.reader(f, delimiter=";") mundo = DiccionarioOrdenado() firstline = False for line in x: linea = MiLista(*line) if not firstline: firstline = True if linea[0] == "None": dia_descubrimiento_infeccion = None else: dia_descubrimiento_infeccion = int(linea[0]) if linea[1] == "None": dia_descubrimiento_cura = None else: dia_descubrimiento_cura = int(linea[1]) progreso_al_dia = int(linea[2]) poseedores_de_cura = MiLista() if len(linea[3]) != 2: x = linea[3][1:-1].replace(" ", "").split(",") poseedores_de_cura = MiLista(*x) cola_propuestas = DiccionarioOrdenado() if len(linea[4]) != 2: x = linea[4][1:-1].replace(" ", "").split(",") for key, valor in x.split(":"): cola_propuestas[key] = valor continue nombre, habitantes, infectados, infeccion, muertos, estado_aeropuerto, estado_frontera, mascarilla, dia_actual, cura = linea[ 0], int(linea[1]), int(linea[4]), (linea[5]), int( linea[6]), bool(linea[7]), bool(linea[8]), bool( linea[9]), int(linea[10]), bool(linea[11]) frontera = MiLista() if len(linea[2]) != 2: x = linea[2][1:-1].replace(" ", "").split(",") frontera = MiLista(*x) aeropuerto = MiLista() if len(linea[3]) != 2: x = linea[3][1:-1].replace(" ", "").split(",") aeropuerto = MiLista(*x) if linea[12] == "None": dia_extincion = None else: dia_extincion = int(linea[12]) if linea[13] == "None": dia_inicio_infeccion = None else: dia_inicio_infeccion = int(linea[13]) if infeccion != "None" or infeccion: infeccion = Infeccion(infeccion) else: infeccion = None pais = Pais(nombre, habitantes, frontera, aeropuerto, infectados, infeccion, muertos, estado_aeropuerto, estado_frontera, mascarilla, dia_actual, cura, dia_extincion, dia_inicio_infeccion) mundo.append(nombre, pais) return mundo, dia_descubrimiento_infeccion, dia_descubrimiento_cura, progreso_al_dia, poseedores_de_cura, cola_propuestas
from Archivos import connections_generator from Clases.Infeccion import Infeccion from EstructurasDeDatos.DiccionarioOrdenado import DiccionarioOrdenado from EstructurasDeDatos.MiLista import MiLista from ManejoDeArchivos.custom_csv import csv_to_dict_of_dicts, airports_to_dict from ManejoDeArchivos.custom_csv import borders_to_dict, mundo_to_csv from ManejoDeArchivos.custom_csv import load_to_mundo connections_generator.generate_connections() menupartida = Menu("Iniciar partida nueva", "Cargar partida") menupartida.display() # mundo se cargará con informacion nueva o de una aprtida anterior, segun # corresponda mundo = DiccionarioOrdenado() if menupartida == 1: dia = 0 connections_generator.generate_connections() grafo_tierra = borders_to_dict() grafo_aire = airports_to_dict() pais_poblacion = csv_to_dict_of_dicts("population.csv") # se crean todos los paises con sus respectivos habitantes y fronteras. # (estado inicial) for pais, informacion in pais_poblacion: mundo.append(pais, Pais(nombre=pais, habitantes=int(informacion[ "Poblacion"]), frontera=grafo_tierra[pais], aeropuerto=grafo_aire[pais]))
def __init__(self,*args): self.menu = DiccionarioOrdenado() i = 1 for opcion in args: self.menu.append(str(i),opcion) i+=1