Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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]))
Beispiel #7
0
 def __init__(self,*args):
     self.menu = DiccionarioOrdenado()
     i = 1
     for opcion in args:
         self.menu.append(str(i),opcion)
         i+=1