Analisis de Algoritmos y Bases de Datos
  juego torres de Hanoi
 
Proceso Torres_Hanoi
   
    Escribir "el objetivo del juego es mover todos los discos de la torre 1 a la torre 3";
    Escribir "trate de hacerlo en el menor numero de pasos posibles";
    Escribir "recuerde que no puede poner un disco grande sobre uno pequeño";
    Escribir " ";
   
    //vector para controlar numero de torres y de discos   
    Dimension torres[3,5], cantidad_discos[3]; //cantidad_discos: controla dicos que van en cada torre
 discos<-5;

    // inicializar los datos de discos en cada torre
    cantidad_discos[1]<-discos;
    cantidad_discos[2]<-0;
    cantidad_discos[3]<-0;
   
    //inicia contador
    para i<-1 hasta discos hacer
        torres[1,i]<-discos-i+1;
    finpara
   
    movimientos<-0;
   
    // El mientras hace que el juego corra hasta que en la torre 3 no esten todos los discos
    mientras cantidad_discos[3]<>discos Hacer
        Escribir "numero de movimientos:" ,movimientos;   
        // dibuja las tres torres
        para i<-1 hasta 3 Hacer
            escribir "";
            escribir "Torre ",i;
           
            //el si deja campos vacios en las torres con valor 0
            si cantidad_discos[i]=0 Entonces
            Escribir "";
            Escribir "";
            sino
                para j<-cantidad_discos[i] hasta 1 con paso -1 Hacer // con los vectores cuenta los discos de la torre, de arriba hacia abajo
                    segun torres[i,j] Hacer // el segun dibuja el disco en la posicion solicitada
                           
                        1: escribir "    [_1__] ";
                        2: escribir "   [__2___]";
                        3: escribir "  [___3____] ";
                        4: escribir " [____4_____]";
                        5: escribir "[_____5______]";
                    finsegun
                FinPara
            finsi
        FinPara
       
        // para emplear movimientos
        Escribir "Mover disco desde la torre: ";
        leer torre1;
        Escribir "a la torre: ";
        leer torre2;
       
        //si controla que el numero de torre sea correcto
        si torre1<0 O torre1>3 O torre2<0 O torre2>3 Entonces
            escribir "No permitido";
        sino
            //controla que haya 1 disco en la torre 1
            si cantidad_discos[torre1]=0 Entonces
                escribir "No permitido";
            Sino
                 // controla el tamaño del disco que se quiere mover
                disco_a_mover <- torres[torre1,cantidad_discos[torre1]];
                moverse<-verdadero;
                // controlar que la torre dos no tenga discos o tenga discos mas grandes
                si cantidad_discos[torre2]<>0 entonces
                    si torres[torre2,cantidad_discos[torre2]]<disco_a_mover Entonces
                        moverse<-Falso;
                    FinSi
                FinSi
                //permite movimietnto despues del filtro
                si moverse Entonces
                    movimientos <- movimientos+1;
                    cantidad_discos[torre2]<-cantidad_discos[torre2]+1;
                    torres[torre2,cantidad_discos[torre2]] <- disco_a_mover;
                    cantidad_discos[torre1]<-cantidad_discos[torre1]-1;
                Sino
                    escribir "no permitido";
                finsi
            FinSi
        finsi
    finmientras
   
    // muestra resulato final
    escribir "";
    escribir "has realizado ",movimientos," movimientos!";
    escribir "";
    escribir "         [_1__] ";
    escribir "       [__2___]";
    escribir "     [___3____] ";
    escribir "   [____4_____]";
    escribir "[_____5______]";
    Escribir "GAME OVER";
FinProceso





 
   
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis