Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
温热;GUI猜谜游戏的冷逻辑部分JAVA_Java_User Interface_Logic - Fatal编程技术网

温热;GUI猜谜游戏的冷逻辑部分JAVA

温热;GUI猜谜游戏的冷逻辑部分JAVA,java,user-interface,logic,Java,User Interface,Logic,因此,我正在开发一个简单的JavaGUI猜测游戏,用户必须猜测一个随机数。如果用户的猜测接近数字,窗口将变为红色(热)、橙色(暖)、蓝色(冷),但逻辑部分有问题。我想这就是我要做的。此外,我正在将背景设置为特定颜色,但颜色仅在第一次打开窗口时快速显示。为什么呢 import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.Random; import java.awt.Color; pub

因此,我正在开发一个简单的JavaGUI猜测游戏,用户必须猜测一个随机数。如果用户的猜测接近数字,窗口将变为红色(热)、橙色(暖)、蓝色(冷),但逻辑部分有问题。我想这就是我要做的。此外,我正在将背景设置为特定颜色,但颜色仅在第一次打开窗口时快速显示。为什么呢

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);
}
}
import javax.swing.*;
导入java.awt.event.*;
导入java.awt.*;
导入java.util.Random;
导入java.awt.Color;
公共类猜测游戏扩展JFrame{
私有JButton newGameButton;
私有JButton enterButton;
私有JButton exitButton;
私有JTextField猜测框;
私人JLabel initialTextLabel;
私人JLabel企业标签;
私有jlabelusermessagelabel;
私有int-userGuess;
私有整数随机数;
专用整数计数器=0;
private int lastGuess=0;
私有整数差=0;
公众猜谜游戏{
超级(“猜谜游戏”);
newGameButton=新JButton(“新游戏”);
退出按钮=新的JButton(“退出游戏”);
enterButton=新的JButton(“回车”);
猜测框=新的JTextField(4);
initialTextLabel=new JLabel(“我有一个介于1和1000之间的数字,你能猜出来吗?”);
enterLabel=new JLabel(“请输入您的第一个猜测”);
userMessageLabel=新的JLabel(“”);
随机数=新随机数().nextInt(1000)+1;
挫折地面(颜色:红色);
setLayout(新的FlowLayout());
添加(initialTextLabel);
添加(输入标签);
添加(猜测框);
添加(新游戏按钮);
添加(输入按钮);
添加(退出按钮);
添加(userMessageLabel);
设置大小(500125);
addWindowListener(新的WindowAdapter(){
公共无效窗口关闭(WindowEvent e){
系统出口(0);
}
});
newGameButtonHandler newghandler=新的newGameButtonHandler();
newGameButton.addActionListener(newghandler);
exitButtonHandler exithandler=新的exitButtonHandler();
addActionListener(exitButton.addActionListener);
enterButtonHandler enterhandler=新的enterButtonHandler();
enterButton.addActionListener(enterhandler);
}
类newGameButtonHandler实现ActionListener{
已执行的公共无效操作(操作事件e){
挫折背景(橙色);
userMessageLabel.setText(“”);
随机数=新随机数().nextInt(1000)+1;
}
}
类exitButtonHandler实现ActionListener{
已执行的公共无效操作(操作事件e){
系统出口(0);
}
}
类enterButtonHandler实现ActionListener{
已执行的公共无效操作(操作事件e){
userGuess=Integer.parseInt(guessBox.getText());
比较(用户猜测、随机数);
}
}
public void compareGuess(int userGuess,int randomNumber){
计数器++;
if(userGuess==随机数){
userMessageLabel.setText(“你明白了!它花费了你:“+counter+”猜测(es)”);
挫折背景(颜色:绿色);
}
else if(用户猜测>随机数){
userMessageLabel.setText(“太高”);
}
else if(用户猜测<随机数){
userMessageLabel.setText(“太低”);
}
如果(计数器>1){
如果((randomNumber-userGuess)>(randomNumber-lastGuess))
{
挫折地面(颜色:红色);
}
else if((randomNumber-userGuess)<(randomNumber-lastGuess))
{
挫折背景(颜色:蓝色);
}
其他的
{
挫折背景(颜色:灰色);
}
}
lastGuess=userGuess;
}
公共静态void main(字符串[]args){
猜游戏myGuessingGame=新猜游戏();
myGuessingGame.setVisible(true);
}
}

我正在研究你的逻辑,我会更新我的答案。当游戏变成二进制搜索游戏时,你不想告诉用户“太高”或“太低”。