Java 小例子:猜数字游戏

来源:互联网 发布:万网域名注册怎么用 编辑:程序博客网 时间:2024/06/01 10:25

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

Code:
  1. import javax.swing.*;  
  2. import java.awt.BorderLayout;  
  3. import java.awt.event.ActionListener;  
  4. import java.awt.event.ActionEvent;  
  5. import java.util.Random;  
  6.    
  7. /** 
  8.  * 猜数字 
  9.  */  
  10. public class GuessNumber extends JFrame {  
  11.    
  12.     private Random r = new Random();  
  13.    
  14.     private int result = r.nextInt(1000) + 1;  
  15.    
  16.     private int counter = 0;  
  17.    
  18.     private boolean finished = false;  
  19.    
  20.     private GuessNumber thisFrame = this;  
  21.    
  22.     private ActionListener guessButtonListener = new ActionListener() {  
  23.         public void actionPerformed(ActionEvent e) {  
  24.             if (!finished) {  
  25.                 String user_guess = textbox.getText();  
  26.                 if (user_guess.length() == 0) {  
  27.                     messageLabel.setText("输入文本不能为空。");  
  28.                 } else {  
  29.                     try {  
  30.                         int guess = Integer.parseInt(user_guess);  
  31.                         counter++;  
  32.    
  33.                         if (guess < result) {  
  34.                             messageLabel.setText("你输入的数字 " + guess + " 比结果小。");  
  35.                         } else if (guess > result) {  
  36.                             messageLabel.setText("你输入的数字 " + guess + " 比结果大。");  
  37.                         } else {  
  38.                             finished = true;  
  39.                             messageLabel.setText("OK,经过" + counter + "次猜测,你终于猜中了。");  
  40.                             button.setText("再来一次");  
  41.                         }  
  42.                     } catch (NumberFormatException e1) {  
  43.                         messageLabel.setText("请输入数字。");  
  44.                     }  
  45.                 }  
  46.             } else {  
  47.                 result = r.nextInt(1000) + 1;  
  48.                 counter = 0;  
  49.                 finished = false;  
  50.                 messageLabel.setText("请输入一个 1~1000 之内的数字。");  
  51.                 button.setText("猜一猜");  
  52.                 thisFrame.setTitle(String.valueOf(result));  
  53.             }  
  54.         }  
  55.     };  
  56.    
  57.     private JTextField textbox = new JTextField();  
  58.    
  59.     private JLabel messageLabel = new JLabel("请输入一个 1~1000 之内的数字。");  
  60.    
  61.     private JButton button = new JButton("猜一猜");  
  62.    
  63.     public static void main(String[] args) {  
  64.         GuessNumber frame = new GuessNumber();  
  65.         frame.setVisible(true);  
  66.     }  
  67.    
  68.     public GuessNumber() {  
  69.         super("猜数字");  
  70.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);  
  71.         this.setSize(400200);  
  72.         this.setLocation(200200);  
  73.         this.setResizable(false);  
  74.    
  75.         setupContentPane();  
  76.         setupControls();  
  77.         this.setTitle(String.valueOf(result));  
  78.     }  
  79.    
  80.     private void setupContentPane() {  
  81.         JPanel contentPane = new JPanel(new BorderLayout());  
  82.         contentPane.setBorder(BorderFactory.createEmptyBorder(5555));  
  83.         this.setContentPane(contentPane);  
  84.     }  
  85.    
  86.     private void setupControls() {  
  87.         JPanel topPanel = new JPanel(new BorderLayout());  
  88.         setupTupPanel(topPanel);  
  89.         this.add(topPanel, BorderLayout.NORTH);  
  90.         this.add(messageLabel, BorderLayout.CENTER);  
  91.     }  
  92.    
  93.     private void setupTupPanel(JPanel panel) {  
  94.         panel.add(textbox, BorderLayout.CENTER);  
  95.         button.addActionListener(guessButtonListener);  
  96.         panel.add(button, BorderLayout.EAST);  
  97.     }  
  98. }  

 

原创粉丝点击