实现猜数字游戏

在一些娱乐节目中,经常会有猜数字游戏。就是主持人手里拿有一个数字牌(这个牌上标识的可能是商品的价格,也可能是选手演唱歌曲的得分),选手在规定的时间内猜这个数,每当选手说出一个数字,主持人都会提示他,是高了,还是低了,当选手猜对了,会有奖励的。下面我们就通过Java实现一个类似的猜数字游戏。在该游戏中,首先生成一个随机的幸运数字,然后由用户猜这个数字是什么,当用户输入所猜的数字并单击“确定”按钮时,系统将给出提示大了或小了的提示,如果用户猜到了幸运数字,将显示该幸运数字。同时,游戏还需要提供显示答案和重新。

程序的运行结果如下。

如果输入数字50,将给予提示“小了,继续努力!”,如图1所示。

1  猜小了时显示的效果

如果输入数字80,将给予提示“大了,继续努力!”,如图2所示

2  猜大了时显示的效果

 

如果输入数字78,将给予提示“恭喜,猜对了!”,如图3所示

3  猜对了时显示的效果

已有类

位置:应用/源码管理/类库/BackgroundPanel.jar

位置:应用/源码管理/类库/IntJTextField.jar

位置:应用/源码管理/类库/CreateRandom.jar

 关键技术

在实现猜数字游戏时,首先需要调用已有类CreateRandom提供的createRandom()方法生成10100之间的幸运数字,然后通过if语句判断输入数字与幸运数字的大小,并给出相应的提示,最后还需要提供显示正确答案和再来一次的功能。其中,重点需要介绍的就是,生成的幸运数字是int型,而在显示到JLabel上时,需要String型的数据。这时,就需要将int型的数据转换为String型。这可以通过String类的valueOf()方法实现。valueOf()方法的原型如下:

public static String valueOf(int i)

iint型的整数,用于指定要转换为字符串的数字。

返回值:转换后的字符串。

 实现步骤

下面我们来介绍猜数字游戏的实现步骤。

1)创建一个Java项目,名称为“实现猜数字游戏”。

2)创建一个JFrame窗体,名称为MainFrame,并将其保存在com.wgh包中。

3)在项目的根目录中创建一个名称为lib的文件,并将本实例所需的已有类BackgroundPanel.jarIntJTextField.jarCreateRandom.jar复制到lib文件夹中。

4)依次将三个Jar包添加到构建路径中。添加后的包资源管理器结构如图4所示。

4  将所需的Jar包全部配置到构建路径中的效果

5)在设计视图中,打开程序的主窗体MainFrame,并设置窗体为空布局,以及窗体的名称,然后在左侧的工具面板中,选择按钮,在弹出的Open type对话框中,输入com.lzw.BackgroundPanel后,单击“确定”按钮,将当前组件放置到窗体中,并调整窗体和组件的大小。

6)在src节点上添加一个名称为images的文件夹,并将背景图片复制到这个文件夹中。

7)选中刚刚添加的BackgroundPanel组件,在左侧的属性面板中找到image属性,单击“…”按钮,将弹出选择图片对话框,这里选择background.jpg,如图5所示,单击“确定”按钮。

5  选择图片对话框

8)向该窗体中添加文本框、标签、分隔符和按钮控件,并设置主要属性,如表1所示。

1                   程序主窗体中控件的属性设置

控件名称

控件属性

关联变量

text:■

font(宋体, B, 26)

foreground128,0,0

luckyNumberText

 

numberText

text:转换后:

resultLable

text:确定

button

text:告诉我答案

button_1

text:再来一次

button_2

9)转到代码视图,在public class MainFrame extends JFrame {语句的下方定义一个成员变量luckyNumber,用于保存幸运数字。关键代码如下:

public class MainFrame extends JFrame {  //系统生成的代码

      public int luckyNumber = 0;       //定义成员变量的代码

10)在窗体的构造方法中,实例化CreateRandom的对象,并调用该对象的createRandom()方法获取幸运数字赋值给成员变量luckyNumber

CreateRandom cRandom = new CreateRandom(); // 创建并实例化CreateRandom的对象

luckyNumber = cRandom.createRandom(); // 获取幸运数字

说明:成员变量在整个窗体范围内有效。

11)在“确定”按钮上,双击鼠标左键,进入到代码视图,这时,Eclipse将自动为该按钮添加单击事件,在该事件的actionPerforment()方法中编写以下代码,判断输入的数字是否等于幸运数字,并显示相应的提示。

int inNumber = numberText.getInt();         // 获取输入的数字

if (inNumber > luckyNumber) {                 // 当大于幸运数字时

      resultLable.setText("大了,继续努力!");

} else if (inNumber < luckyNumber) {       // 当小于幸运数字时

      resultLable.setText("小了,继续努力!");

} else {                                                   // 与幸运数字相同

      resultLable.setText("恭喜,猜对了!");

      luckyNumberText.setText(String.valueOf(luckyNumber));        // 显示幸运数字

}

12)在“告诉我答案”按钮上,双击鼠标左键,进入到代码视图,这时,Eclipse将自动为该按钮添加单击事件,在该事件的actionPerforment()方法中编写以下代码,在窗体中显示幸运数字。

luckyNumberText.setText(String.valueOf(luckyNumber)); // 显示幸运数字

13)在“再来一次”按钮上,双击鼠标左键,进入到代码视图,这时,Eclipse将自动为该按钮添加单击事件,在该事件的actionPerforment()方法中编写以下代码,重新生成幸运数字、并重置相应内容。

CreateRandom cRandom = new CreateRandom();       // 创建并实例化CreateRandom的对象

luckyNumber = cRandom.createRandom();                      // 获取幸运数字

luckyNumberText.setText("■");                               // 重置幸运数字

resultLable.setText("");                                            // 清空显示结果标签

numberText.setText("");                                          // 清空数字输入框的内容

14)保存该文件,单击按钮,运行该程序,将显示如图6所示的运行结果。

6  默认的运行结果

输入所猜数字,单击“确定”按钮,将显示如图1、图2和图3所示的运行结果;单击“告诉我答案”按钮,将直接显示出幸运数字,如图7所示;单击“再来一次”将重新开始游戏。

7  显示答案