0

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);
}
}
EdtheGreat
  • 15
  • 4

0 Answers0