예제 #1
0
def arg():  # Fonction d'entrée des arguments
    def errMsg():
        print(f"{Icons.warn}Il y a pas de map sauvegardée portant ce nom")
        print(
            f'{Icons.info}Créer une nouvelle map avec "python main.py -n <mapName> <x> <y>"'
        )

        return (False)

    args = {
        "prefix":
        ((("-a", "--add"), '<mapName> "[(x, y), ...]"'),
         (("-A", "--add-entity"), "<mapName> <type> <x> <y>"),
         (("-d", "--display"), "<mapName>"), (("-n", "--new"),
                                              "<mapName> <x> <y>"),
         (("-r", "--reset"), "<mapName>"), (("-s", "--start"), "<mapName>"),
         (("-h", "--help"), ""), (("-v", "--version"), "")),
        "descriptions":
        ("\tInsérer une ou plusieurs cellules", "Insérer une entité",
         "\t\tAfficher la map enregistrée", "\t\tCréer une nouvelle map",
         "\t\t\tRéinitialiser une map", "\t\t\tJouer une map\n",
         "\t\t\t\tAffichage du menu d'aide",
         "\t\t\t\tAffichage de la version du programme\n")
    }

    if (argv[1] in args["prefix"][-2][0]):
        print(" Le jeu de la vie de John Horton Conway")
        print(" Lancement: python main.py <arg>\n")
        print(" Arguments:")

        for i in range(0, len(args["prefix"])):
            print(
                f' {args["prefix"][i][0][0]}, {args["prefix"][i][0][1]} {args["prefix"][i][1]}\t{args["descriptions"][i]}'
            )

    elif (argv[1] in args["prefix"][-1][0]):
        print(" conwayGameOfLife.py 2.1 - Florian Cardinal\n")

    if (not (argv[1] in args["prefix"][-2][0])
            and not (argv[1] in args["prefix"][-1][0])):
        try:
            map = Map(str(argv[2]))

        except Exception:
            print(f"{Icons.warn}Aucun nom de map n'a été entrer")

            return (False)

        if (argv[1] in args["prefix"][0][0]):
            if (map.loaded):
                try:
                    map.addCells(eval(argv[3]))
                    map.display()

                except Exception:
                    print(f"{Icons.warn}Coordonnées manquantes ou incorrectes")

                    return (False)

            else:
                return (errMsg())

        elif (argv[1] in args["prefix"][1][0]):
            if (map.loaded):
                entities = Entity()

                try:
                    x = int(argv[4])
                    y = int(argv[5])

                except Exception:
                    print(
                        f"{Icons.warn}Les coordonnées de position sont incorrectes"
                    )

                    return (False)

                if (entities.loaded):
                    if (argv[3] in entities.getEntitiesName()):
                        map.addCells(entities.get(argv[3], (x, y)))
                        map.display()

                    else:
                        print(f"{Icons.warn}Entitée non reconnue")

                else:
                    print(f"{Icons.warn}Le fichier d'entités est introuvables")

                    return (False)

            else:
                return (errMsg())

        elif (argv[1] in args["prefix"][2][0]):
            if (map.loaded):
                map.display()

            else:
                return (errMsg())

        elif (argv[1] in args["prefix"][3][0]):
            try:
                map.initMap(int(argv[3]), int(argv[4]))
                map.display()

            except Exception:
                print(f"{Icons.warn}Spécifier les dimension <x> et <y>")

                return (False)

        elif (argv[1] in args["prefix"][4][0]):
            if (map.loaded):
                map.reset()
                map.display()

            else:
                return (errMsg())

        elif (argv[1] in args["prefix"][5][0]):
            if (map.loaded):
                map.start()

            else:
                return (errMsg())

    return (True)