Red de conocimiento informático - Aprendizaje de programación - Escriba un programa para "adivinar números" en Java: el programa selecciona aleatoriamente un número entero en el rango de 1 a 1000 para que el usuario lo adivine.

Escriba un programa para "adivinar números" en Java: el programa selecciona aleatoriamente un número entero en el rango de 1 a 1000 para que el usuario lo adivine.

Se adjunta el programa fuente Java.

Las características de este programa son:

(1) Sólo se pueden ingresar números puros en el cuadro de texto

(2) La interfaz es hermosa;

(3) El código es más legible y tiene comentarios apropiados;

(4) El formulario se centra en el escritorio tan pronto como aparece.

importar java.awt.*;

importar java.awt.event.*

importar java.util.*; >importar javax.swing.*;

clase pública GuessNumber {

privada estática final larga serialVersionUID = 1L;

marco JFrame;

JTextField txtNum; //Cuadro de texto

JButton btnStart; //Botón

JLabel lblPrompt;

JLabel lblMessage;

static int fuente = 0;

static Random rand = new Random();

public GuessNumber(){

frame = new JFrame("Adivinar número");

JPanel pnl1, pnl2, pnl3, pnl4;

pnl1 = nuevo JPanel();

pnl1.setLayout(new FlowLayout(FlowLayout.LEFT));

pnl2 = nuevo JPanel();

pnl2.setLayout(nuevo FlowLayout(FlowLayout.LEFT));

pnl3 = nuevo JPanel(); p>

p>

pnl3.setLayout(nuevo FlowLayout(FlowLayout.LEFT));

pnl4 = nuevo JPanel();

pnl4.setLayout(nuevo FlowLayout (FlowLayout.LEFT) );

txtNum = nuevo JTextField(10);

btnStart = nuevo JButton("Inicio");

lblPrompt = nuevo JLabel ("lt;htmlgt ;lt;bodygt;Tengo un número entre 1 y 1000, ¿puedes adivinar mi número?lt;br/gt;Por favor, ingresa tu primera suposición.lt;/bodygt;lt;/htmlgt;");

lblMessage = new JLabel();

pnl1.add(lblPrompt);

pnl2.add(txtNum);

pnl3. add(lblMessage);

pnl4.add(btnStart);

frame.setLayout(new GridLayout(4, 1)); pnl1);

p>

marco.add(pnl2);

marco.add(pnl3);

dd(pnl4);

txtNum.addActionListener(this.new TextAction());

txtNum.addKeyListener(this.new KeyAction());

btnStart.addActionListener(this.new ButtonAction());

frame.setSize(400, 200);

frame.setVisible(true); .setLocationRelativeTo(null);

frame.setResizable(false);

}

public static void main(String[] args) {

new GuessNumber();

while((source=rand.nextInt(1000))==0);

}

//Botón Manejo de eventos después de hacer clic

clase ButtonAction implementa ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

JButton btn = (JButton)e.getSource();

if(btn == btnStart){

while((source=rand.nextInt(1000))==0); p>

txtNum.setEditable(true);

}

}

}

//Botón de cuadro de texto Manejo de eventos después del retorno de carro

clase TextAction implementa ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

JTextField txt = ( JTextField)e.getSource();

if(txt != txtNum){

return;

}

int num = Integer.parseInt(txtNum.getText());

if(num == fuente){

lblMessage.setText("¡Correcto!");

txtNum.setEditable(false);

txtNum.setBackground(frame.getBackground());

}

else if(num gt; fuente ){

lblMessage.setText("Demasiado alto");

txtNum.setBackground(Color.red);

}

else{

lblMessage.setText("Demasiado bajo");

txtNum.setBackground(Color.blue);

}

}

}

//Limita el cuadro de texto para ingresar solo números

class KeyAction implementa KeyListener{

@Override

public void keyPressed(KeyEvent e) {

}

@Override

public void keyReleased(KeyEvent e) {

}

@Override

public void keyTyped(KeyEvent e) {

int k = e.getKeyChar();

Texto de cadena = ((JTextField)e.getSource()).getText();

if(!((kgt; 47 amp; amp ; k lt; 58) || (k==8 || k==KeyEvent.VK_PERIOD))){ //Limitar solo los números que se ingresarán

e.setKeyChar((char)KeyEvent.VK_CLEAR

}

if(text.length() gt; 4){ //Limitar la longitud del valor

e.setKeyChar((char); )KeyEvent.VK_CLEAR );

}

}

}

}