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
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:
Comentarios
Publicar un comentario