Picas y Fijas en Java es un conocido juego de lógica, en el cual el jugador debe de adivinar un numero dado por el programa de 4 dígitos, este numero que genera la aplicación es aleatorio, como también no contiene números repetidos, como por ejemplo 4479, sino un numero como 3526. Ademas de esto se hará en determinado numero de intentos, como también se validara el numero ingresado por el jugador, no debe contener números repetidos.
Lo fundamental de este juego es mostrar las Picas y Fijas que existen en el numero que ingresa el jugador, teniendo en cuenta que las Picas son los números que existen en el numero ingresado pero no están en la posición del numero generado por la aplicación, las Fijas son aquellos números que ademas de estar en el numero ingresado por el usuario están en la posición del numero generado por el programa. Supongamos el siguiente ejemplo:
Numero Generado: 4873.
| N° Intentos |
Numero Ingresado |
Picas |
Fijas |
| 1 |
2390 |
1 |
0 |
| 2 |
9076 |
0 |
1 |
| 3 |
3472 |
2 |
1 |
| 4 |
4873 |
0 |
4 |
Suponiendo que el jugador en el cuarto intento haya adivinado certera mente el numero que genera la aplicación 😀 Ahora bien el código tiene un poco de Arreglos en Java como también otros conceptos algo avanzados con respecto al camino que pretendo seguir como un pequeño Curso de Java ya que el programa lo hice con GUI, hasta este punto no he tocado este tema detalladamente. El algoritmo en cuestion es el siguiente:
Ver Código
package tales;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Tales implements ActionListener{
Random aleatorio = new Random ();
String numIngresado="", resul="RESULTADO n n";
char numGen[] = new char[ 4 ]; //arreglo que almacenara el numero de 4 digitos generado
int fijas, picas, paso;
boolean estado = false;
//objetos para la GUI de la APP.
Panel p1, p2;
JButton jb1, jb2;
JLabel jl1, jl2, tituloFrame;
JTextField jt1;
TextArea jtA1;
public Tales(){
JFrame fMain = new JFrame("Fijas y Picas :D ");
fMain.setLayout( new BorderLayout(4, 6));
iz();
der();
fMain.add(p1, BorderLayout.WEST);
fMain.add(p2, BorderLayout.EAST);
fMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fMain.setResizable(false);
fMain.setSize(650, 450);
fMain.setLocation(100, 60);
fMain.setVisible(true);
}
public void iz(){
p1 = new Panel();
p1.setLayout(null);
jl1 = new JLabel("JUGADAS");
jl2 = new JLabel("Apuesta ");
jt1 = new JTextField(4);
jb1 = new JButton("Jugar");
jb2 = new JButton("Reiniciar");
jl1.setFont(new Font("Verdana", Font.BOLD, 20));
jt1.setHorizontalAlignment(JTextField.RIGHT);
jb2.setEnabled(false); jt1.setEditable(false);
jl1.setBounds(10, 15, 125, 25);
jl2.setBounds(5, 60, 95, 25);
jt1.setBounds(110, 60, 60, 25);
jb1.setBounds(10, 120, 80, 25);
jb2.setBounds(10, 150, 97, 25);
p1.add(jl1); p1.add(jl2); p1.add(jt1); p1.add(jb1); p1.add(jb2);
jb1.addActionListener(this); jb2.addActionListener(this);
p1.setSize(300, 200);
p1.setVisible(true);
}
public void der(){
p2 = new Panel();
p2.setLayout(null);
jtA1 = new TextArea(20, 25);
jtA1.append(resul);
jtA1.setEditable(false);
jtA1.setBounds(5, 45, 330, 250);
p2.add(jtA1);
p2.setSize(350, 200);
p2.setVisible(true);
}
public void genera(){
int i=0, num;
while( i < 4 ){
paso = 0;
num= aleatorio.nextInt(10);
for(int j=0;j
Una vez ejecutado el programa veremos lo siguiente:

Aunque no haya tocado la Swing de Java de momento espero que sea de utilidad este código, pero antes de terminar cabe aclarar algunas cosas :D No esta terminado totalmente el juego, ya que falta un par de validaciones, una de ellas es que se valide el numero ingresado por el usuario, ya que no debe contener números repetidos, ademas de guardar un historial de los números ingresados antes de ganar el juego, si el numero ya existe en el historial, entonces mostrar un mensaje o una alerta al usuario sobre esto :)
Espero que haya sido de gran ayuda y utilidad el código de este juego, si desean modificarlo para poner un panel de botones (Como el de la calculadora del SO) pueden sentirse en la comodidad de hacerlo, siempre y cuando respeten la fuente y/o compartan el post ;)
Si te ha gustado el post, compártelo, regala un like ó comenta ;)
¿Te ha resultado útil este artículo?
Demuestra tu apoyo dándole un pulgar arriba para seguir escribiendo SEO técnico.