{ 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: