JAVA课程设计 团队博客

设计内容:

猜数游戏2人)等级D

功能要求:计算机产生随机数,猜中即胜猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。

新加功能:游戏说明

设计思路:

功能模块设计:

 

 

1、随机数的获取

功能描述: 玩家输入一个数字, 数字的范围在 1-100 之间, 系统获取随机数。

2 、 输入输出模块

功能描述: 对玩家输入的数字进行判断和提示。 如果玩家输入的不是系统要求的数字,

系统将提示您, 您输入的不是数字请重新输入. 。 如果玩家输入的数字与随机生成数相比较,

比随机生成数小. 系统提示您, 数字太小请您重新输入。 如果玩家输入的数字与随机生成数相

比较, 比随机生成数大. 系统提示您, 数字太大请您重新输入

3 、 判断模块

功能描述: 算出所用时间在玩家猜中时给出其所用时间, 系统给出对其水平的判断和是

否继续的提示; 对玩家要求判断执行

4、 自动计数模块

功能描述: 系统根据您猜数字的次数, 自动计数

5、 结果输出模块

功能描述: 直到用户猜到数字为止, 提示信息是否重新猜数字, 如果重新开始将进入下一次游戏, 如果

关闭将退出游戏系统


代码展示:

 

package KeShe;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.util.Random;

import javax.swing.*;

 public class GuessNum extends javax.swing.JFrame {

{

//Set Look & Feel

try { //设置窗口外观为 windows 外观

javax.swing.UIManager.setLookAndFeel

("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

}

catch(Exception e) {

e.printStackTrace();

}

}

 private JLabel jLabel1;

private JTextField jTextField1;

private JButton jButton1;

private JButton jButton2;

private JButton jButton3;

private int number=0;

private int counter=0;

long startTime = System.currentTimeMillis();

long endTime;

// Auto-generated main method to display this JFrame

 public static void main(String[] args) {

GuessNum inst = new GuessNum();

inst.setVisible(true); //显示窗口

}

/**

*新建一个随机数产生器, 然后生成一个 1 100 之间的整数

*/

 public GuessNum() {

super();

initGUI();

Random random = new Random();

number = random.nextInt(100); //产生一个 1-100 间的随机数

}

/**

*初始化窗口组件

*/

 private void initGUI() {

try {

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭时销毁窗口

getContentPane().setLayout(null);//设置窗口布局为绝对布局

{

jLabel1 = new JLabel();

getContentPane().add(jLabel1);

jLabel1.setText("<html>欢迎进入有趣的猜数字游戏; <br><br><br>"+

" 1 100 之间的整数, 你猜是什么? 快来猜猜看吧!<br><br><br>"+

"请输入你想猜的数: <ml>");

jLabel1.setBounds(45, 0, 420, 150);//设置标签位置

}

 {

jTextField1 = new JTextField();

getContentPane().add(jTextField1);

jTextField1.setBounds(42, 168, 112, 28);//输入窗口大小

jTextField1.addKeyListener(new KeyAdapter(){//文本框添加键盘按键监听-监听回车键

public void keyPressed(KeyEvent evt) {

jTextField1KeyPressed(evt);

}

});

}

 {

jButton1 = new JButton();

getContentPane().add(jButton1);

jButton1.setText("确定");

jButton1.setBounds(182, 168, 95, 28);//确定按钮

jButton1.addActionListener(new ActionListener(){//按钮添加监听

public void actionPerformed(ActionEvent evt) {

jButton1ActionPerformed(evt);//按钮被点击时 执行该方法

}

});

}

 {

jButton2 = new JButton();

getContentPane().add(jButton2);

jButton2.setText("重新开始");

jButton2.setBounds(182, 218, 95, 28);//设置重新开始按钮

jButton2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

jButton2ActionPerformed(evt);

}

});

}

 {

jButton3 = new JButton();

getContentPane().add(jButton3);

jButton3.setText("游戏说明");

jButton3.setBounds(182, 268, 95, 28);//设置游戏说明开始按钮

jButton3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

jButton3ActionPerformed(evt);

}

});

}

 pack();

this.setSize(450, 400);// 设置窗口大小

setLocationRelativeTo(null);// 设置窗口在显示器居中显示

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* “确定”按钮事件监听

* @param evt

*/

 private void jButton1ActionPerformed(ActionEvent evt) {

int guess=0; // 记录玩家所猜测的数字

counter++; // 计数器增加一

// trycatch 的异常管理。

try {

// 获取玩家的输入

guess=Integer.parseInt(jTextField1.getText());

}

catch (Exception e) {

// 如果玩家不是输入一个合法的整数, 则让他重新输入。

JOptionPane.showMessageDialog(null, "数字不合法, 请输入一个 1-100 之间的整数!"); //显示一个对话框

jTextField1.setText("");//清空文本框内容

jTextField1.requestFocus();//文本框获取输入焦点

return ;

}

// 对玩家的输入进行判断。

if (guess > number){

JOptionPane.showMessageDialog(null, "猜的有点大了, 再小一点吧!");

jTextField1.setText("");

jTextField1.requestFocus();

return ;

}

//输入值大于随机值时

if (guess < number){

JOptionPane.showMessageDialog(null, "猜的一有点小了, 再大一点吧!");

jTextField1.setText("");

jTextField1.requestFocus();

return ;

}

//输入值小于随机值是

if (guess == number) {

endTime=System.currentTimeMillis();

// 判断成绩。

switch (counter) {

case 1: JOptionPane.showMessageDialog(null,"好厉害, 真棒!");

break;

case 2:

case 3:

case 4:

case 5:

case 6:

case 7: JOptionPane.showMessageDialog(null,"这么快就猜对了, 好厉害!");

break;

default:JOptionPane.showMessageDialog(null,"猜了半天才猜出来, 尚须努力!");

break;

}

//swutch条件语句,根据猜的次数给出相应的评语

JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次 共花了"+(endTime-

startTime)/1000+"秒的时间答对正确答案!");

}

jTextField1.setText("");

jTextField1.requestFocus();

}

 private void jButton2ActionPerformed(ActionEvent evt) {// 重新开始

Random random = new Random(); // 重新生成随机数

number = random.nextInt(100); // 产生一个 1-100 间的随机数

counter=0; // 记录玩家猜测的次数

jTextField1.setText("");

startTime = System.currentTimeMillis();

}

 private void jButton3ActionPerformed(ActionEvent evt) {

JOptionPane.showMessageDialog(null,"猜数游戏游戏说明:\n1.系统产生一个随机数,玩家输入一个1-100的整数\n"

+ "2.如果你的数与系统产生的随机数不同,系统会提示你偏大或偏小,直到你的数和随机数相等\n"

+ "3.猜中后,系统会给出相应的评语,次数和游戏用时\n"

+ "4.一切解释权归制作者所有");

}

 private void jTextField1KeyPressed(KeyEvent evt) {

// 监听文本框回车

if (evt.getKeyCode()==KeyEvent.VK_ENTER) {

jButton1.doClick();// 文本框按回车键 执行“确定”按钮的事件

}

}

}

使用截图:

 

 

 

 

 

posted on 2019-01-18 07:33  Pb991217  阅读(109)  评论(0编辑  收藏  举报