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