So I'm working a simple Java GUI guessing game where the user has to guess a random number. If the user's guess is near the number, the window turns Red(Hot), Orange(Warm), Blue(Cold), but am having trouble with the logic part. I this is what I have to far. Also, I am setting the background to specific colors, but the color only shows up rapidly when the window first comes up. Why is that?
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.Random;
import java.awt.Color;
public class GuessingGame extends JFrame {
private JButton newGameButton;
private JButton enterButton;
private JButton exitButton;
private JTextField guessBox;
private JLabel initialTextLabel;
private JLabel enterLabel;
private JLabel userMessageLabel;
private int userGuess;
private int randomNumber;
private int counter = 0;
private int lastGuess = 0;
private int difference = 0;
public GuessingGame() {
super("Guessing Game");
newGameButton = new JButton("New Game");
exitButton = new JButton("Exit Game");
enterButton = new JButton("Enter");
guessBox = new JTextField(4);
initialTextLabel = new JLabel("I have a number between 1 and 1000. Can you guess it?");
enterLabel = new JLabel("Please enter your first guess.");
userMessageLabel = new JLabel("");
randomNumber = new Random().nextInt(1000) + 1;
setBackground(Color.RED);
setLayout(new FlowLayout());
add(initialTextLabel);
add(enterLabel);
add(guessBox);
add(newGameButton);
add(enterButton);
add(exitButton);
add(userMessageLabel);
setSize(500, 125);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
newGameButtonHandler newghandler = new newGameButtonHandler();
newGameButton.addActionListener(newghandler);
exitButtonHandler exithandler = new exitButtonHandler();
exitButton.addActionListener(exithandler);
enterButtonHandler enterhandler = new enterButtonHandler();
enterButton.addActionListener(enterhandler);
}
class newGameButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
setBackground(Color.ORANGE);
userMessageLabel.setText("");
randomNumber = new Random().nextInt(1000) + 1;
}
}
class exitButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class enterButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
userGuess = Integer.parseInt(guessBox.getText());
compareGuess(userGuess, randomNumber);
}
}
public void compareGuess(int userGuess, int randomNumber) {
counter++;
if(userGuess == randomNumber) {
userMessageLabel.setText("You got it! It took you: " + counter + "guess(es)");
setBackground(Color.GREEN);
}
else if (userGuess > randomNumber) {
userMessageLabel.setText("Too high");
}
else if(userGuess < randomNumber) {
userMessageLabel.setText("Too low");
}
if(counter > 1) {
if ((randomNumber - userGuess) > (randomNumber - lastGuess))
{
setBackground(Color.RED);
}
else if ((randomNumber - userGuess) < (randomNumber - lastGuess))
{
setBackground(Color.BLUE);
}
else
{
setBackground(Color.GRAY);
}
}
lastGuess = userGuess;
}
public static void main(String[] args) {
GuessingGame myGuessingGame = new GuessingGame();
myGuessingGame.setVisible(true);
}
}