import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Random;
import javax.swing.*;
public class Main extends JFrame{
JButton sendBt;
JTextField inputField;
JTextArea chat;
JScrollPane scollPanel;
JScrollBar jsb;
int times=0;
//随机数生成
Random r = new Random();
final int result = r.nextInt(98)+1;
public Main(){
this.setLayout(new BorderLayout());
//游戏提示框chat
chat = new JTextArea(12,34);
scollPanel = new JScrollPane(chat);
scollPanel.setVerticalScrollBarPolicy(ScrollPaneConstants. VERTICAL_SCROLLBAR_ALWAYS);//只可以纵向拉动
scollPanel.setHorizontalScrollBarPolicy(ScrollPaneConstants. HORIZONTAL_SCROLLBAR_NEVER);//不可以横向拉动
JScrollBar sb = scollPanel.getVerticalScrollBar();
sb.setValue(sb.getMaximum());
this.add(scollPanel, BorderLayout.CENTER);
chat.setEditable(false);//不可编辑
chat.append("游戏开始!"+"\n");
chat.append("游戏规则:有一个数字x范围在1-99"+"\n"+"你需要猜这个数字x是多少"+"\n"+
"以提高游戏的娱乐性,每猜错一次,系统会提示你的数字比x大了还是小了"+"\n"+
"ps:按下按钮猜一次,为方便,也可以使用热键Enter猜一次"+"\n"+"看看你最少多少次能猜中"+"\n\n");
//输入框与按钮
JPanel inputPanel = new JPanel();
inputField= new JTextField(20);
sendBt = new JButton("猜一下");
sendBt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cai();
}
});
//键盘上面的回车就可以发送
inputField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
if(keyCode==10){
cai();
}
}
});
Label label = new Label("您猜的数字是:");
inputPanel.add(label);
inputPanel.add(inputField);
inputPanel.add(sendBt);
this.add(scollPanel,BorderLayout.CENTER);
this.add(inputPanel,BorderLayout.SOUTH);
this.setTitle("游戏(猜数字)");
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int width = 500, height = 500;
this.setBounds((d.width - width) / 2, (d.height - height) / 2, width, height);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void cai()
{
times++;
String content = inputField.getText();
int num = Integer.valueOf(content).intValue();
if(num
chat.append("第"+times+"次猜测答案错误》提示:正确答案比您输入的 "+num+" 更大"+"\n"+"再猜一次看看吧"+"\n");
}else if(num>result){
chat.append("第"+times+"次猜测答案错误》提示:正确答案比您输入的 "+num+" 更小"+"\n"+"再猜一次看看吧"+"\n");
}else{
chat.append("恭喜你!!!答案正确!!!!!!"+"\n");
chat.append("正确的数字就是"+result+",您使用了"+times+"次猜数字机会"+"\n");
chat.append("为了让次数更少,其中有一个典型的算法就是二分法"+"\n"
+"每次截取可能数字的中间值,一直二分下去。"+"\n"+"想要具体探索二分的威力吗?多试几次游戏看看吧");
}
inputField.setText("");
chat.append("\n");
jsb=scollPanel.getVerticalScrollBar();//
jsb.setValue(jsb.getMaximum());//
chat.selectAll();//显示在最后一行
}
public static void main(String[] args) {
new Main();
}
}