Beispiel #1
0
        return err, None, None
    else:
        err, mouvements = algo_cfop(cube_lu.copy())
        return (err, None, None) if err \
            else (None, mouvements, cube_lu)

if __name__=="__main__":
    """
    :Example:
        python poqb.py
        python poqb.py -cYYYYYYYYYOOOBBBRRRGGGOOOBBBRRRGGGOOOBBBRRRGGGWWWWWWWWW
        python poqb.py --cube=YYYYYYYYYOOOBBBRRRGGGOOOBBBRRRGGGOOOBBBRRRGGGWWWWWWWWW
    """

    #On récupère le cube en paramètre ou on utilise celui par défaut
    params = readArgs()
    cube = str(params['cube']) if 'cube' in params else DEFAULT_CUBE

    err, resolution, cube_lu = solve_full(cube)
    if err:
        print("Erreur dans la lecture du cube : " + err)
    else:
        #L'utilisateur a demandé la résolution pas à pas
        if 'tuto' in params:
            print('Résolution de :', "".join([colorize(x) for x in cube]))
            tuto(cube_lu, resolution)

        print('Résolution de :', "".join([colorize(x) for x in cube]) +'\n')
        resolution = " ".join([translate_mvt(x) for x in resolution])
        print('Positionnez la face bleue face à vous et la face blanche face au sol\n')
        print("Puis exécutez la manoeuvre : {}".format(resolution) +'\n')
Beispiel #2
0
def tuto(cube, mouvements):
    """
    tuto

    :Args:
        cube        {Cube}      Un cube à la sortie de lecture_cube
        mouvements  {List}      Suite de mouvements à appliquer sur le cube
                                pour le résoudre, calculée par algo_cfop()
    """

    #lecture des paramètres
    params = readArgs()
    speed = float(params['speed']) if 'speed' in params else SPEED

    resolution = " ".join([translate_mvt(x) for x in mouvements])

    mouvementsDone = []
    mouvementsRestants = list(mouvements)

    clear()
    if 'auto' in params:
        print('Positionnez la face bleue face à vous et la face blanche face au sol\n')
        print('Le tuto en mode auto va bientôt commencer, tenez vous prêt !')
        sleep(3)
    clear()
    sleep(1)
    print("Exécution de la manoeuvre : {}".format(resolution) )
    print(cube)

    for m in mouvements:
        clear()
        mouvementsRestants.remove(m)
        method = getattr(cube, 'rot_' + m)
        method()

        print(
            "Exécution de la manoeuvre : "

            #les mouvements effectués
            + TermColors.green + \
            "{}".format(" ".join([translate_mvt(x) for x in mouvementsDone]))+ \
            TermColors.end + ' ' +

            #le mouvement actuel
            TermColors.bgGreen + translate_mvt(m) + TermColors.end + \

            #les mouvements restant
            " {}".format(" ".join([translate_mvt(x) \
                for x in mouvementsRestants])
            ) + '\n'
        )

        if 'moves' not in params:
            print(cube)
        else:
            #L'utilisateur a demandé de voir l'aide des mouvements
            print(aideMouvements(cube, m))
            print("Rotation : ", translate_mvt(m) +'\n\n')

        mouvementsDone.append(m)

        if 'auto' not in params:
            print('Press any key to continue . . .\n')
            newGetch()
        else:
            sleep(1 / speed)