java实现猜数字小游戏(Swing版)

 更新时间:2022年06月06日 16:35:01   作者:预见未来to50  
这篇文章主要介绍了java实现猜数字小游戏,Swing编程版的猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

2008年的时候,在学习Java how to program第五版的时候,写过一个猜数字小游戏,是用Applet写的;
现在,我要用Swing重写这个小游戏,同时,加入一些新功能,如:背景颜色(红色表示偏高,蓝色表示偏低)、弹框、字体控制、布局管理器的使用。

运行截屏:

代码如下:

//Guess a number between 1 and 1000
//Java how to program, 10/e, Exercise 12.14
//by pandenghuang@163.com
/* (Guess-the-Number Game) Write an application that plays “guess the number” as follows:
Your application chooses the number to be guessed by selecting an integer at random in the range
1–1000. The application then displays the following in a label:
I have a number between 1 and 1000. Can you guess my number?
Please enter your first guess.
A JTextField should be used to input the guess. As each guess is input, the background color
should change to either red or blue. Red indicates that the user is getting “warmer,” and blue,
“colder.” A JLabel should display either "Too High" or "Too Low" to help the user zero in. When
the user gets the correct answer, "Correct!" should be displayed, and the JTextField used for
input should be changed to be uneditable. A JButton should be provided to allow the user to play
the game again. When the JButton is clicked, a new random number should be generated and the
input JTextField changed to be editable.
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import static java.awt.BorderLayout.*;
 
public class NumberGuessGame2016 extends JFrame {
int number,random,counter=0;
JLabel welcomeJLabel;
JLabel hintJLabel;
JTextField guessField;
JPanel panel;//显示不同背景色
 
 
public NumberGuessGame2016() {
  super("猜数字小游戏游戏");
  setLayout(new BorderLayout());
  
  panel=new JPanel();
  panel.setBackground(Color.WHITE);
 
  welcomeJLabel= new JLabel("游戏规则:已随机生成一个1到1000的整数,您能在10次以内猜出来吗?");
  welcomeJLabel.setFont(new Font("Simsun",1,10));
  add(welcomeJLabel,NORTH);
 
  guessField=new JTextField(20);
  guessField.setFont(new Font("Arial",1,10));
  panel.add(guessField);
  add(panel); //默认添加到中间
 
  hintJLabel= new JLabel("");
  add(hintJLabel,SOUTH);
  hintJLabel.setFont(new Font("Simsun",1,10));
   
  TextFieldHandler handler=new TextFieldHandler();
  guessField.addActionListener(handler);
 
  random=(int)(1+1000*Math.random());
  
}
 
private class TextFieldHandler implements ActionListener 
{
  // process textfield events
 
  @Override
  public void actionPerformed (ActionEvent event)
  {
  while(true){
   number=Integer.parseInt(guessField.getText());
   while(number!=random)
   {
     number=Integer.parseInt(guessField.getText());
     if(number>random)
       {
       hintJLabel.setText("猜高了,不要放弃哦↖(^ω^)↗。已试错"+(++counter)+"次");
       guessField.setText("");
       panel.setBackground(Color.RED);
       }
     else
       {
      hintJLabel.setText("猜低了,请继续!已试错"+(++counter)+"次");
      panel.setBackground(Color.BLUE);
       guessField.setText("");
       }
   }
   //猜中后的用户提示
   if (counter<10)
    JOptionPane.showMessageDialog(null, "恭喜你,猜中了,难道你知道答案?O(∩_∩)O~");
   else if (counter==10)
    JOptionPane.showMessageDialog(null, "辛苦了,终于猜中了!");
   else
    JOptionPane.showMessageDialog(null, "您终于猜中了╮(╯▽╰)╭,您其实可以做得更好的!");
 
   //开始下一轮猜数字游戏前的初始化工作
   guessField.setText("");
   random=(int)(1+1000*Math.random());
   counter=0;
   
  }
  }
}
 
public static void main(String[] args)
{ 
  NumberGuessGame2016 f = new NumberGuessGame2016(); // create ListFrame
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  f.setSize(400,300); 
  f.setVisible(true); 
}
}

更多有趣的经典小游戏实现专题,也分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈java中文本框和文本区

    浅谈java中文本框和文本区

    本文给大家介绍的是java中的文本框和文本区的概念和使用方法,以及简单的示例,十分实用,有需要的小伙伴可以参考下。
    2015-06-06
  • Java使用Graphics2D绘制SVG和PNG的方法

    Java使用Graphics2D绘制SVG和PNG的方法

    Java提供了许多图形处理类和方法,如Graphics2D、AffineTransform、Stroke等,这些都可以用于绘制SVG图像,Graphics2D是Java中用于绘制2D图形的类,本文给大家介绍如何使用Graphics2D绘制SVG和PNG,需要的朋友可以参考下
    2023-06-06
  • 解决java web应用线上系统偶发宕机的情况

    解决java web应用线上系统偶发宕机的情况

    这篇文章主要介绍了解决java web应用线上系统偶发宕机的情况,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java毕业设计实战之校园一卡通系统的实现

    Java毕业设计实战之校园一卡通系统的实现

    这是一个使用了java+Springboot+Maven+mybatis+Vue+mysql+wd开发的校园一卡通系统,是一个毕业设计的实战练习,具有校园一卡通系统该有的所有功能,感兴趣的朋友快来看看吧
    2022-01-01
  • maven环境变量配置以及失败原因解析

    maven环境变量配置以及失败原因解析

    这篇文章主要为大家详细介绍了maven环境变量配置教程,以及为大家解析了安装失败的原因,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Java ServletContext对象用法解析

    Java ServletContext对象用法解析

    这篇文章主要介绍了Java ServletContext对象用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • springmvc Controller方法没有加@ResponseBody导致api访问404问题

    springmvc Controller方法没有加@ResponseBody导致api访问404问题

    这篇文章主要介绍了springmvc Controller方法没有加@ResponseBody导致api访问404问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot配置和切换Tomcat流程详解

    SpringBoot配置和切换Tomcat流程详解

    这篇文章主要介绍了如何给springboot配置和切换默认的Tomcat容器以及相关的经验技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • BufferedReader中read()方法和readLine()方法的使用

    BufferedReader中read()方法和readLine()方法的使用

    这篇文章主要介绍了BufferedReader中read()方法和readLine()方法的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MyBatis绑定错误提示BindingException:Invalid bound statement (not found)的解决方法

    MyBatis绑定错误提示BindingException:Invalid bound statement (not f

    这篇文章主要介绍了MyBatis绑定错误提示BindingException:Invalid bound statement (not found)的解决办法,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-01-01

最新评论