猜数字小游戏(图像用户界面编程实验——猜数字游戏)

综合运用 GUI 编程相关语法,完成一个简单的猜数字游戏项目。

该程序随机在 1 到 1000 的范围中选择一个供用户猜测的整数。

界面上提供一个文本框来接收用户输入的猜测的数,如果用户猜得太大,则背景变为红色,如果猜得太小,背景变为蓝色。

用户猜对后,文本框变为 不可编辑,同时提示用户猜对了。界面上提供一个按钮,使用户可以重新开始这个游戏。在界 面上还需显示用户猜测的次数。

MyFrame类为图形界面编写类

MyListener类为监视器

Test类为主类

                                                                       

MyFrame类:

package com.java.demo5;

import java.awt.BorderLayout;

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

public class MyFrame extends JFrame {
	JLabel lab1,lab2,lab3,lab;
	JButton btn1,btn2,btn3;
	JTextField txt;
	JPanel panel,btn;
	int i=0;
	MyFrame(String s){
		init(s);
		this.setBounds(300,300,300,200);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	public void init(String s) {
		this.setTitle(s);
		lab1=new JLabel("你已猜测了"+i+"次",JLabel.CENTER);
		this.add(lab1,BorderLayout.NORTH);
		
		lab2=new JLabel("输入猜测的数");
		lab=new JLabel("");
		txt=new JTextField(10);
		panel=new JPanel();
		panel.add(lab2);
		panel.add(txt);
		panel.add(lab);
		this.add(panel,BorderLayout.CENTER);
		
		btn=new JPanel();
		btn1=new JButton("确定");
		btn2=new JButton("重新开始");
		btn3=new JButton("退出");
		btn.add(btn1);
		btn.add(btn2);
		btn.add(btn3);
		this.add(btn,BorderLayout.SOUTH);
		
		MyListener e=new MyListener(this);
		btn1.addActionListener(e);
		btn2.addActionListener(e);
		btn3.addActionListener(e);
	}
	
}

MyListener类:

package com.java.demo5;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;

public class MyListener implements ActionListener{
	MyFrame myframe;
	int num=(int)(Math.random()*1000)+1;
	public MyListener(MyFrame myframe) {
		this.myframe=myframe;
	}
	public void text(MyFrame myframe) {
		myframe.i++;
		String txt1=myframe.txt.getText();
		if(Integer.parseInt(txt1)<num) {
			myframe.panel.setBackground(Color.blue);
			myframe.lab.setText("太小!");
		}
		else if(Integer.parseInt(txt1)>num) {
			myframe.panel.setBackground(Color.red);
			myframe.lab.setText("太大!");
		}
		else {
			JOptionPane.showMessageDialog(myframe,"恭喜你,猜对了!!!",
					"恭喜了",JOptionPane.INFORMATION_MESSAGE);
			
		}
		myframe.lab1.setText("你已猜测了"+String.valueOf(myframe.i)+"次");
		
	}
	public void actionPerformed(ActionEvent e) {
		System.out.println(num);
		JButton btn=(JButton)e.getSource();
		String str=btn.getText();
		if(str.equals("确定")) {
			this.text(myframe);
		}
		else if(str.equals("重新开始")) {
			myframe.panel.setBackground(Color.white);
			myframe.i=0;
			
			myframe.lab1.setText(null);
			myframe.txt.setText(null);
			this.text(myframe);
		}
		else {
			System.exit(0);
		}
	}
}

Test主类:

package com.java.demo5;

public class Test {
	public static void main(String args[]) {
		MyFrame frame=new MyFrame("猜数字小游戏");
	}
}

                              

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值