编写应用GUI组件的程序,完成猜数游戏:程序随机产生一个数,用户输入猜数,程序每次给出大或小的提示,最多猜十次。
源码
package demo6;
import com.sun.javafx.logging.JFRInputEvent;
import demo4.BinarySearch;
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class Guess {
static int count=1;
static int max=100;
static int min=0;
static int answer= new Random().nextInt(101);
public Guess(){
JFrame game=new JFrame("猜数字");
game.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
game.setLocation(500,300);
game.setSize(500,500);
game.setVisible(true);
JTextArea showarea=new JTextArea(2,2);
JScrollPane scrollPane=new JScrollPane(showarea);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
showarea.setEditable(false);//不可编辑
JButton button=new JButton("猜一猜");
JTextField jTextField=new JTextField(20);
button.addActionListener(e -> {
String ant=jTextField.getText();
String text=null;
if(count>10) text="10次机会已经用完,猜数失败!";
else if(count<=10) {
text = "第" + count + "次猜的数字" + min + "和" + max + "之间" + ant + "\n" + judgeNumber(ant) + "\n";
count++;
}
else text = "10次机会已经用完,猜数失败!"+"\n";
showarea.append(text);
jTextField.setText("");//输入框清空
// if (count > 10) showarea.append("10次机会已经用完,猜数失败!");
});
JPanel panel=new JPanel();
JLabel lable = new JLabel("请输入想猜的数字");
panel.add(lable);
panel.add(jTextField);
panel.add(button);
game.add(scrollPane, BorderLayout.CENTER);
game.add(panel, BorderLayout.PAGE_END);
game.setVisible(true);
}
public static String judgeNumber(String txt){
int a=Integer.valueOf(txt);
if(a==answer){
return "恭喜你花了"+count+"次猜对了!,请退出";
}
else if (a>answer&&count<10){
max=a;
return a+"猜大了,"+"请重新输入第"+(count+1)+"次猜"+min+"和"+max+"之间";
}
else if(count<10){
min=a;
return a+"猜小了,"+"请重新输入第"+(count+1)+"次猜"+min+"和"+max+"之间";
}
else return "10次机会已经用完,猜数失败!";
}
}
package demo6;
public class Test {
public static void main(String[] args) {
new Guess();
}
}