Java 小例子:猜数字游戏

这是一个猜数字的游戏。用户输入 1~1000 以内的任意数字,程序给出它是大了还是小了,直到猜出正确的结果。

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;
 
/**
 * 猜数字
 */
public class GuessNumber extends JFrame {
 
    private Random r = new Random();
 
    private int result = r.nextInt(1000) + 1;
 
    private int counter = 0;
 
    private boolean finished = false;
 
    private GuessNumber thisFrame = this;
 
    private ActionListener guessButtonListener = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (!finished) {
                String user_guess = textbox.getText();
                if (user_guess.length() == 0) {
                    messageLabel.setText("输入文本不能为空。");
                } else {
                    try {
                        int guess = Integer.parseInt(user_guess);
                        counter++;
 
                        if (guess < result) {
                            messageLabel.setText("你输入的数字 " + guess + " 比结果小。");
                        } else if (guess > result) {
                            messageLabel.setText("你输入的数字 " + guess + " 比结果大。");
                        } else {
                            finished = true;
                            messageLabel.setText("OK,经过" + counter + "次猜测,你终于猜中了。");
                            button.setText("再来一次");
                        }
                    } catch (NumberFormatException e1) {
                        messageLabel.setText("请输入数字。");
                    }
                }
            } else {
                result = r.nextInt(1000) + 1;
                counter = 0;
                finished = false;
                messageLabel.setText("请输入一个 1~1000 之内的数字。");
                button.setText("猜一猜");
                thisFrame.setTitle(String.valueOf(result));
            }
        }
    };
 
    private JTextField textbox = new JTextField();
 
    private JLabel messageLabel = new JLabel("请输入一个 1~1000 之内的数字。");
 
    private JButton button = new JButton("猜一猜");
 
    public static void main(String[] args) {
        GuessNumber frame = new GuessNumber();
        frame.setVisible(true);
    }
 
    public GuessNumber() {
        super("猜数字");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(400, 200);
        this.setLocation(200, 200);
        this.setResizable(false);
 
        setupContentPane();
        setupControls();
        this.setTitle(String.valueOf(result));
    }
 
    private void setupContentPane() {
        JPanel contentPane = new JPanel(new BorderLayout());
        contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        this.setContentPane(contentPane);
    }
 
    private void setupControls() {
        JPanel topPanel = new JPanel(new BorderLayout());
        setupTupPanel(topPanel);
        this.add(topPanel, BorderLayout.NORTH);
        this.add(messageLabel, BorderLayout.CENTER);
    }
 
    private void setupTupPanel(JPanel panel) {
        panel.add(textbox, BorderLayout.CENTER);
        button.addActionListener(guessButtonListener);
        panel.add(button, BorderLayout.EAST);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值