package game; //调用基本逻辑 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; //创建初始值 public class game implements ActionListener{ JTextField jft2; int num=0; int count=0; Random a=new Random(); int min=0; int max=100; //count用来计数,count初始值为0,当count为0时生成炸弹 //对按钮进行监听。如果被点击就执行逻辑代码 public void actionPerformed(ActionEvent e){ if (count==0){ System.out.println("炸弹已经生成!"); count+=1; num=a.nextInt(99)+1;} String sn= jft2.getText(); //对猜测值进行逻辑判断,并输出提示语句 int n=Integer.parseInt(sn); if(n<=min||n>=max){msgUI("输入的数字不在范围内!请输入范围在"+min+"~"+max+"之间的数字");return;} if (n==num){msgUI("恭喜你,猜对了!"); msgUI("你猜的次数为:"+(count+1)); count=0; msgUI("炸弹已被重置");} else if (n>num){msgUI("猜大了"); count+=1; max=n;} else {msgUI("猜小了"); count+=1; min=n;}} //创建提示语句窗口 public void msgUI(String msg){ //获取提示语句长度,使窗口自适应大小 int length = msg.length (); JFrame jf = new JFrame (); jf.setTitle ("提示"); jf.setSize (length*30, 150); jf.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); jf.setLocationRelativeTo (null); FlowLayout fl = new FlowLayout (); jf.setLayout (fl); JLabel msgJla = new JLabel (msg); Font font = new Font ("微软雅黑", Font.BOLD, 30); msgJla.setFont (font); jf.add (msgJla); jf.setVisible (true); }} //游戏窗口设计 import java.awt.*; import javax.swing.*; public class show { public void showUI(){JFrame jf = new JFrame (); jf.setTitle ("数字炸弹"); jf.setSize (400, 400); jf.setLocationRelativeTo (null);// 居中显示 jf.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);// 关闭 FlowLayout fl =new FlowLayout (); jf.setLayout (fl); JLabel jla= new JLabel ("请输入你要猜的数:"); JTextField jtf = new JTextField (10); JButton jbu = new JButton ("猜"); jf.add (jla); jf.add (jtf); jf.add (jbu); jf.setVisible (true); game gl = new game(); jbu.addActionListener(gl); gl.jft2 = jtf; } public static void main(String[] args){ show ui = new show(); ui.showUI(); } }
需优化内容:目前提示窗口只能显示一种提示语句,需把提示语句放入一个窗口内