Menu
Icon

Torres de hanoi 3x3 java.

{ En este ejemplo de java mostrare el juego de torres de hanoi de 3x3


 en el cual abran tres torres con tres objetos que se deberán
 mover de izquierda a derecha siendo el mas grande quien puede
 cargar a todos el mediano solo puede cargar al pequeño y el
 pequeño a ninguno la meta del juego es mover los objetos de
 izquierda a derecha como dije antes interesante
 problema el que teto a resolver

 aqui el codigo

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;



public class Juego_DE_Torres_De_Hanoi extends JFrame
{
    //creando variables
   private  String Nombre_de_usuario;
   int DTorre, toTower, DLocalizacion, ALocalizacon;
   int Ejecutar_b=1;
   MD_panel Dibjar_pn;
    //en esta parte el espacio es pa agrandar el tamanyo de los nontoes
    JButton P1 = new JButton("" + "    1                " +
            "                ");
          
    JButton P2 = new JButton("2");
    JButton P3 = new JButton("           " +
            "                        3   " +
            "                                ");
    JSlider CDL = new JSlider(1,10,2);
    int Num_d_discos;
    int[][] juego;
    int[][] Juego2;
    //total del objetivo = TdB
    int TdB =0;
    int Dsuperior=0;
    boolean Mover=false;
    //estableciendo una tabla de colores
    static Color[] colores = {Color.black, Color.blue,
     Color.PINK, Color.green, Color.magenta, Color.YELLOW, Color.RED, Color.cyan};
    ArrayList<Integer> MoVimientos = new ArrayList<Integer>();
    public static void main(String args[])
    {
        //creando juego para aserlo visible
        Juego_DE_Torres_De_Hanoi window = new Juego_DE_Torres_De_Hanoi();
        window.setVisible(true); 
        window.setResizable(false);
        Random rgen = new Random();
        for (int i=0; i<colores.length; i++) {
            int Z = rgen.nextInt(colores.length);
            Color temp = colores[i];
            colores[i] = colores[Z];
            colores[Z] = temp;
        }
    }
    public Juego_DE_Torres_De_Hanoi()
    {
        setTitle("Applet en html:");  
        setSize(800,500); 
        setLocation(0,0); 
        Container contenidoP = getContentPane(); 
        contenidoP.setLayout(new BorderLayout());
        Dibjar_pn = new MD_panel();
        contenidoP.add(Dibjar_pn, BorderLayout.CENTER);
       Container BotonPanel = new Container();
       contenidoP.add(BotonPanel, BorderLayout.NORTH);
       Container BotonTores = new Container();
       BotonTores.setLayout(new BorderLayout());
       contenidoP.add(BotonTores, BorderLayout.SOUTH);
       BotonTores.add(P1, BorderLayout.WEST);
       BotonTores.add(P2, BorderLayout.CENTER);
       BotonTores.add(P3, BorderLayout.EAST);
       //e esta parte mostramos un mensaje para que ingrese el nombr que desee
       Nombre_de_usuario = JOptionPane.showInputDialog
         (null,"Ingrese nombre de usuario");
                //esto seria pa captar erroes
        try
        {
            //Num_d_discos= Integer.parseInt(Cstring);
            Num_d_discos= Integer.parseInt("3");
        }
        catch (NumberFormatException E)
        {JOptionPane.showMessageDialog
                (new JFrame(), "Invalido");
            System.exit(5);
        }juego= new int[Num_d_discos][3];
          //armando fila
        for (int FilA=0;FilA<juego.length;FilA++)
        
        
        
        
            for (int Col=0;Col<juego[0].length;Col++)
            
            
                juego[FilA][Col]=0;
      
        int num_a_insertar=8;
                  for (int i=Num_d_discos; i>0; i--)
        
        {
            
            juego[i-1][0]=num_a_insertar;
            
            num_a_insertar--;
        }
      
        Juego2 = new int[Num_d_discos][3];
        
        for (int Fila=0;Fila<juego.length;Fila++)
        
        
        
        
        
        
            for (int Col=0;Col<juego[0].length;Col++)
            
            
            
                Juego2[Fila][Col]=Juego2[Fila][Col];
    
        Button1 boton1 = new Button1();
        
        Button2 boton2 = new Button2();
        
        Button3 boton3 = new Button3();
        
        P1.addActionListener(boton1);
        
        
        P2.addActionListener(boton2);
        
        P3.addActionListener(boton3);
      
        
       // JUGAR JugarL = new JUGAR();
     
      
        for (int Fila=0;Fila<juego.length;Fila++)
        {
            TdB+=juego[Fila][0];
        }
      
    }
  
  
  
    //------------------Generador de platos  
 
    private class MD_panel extends JPanel
    {
        public void paintComponent (Graphics g)
        {      
          
            super.paintComponent(g);
           
            g.fillRect(50,335,700,50);
          
          
          
            g.setColor(Color.GRAY);
            g.fillRect(150, 67, 17, 270);
            
            g.fillRect(375, 67, 17, 270);
            g.fillRect(620, 67, 17, 270);
            
            
                      
            g.setColor(Color.BLUE);
            for (int row=juego.length-1;row>=0;row--)
            {
                g.setColor(Color.blue);
                if (juego[row][0]==8){g.setColor(colores[7]);
                    g.fillRoundRect(67, 100+(29*(row+(8-Num_d_discos))), 180, 25, 10, 10);}
                if (juego[row][0]==7){g.setColor(colores[6]);
                    
                    g.fillRoundRect(77,100+(29*(row+(8-Num_d_discos))),160,25, 10, 10);}
                if (juego[row][0]==6){g.setColor(colores[5]);
                    g.fillRoundRect(87,100+(29*(row+(8-Num_d_discos))),140,25, 10, 10);}
                if (juego[row][0]==5){g.setColor(colores[4]);
                    
                    g.fillRoundRect(97,100+(29*(row+(8-Num_d_discos))),120,25, 10, 10);}
                if (juego[row][0]==4){g.setColor(colores[3]);
                    g.fillRoundRect(107,100+(29*(row+(8-Num_d_discos))),100,25, 10, 10);}
                if (juego[row][0]==3){g.setColor(colores[2]);
                    g.fillRoundRect(117,100+(29*(row+(8-Num_d_discos))),80,25, 10, 10);}
                    
                    
                if (juego[row][0]==2){g.setColor(colores[1]);
                    g.fillRoundRect(127,100+(29*(row+(8-Num_d_discos))),60,25, 10, 10);}
                if (juego[row][0]==1){g.setColor(colores[0]);
                    g.fillRoundRect(137,100+(29*(row+(8-Num_d_discos))),40,25, 10, 10);}
            }
            for (int row=0;row<juego.length;row++)
            {
                g.setColor(Color.blue);
                if (juego[row][1]==8){g.setColor(colores[7]);
                    g.fillRoundRect(293,100+(29*(row+(8-Num_d_discos))),180,25, 10, 10);}
                if (juego[row][1]==7){g.setColor(colores[6]);
                    
                    g.fillRoundRect(303,100+(29*(row+(8-Num_d_discos))),160,25, 10, 10);}
                if (juego[row][1]==6){g.setColor(colores[5]);
                    g.fillRoundRect(313,100+(29*(row+(8-Num_d_discos))),140,25, 10, 10);}
                if (juego[row][1]==5){g.setColor(colores[4]);
                    g.fillRoundRect(323,100+(29*(row+(8-Num_d_discos))),120,25, 10, 10);}
                if (juego[row][1]==4){g.setColor(colores[3]);
                    g.fillRoundRect(333,100+(29*(row+(8-Num_d_discos))),100,25, 10, 10);}
                if (juego[row][1]==3){g.setColor(colores[2]);
                    g.fillRoundRect(343,100+(29*(row+(8-Num_d_discos))),80,25, 10, 10);}
                if (juego[row][1]==2){g.setColor(colores[1]);
                    
                    g.fillRoundRect(353,100+(29*(row+(8-Num_d_discos))),60,25, 10, 10);}
                if (juego[row][1]==1){g.setColor(colores[0]);
                    g.fillRoundRect(363,100+(29*(row+(8-Num_d_discos))),40,25, 10, 10);}
            } 
              for (int row=0;row<juego.length;row++)
            {
                g.setColor(Color.blue);
                if (juego[row][2]==8){g.setColor(colores[7]);
                    
                    g.fillRoundRect(67+470,100+(29*(row+(8-Num_d_discos))),180,25, 10, 10);}
                if (juego[row][2]==7){g.setColor(colores[6]);
                    
                    g.fillRoundRect(77+471,100+(29*(row+(8-Num_d_discos))),160,25, 10, 10);}
                if (juego[row][2]==6){g.setColor(colores[5]);
                    
                    g.fillRoundRect(87+471,100+(29*(row+(8-Num_d_discos))),140,25, 10, 10);}
                if (juego[row][2]==5){g.setColor(colores[4]);
                    g.fillRoundRect(97+471,100+(29*(row+(8-Num_d_discos))),120,25, 10, 10);}
                    
                if (juego[row][2]==4){g.setColor(colores[3]);
                    g.fillRoundRect(107+471,100+(29*(row+(8-Num_d_discos))),100,25, 10, 10);}
                if (juego[row][2]==3){g.setColor(colores[2]);
                    g.fillRoundRect(117+471,100+(29*(row+(8-Num_d_discos))),80,25, 10, 10);}
                if (juego[row][2]==2){g.setColor(colores[1]);
                    g.fillRoundRect(127+471,100+(29*(row+(8-Num_d_discos))),60,25, 10, 10);}
                    
                if (juego[row][2]==1){g.setColor(colores[0]);
                    g.fillRoundRect(137+471,100+(29*(row+(8-Num_d_discos))),40,25, 10, 10);}
            }
            
            
              
        }
    }
  
  
  
  
  
    //-----------
  
  
   //acciones a ejecutarce en caso se aprete el boton 1
  
    private class Button1 implements ActionListener
    
    {      
        
        public void actionPerformed(ActionEvent e)
        {  
            
            repaint();

            if (Mover)
            
            
            
            {
                int Ubicacinbaja=0;
                for (int i=0; i<juego.length; i++)
                {
                    
                          if (juego[i][0]==0)
                    {
                        Ubicacinbaja=i;
                                      
                    }
                    
                    
                }       
              
                juego[Ubicacinbaja][0]=Dsuperior;
                Dsuperior=0;
                Ubicacinbaja=0;
                Mover=false;
              
                P1.setEnabled(true);
                P2.setEnabled(true);
                P3.setEnabled(true);
                Triunfo();
            }            else            {
                for (int i=0; i<juego.length; i++)
                {
                    if (juego[i][0]!=0)
                    {
                        Dsuperior=juego[i][0];
                        juego[i][0]=0;
                      
                        Mover=true;
                                                         
                          i=juego.length+1;
                              }
                              
                              
                                                        }
              
                
                int ubicacionalta=0;
                for (int i=0; i<juego.length; i++)
                {
                    
                    if (juego[i][1]!=0)
                    {
                        ubicacionalta=i;
                        
                        i=juego.length+1;
                                         }
                    
                }
              
                if (ubicacionalta==0)
              {
                  
                                       }
                else if(Dsuperior>juego[ubicacionalta][1])
                 
                
                P2.setEnabled(false);
              
                
                
                int localizacionn3=0;
                for (int i=0; i<juego.length; i++)
                                    {
                    if (juego[i][2]!=0)
                    {
                        localizacionn3=i;
                        i=juego.length+1;
                                    }
                                    
                                    
                }
              
                if (localizacionn3==0)                {
                  
                    
                    
                       }                 else
                if(Dsuperior>juego[localizacionn3][2])
                
                
                
                                     P3.setEnabled(false);
            }
            
            
       
        }
        
        
        
        
    }
  
       //acciones a ejecutarce en caso se aprete el boton 2
    private class Button2 implements ActionListener
    {      
        public void actionPerformed(ActionEvent e)
        
        {
            repaint();
          
          
            if (Mover)
            {
                int localizacion1=0;                for (int i=0; i<juego.length; i++)
                {
                              if (juego[i][1]==0)
                    {
                                      localizacion1=i;
                    }
                    
                    
                    
                }
              
                juego[localizacion1][1]=Dsuperior;
                Dsuperior=0;
                
                localizacion1=0;
                
                
                Mover=false;
                
              
                P1.setEnabled(true);
                
                P2.setEnabled(true);
                
                P3.setEnabled(true);
                Triunfo();
            }
            
            
            else            {      
                
                
                for (int i=0; i<juego.length; i++)
                {
                    
                     
                                 if (juego[i][1]!=0)
                    {
                        
                        Dsuperior=juego[i][1];
                        juego[i][1]=0;
                      
                        Mover=true;
                           
                        i=juego.length+1; 
                    }
                }
              
               
                int localizacion2=0;
                for (int i=0; i<juego.length; i++)
                {
                    if (juego[i][0]!=0)
                    {
                        localizacion2=i;
                        i=juego.length+1;
                    }
                    
                    
                }
              
                 if (localizacion2==0)
                {
                  
                }//localizacion2
                                      else if(Dsuperior>juego[localizacion2][0])
                    P1.setEnabled(false);
               
                                   int localizacion3=0;
                for (int i=0; i<juego.length; i++)
                {
                    if (juego[i][2]!=0)
                    {
                        localizacion3=i;
                        i=juego.length+1;
                        
                        
                    }
                    
                }
              
                
                if (localizacion3==0)
                {
                  
                }
                
                else if(Dsuperior>juego[localizacion3][2])
                
                
                    P3.setEnabled(false);
            }
        //    printArray();
        }
    }
  
       //acciones a ejecutarce en caso se aprete el boton 3
    private class Button3 implements ActionListener
    {      
        public void actionPerformed(ActionEvent e)
        {
            
                repaint();
              
                if (Mover)
                {
                    int localizacion1=0;
                  
                    for (int i=0; i<juego.length; i++)                    {
                        if (juego[i][2]==0)
                        { 
                            localizacion1=i;   
                            
                            
                        }
                        
                    }
                    
                  
                    juego[localizacion1][2]=Dsuperior;
                    Dsuperior=0;
                    localizacion1=0;
                    Mover=false;
                  
                    P1.setEnabled(true);
                    P2.setEnabled(true);
                    P3.setEnabled(true);
                  
                    Triunfo();
                }
                else
                                                      {
                    for (int i=0; i<juego.length; i++)
                               {
                        if (juego[i][2]!=0)
                                 {
                            Dsuperior=juego[i][2];
                            juego[i][2]=0;
                          
                            Mover=true;
                             
                            
                            i=juego.length+1;
                        }
                        
                        
                        
                        
                        
                        
                        
                    }  
                    
                  
                   
                    int localizacion2=0;
                    for (int i=0; i<juego.length; i++)
                    {
                        
                        
                        
                        if (juego[i][1]!=0)
                        {
                            localizacion2=i;
                            
                            
                            
                            
                            
                            
                            
                            i=juego.length+1;
                                                }
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                    }
                  
                    if (localizacion2==0)
                    {
                      
                    }
                    else if(Dsuperior>juego[localizacion2][1])
                        P2.setEnabled(false);
                  
                   
                    int localizacion3=0;
                    
                    for (int i=0; i<juego.length; i++)
                    {
                                   if (juego[i][0]!=0)
                        {
                            localizacion3=i;
                            i=juego.length+1;
                        }
                        
                        
                        
                        
                        
                        
                        
                    }
                  
                    if (localizacion3==0)
                    {
                      
                    }
                    else if(Dsuperior>juego[localizacion3][0])
                        P1.setEnabled(false);
                }//printArray();
              
        }
    }
 
                   //play
                 
        
    //triunfo en caso gane ejecutara la siguiente accion
     private void Triunfo()
    {
        int TC=0;
        for (int tope=0;tope<juego.length;tope++)
        {
            TC+=juego[tope][2];
            
                    }
      
                 if (TdB==TC)
        {
            
            JOptionPane.showMessageDialog
            (new JFrame(), "Felicidades as ganado "+Nombre_de_usuario/*+HD?*/);
            System.exit(0);
        }
        
    }
    
}




Descargar ejemplo:



}

Utilizamos cookies propias y de terceros con finalidades analiticas y para mejorar tu experiencia de compras segun tus preferencias, mediante el analisis de tus habitos de navegacion y tu perfil. Puedes aceptar todas las cookies pulsando el boton "Aceptar" o gestionar tus preferencias en el panel de configuracion