Java实验二猜数字游戏_JAVA猜数字游戏(二分)

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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值