温热;GUI猜谜游戏的冷逻辑部分JAVA
因此,我正在开发一个简单的JavaGUI猜测游戏,用户必须猜测一个随机数。如果用户的猜测接近数字,窗口将变为红色(热)、橙色(暖)、蓝色(冷),但逻辑部分有问题。我想这就是我要做的。此外,我正在将背景设置为特定颜色,但颜色仅在第一次打开窗口时快速显示。为什么呢温热;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
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);
}
}
我正在研究你的逻辑,我会更新我的答案。当游戏变成二进制搜索游戏时,你不想告诉用户“太高”或“太低”。