您的位置:首页 > 编程语言 > Java开发

学习随笔——Java制作简单猜数字小游戏

2017-03-28 19:33 417 查看
效果图:



Test类:

package guess;

public class Test {
public static void main(String[] args){
GuessFrame g = new GuessFrame();
}
}


GuessFrame类:

package guess;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**
* 猜数字游戏的主面板
* @author Administrator
*
*/
public class GuessFrame extends JFrame {

//凡是放在面板上的组件都设置为成员变量
JTextField text;
JLabel label;
ButtonPanel panel;
Random random;

/**
* 一个随机数
*/
int number;

/**
* 在构造方法中进行窗口的初始化
*/
public GuessFrame(){
//设置标题
setTitle("猜数字游戏");
//设置大小
setSize(400,300);   //在屏幕上显示的像素
//不希望调整大小
setResizable(false);
//设置关闭动作

setDefaultCloseOperation(EXIT_ON_CLOSE);

//创建一个文本框
text = new JTextField("");
//创建一个提示的字符创标签
label = new JLabel("请输入一个1000以内的整数");
//创建一个边界布局管理器
BorderLayout mgr = new BorderLayout();
//获得内容面板
Container con = getContentPane();
//给内容面板添加布局管理器
con.setLayout(mgr);
//在内容面板上添加文本框和字符创标签
con.add(text, BorderLayout.NORTH);
con.add(label, BorderLayout.CENTER);

//创建按钮的面板
panel = new ButtonPanel();
//将面板添加到主窗口上
con.add(panel, BorderLayout.SOUTH);

//初始化随机数对象
random = new Random();

//调用产生随机数的方法
setRandomNumber();

//注册监听器
Mylistener m = new Mylistener();
panel.button1.setActionCommand("guess");
panel.button2.setActionCommand("reset");
panel.button3.setActionCommand("exit");
panel.button1.addActionListener(m);
panel.button2.addActionListener(m);
panel.button3.addActionListener(m);

//设置可见      最后设置可见
setVisible(true);
}

/**
* 内部类:将三个按钮注册到一个监听器上
* @author Administrator
*
*/
class Mylistener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("guess")){
//猜
//获取玩家输入的字符
String s = text.getText();

try{
//玩家输入的数字字符型转换成数字
int num = Integer.parseInt(s);
//前置判断玩家输入的数字是否在0~1000之内
if(num>=0&&num<1000){
//获取的字符与随机数number进行比较
if(num>number){
label.setText(" 你猜的数字过大");
}else if(num<number){
label.setText(" 你猜的数字过小");
}else{
label.setText(" 恭喜你,猜对了!");
}
}else{
label.setText(" 你输入的数字不在0~1000之内");
}
}catch(Exception e1){
label.setText("你输入的不是数字");
}
}else if(e.getActionCommand().equals("reset")){
//重新来过
//重新产生随机数
setRandomNumber();
//提示标签复位
label.setText("请输入一个1000以内的整数");
//输入框清零
text.setText("");
}else if(e.getActionCommand().equals("exit")){
//退出
System.exit(0);
}
}

}

/**
* 给number赋值随机数的方法
*/
public void setRandomNumber(){
//产生一个随机数
number = random.nextInt(1000);
}
}


ButtonPanel类:

package guess;

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JPanel;

/**
* 放置三个按钮的面板
* @author Administrator
*
*/
public class ButtonPanel extends JPanel {   //JPanel组件不能独立存在,只能叠加到其他窗口

JButton button1;
JButton button2;
JButton button3;

/**
* 构造方法,初始化三个按钮,并且以网格布局的方式放在本面板上
*/
public ButtonPanel(){
//创建网格布局管理器
GridLayout mgr = new GridLayout(1,3);
//本面板设置网格布局管理器
setLayout(mgr);
//创建三个按钮
button1 = new JButton("猜");
button2 = new JButton("重新来过");
button3 = new JButton("退出");
//将三个按钮放置在本面板上
add(button1);
add(button2);
add(button3);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 游戏