Java基于swing实现的弹球游戏代码
作者:shichen2014 发布时间:2023-09-15 05:13:49
本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。
主要功能代码如下:
package Game;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;
/**
* 游戏界面类
*
* @author Administrator
*
*/
public class Game extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private static Game UI;
private Graphics g;
private Listener ml;
public javax.swing.JLabel text_field;
public javax.swing.JProgressBar pBar;
private String command;
public ArrayList<MyThread> list = new ArrayList<MyThread>();
private javax.swing.JToggleButton button;
public static void main(String args[]) {
UI = new Game();
UI.initUI();
}
/**
* 初始化窗体的方法
*/
public void initUI() {
// 设置标题
this.setTitle("是高手就坚持10s");
// 设置大小
this.setSize(610, 635);
// 设置关闭是退出程序
this.setDefaultCloseOperation(3);
// 设置打开窗体时在屏幕中间显示
this.setLocationRelativeTo(null);
// 设置窗体的流式布局管理器
this.setLayout(new java.awt.FlowLayout());
// 设置窗体背景颜色
this.getContentPane().setBackground(java.awt.Color.black);
// 创建文本标签对象
text_field = new javax.swing.JLabel();
javax.swing.JLabel lable = new javax.swing.JLabel("时 间 :");
// 设置文本标签前景颜色
lable.setForeground(java.awt.Color.red);
text_field.setForeground(java.awt.Color.red);
// 创建进度条对象
pBar = new javax.swing.JProgressBar(0, 330);
// 创建按钮对象
button = new javax.swing.JToggleButton();
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("暂停");
// 通过匿名内部类来创建动作 *
java.awt.event.ActionListener button_listener = new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
String com = e.getActionCommand();
if (com.equals("暂停")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/start.gif"));
button.setActionCommand("继续");
for (int i = 0; i < list.size(); i++) {
list.get(i).PauseThread();
}
}
if (com.equals("继续")) {
button.setMargin(new Insets(0, 0, 0, 0));
button.setIcon(new javax.swing.ImageIcon("images/Pause.gif"));
button.setActionCommand("暂停");
for (int i = 0; i < list.size(); i++) {
list.get(i).ContinueThread();
}
}
}
};
button.addActionListener(button_listener);
this.add(button);
this.add(lable);
this.add(pBar);
this.add(text_field);
// 的到菜单条
JMenuBar bar = creatMenuBar();
// 为窗体设置菜单条
this.setJMenuBar(bar);
// 设置窗体的可见性
this.setVisible(true);
}
/**
* 创建菜单条的方法
*
* @return
*/
public JMenuBar creatMenuBar() {
// 创建菜单条对象
JMenuBar bar = new JMenuBar();
// 创建菜单对象
JMenu menu_menu = new JMenu("菜单");
JMenu difficulty_menu = new JMenu("难度");
JMenu help_menu = new JMenu("帮助");
// 创建菜单选项对象
JMenuItem star_item = new JMenuItem("开始");
JMenuItem exit_item = new JMenuItem("退出");
JMenuItem help_item = new JMenuItem("游戏说明");
JMenuItem about_item = new JMenuItem("关于");
// 创建单选选项
JRadioButtonMenuItem easy_item = new JRadioButtonMenuItem(
"简单");
JRadioButtonMenuItem middle_item = new JRadioButtonMenuItem(
"中等");
JRadioButtonMenuItem hard_item = new JRadioButtonMenuItem(
"困难");
// 创建一个按钮组
ButtonGroup group = new ButtonGroup();
// 将单选按钮添加到按钮组中
group.add(easy_item);
group.add(middle_item);
group.add(hard_item);
// 将单选按钮添加到菜单中
difficulty_menu.add(easy_item);
difficulty_menu.add(middle_item);
difficulty_menu.add(hard_item);
// 通过匿名内部类来创建动作 *
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
command = e.getActionCommand();
// 如果选择开始,则创建线程对象
if (command.equals("开始") && list.size() == 0) {
creatBall(20, 1);
}
// 如果选择退出按钮,则退出程序
if (command.equals("退出")) {
System.exit(0);
}
// 如果选择简单按钮
if (command.equals("简单") && list.size() == 0) {
creatBall(20, 1);
}
// 如果选择中等按钮
if (command.equals("中等") && list.size() == 0) {
creatBall(50, 2);
}
if (command.equals("困难") && list.size() == 0) {
creatBall(40, 2);
}
if (command.equals("游戏说明")) {
JOptionPane.showMessageDialog(null,
"移动鼠标,用挡板接球,如果接不住,就算输了……\n游戏可以选择难度,包括简单、中等、困难");
}
if (command.equals("关于")) {
JOptionPane
.showMessageDialog(null,
"这是一个用Java编写的小游戏……\n制作人:沈冠军\n时间:2010年8月\n版权所有,翻版必究!");
}
}
};
// 添加动作 *
star_item.addActionListener(listener);
exit_item.addActionListener(listener);
easy_item.addActionListener(listener);
middle_item.addActionListener(listener);
hard_item.addActionListener(listener);
help_item.addActionListener(listener);
about_item.addActionListener(listener);
// 将菜单选项对象添加到菜单对象上
menu_menu.add(star_item);
menu_menu.add(exit_item);
help_menu.add(help_item);
help_menu.add(about_item);
// 将菜单对象添加到菜单条上
bar.add(menu_menu);
bar.add(difficulty_menu);
bar.add(help_menu);
// 返回菜单条对象
return bar;
}
/**
* 创建线程对象的方法
*
* @param speed
* :速度
*
*/
public void creatBall(int speed, int num) {
Random ran = new Random();
if (ml == null) {
g = UI.getGraphics();
ml = new Listener(g);
UI.addMouseListener(ml);
UI.addMouseMotionListener(ml);
}
for (int i = 0; i < num; i++) {
int x = ran.nextInt(600) + 10;
int y = ran.nextInt(300) + 100;
MyThread th = new MyThread(g, ml, UI, x, y, speed);
list.add(th);
th.start();
}
}
/**
* 得到命令的方法
*/
public String getCommand() {
return command;
}
}
package Game;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* 鼠标 * 的类
*
* @author Administrator
*
*/
public class Listener extends MouseAdapter {
private Graphics g;
private int x = 5, y = 620;
private int width = 100, height = 10;
public Listener(Graphics g) {
this.g = g;
}
public void mouseMoved(MouseEvent e) {
// 设置画布对象颜色
synchronized (this.g) {
g.setColor(Color.black);
g.fillRect(x, y, width, height);
x = e.getX();
g.setColor(java.awt.Color.green);
g.fillRect(x, y, width, height);
}
}
/**
* 得到x的方法
*
* @return:x
*/
public int getX() {
return x;
}
}
运行效果如下图所示:
希望本文所述对大家的Java程序设计有所帮助。


猜你喜欢
- 一.认识IO1.IO的分类(1)BIO:同步阻塞IO(2)NIO:同步非阻塞IO(3)AIO:异步阻塞IO注意: 这里主要介绍BIO2.IO
- 😎 先看效果一人分饰多角(bushi)😏 后端代码🍗 先引入websocket依赖<!-- websocket消息推送 -->&
- 需求说明实现方式嗯 这个可以视作一个经典的消费者和生产者的问题,详细见代码注释代码内容 消费者,负责取走生产者产生的信息/** * @aut
- 前言使用过SpringBoot的都应该知道,一个SpringBoot 项目就是由一个一个 Starter 组成的,一个 Starter 代表
- 在项目中选择器的使用是非常多的,以下是本人在项目中的一些常用的背景选择器的写法带边框下划线背景选择器效果图:上面布局中放了10个CheckB
- 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前身安全套接层(Secure Sockets
- Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象。Gson里最重要的对象有2个Gs
- 使用场景1、将用户信息导出为excel表格(导出数据....)2、将Excel表中的信息录入到网站数据库(习题上传....)大大减轻网站录入
- 这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件。一、简介Add sleuth to
- 相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对
- 一、简介1、DES 简介DES 全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,197
- 这篇文章主要介绍了Java TreeSet类的简单理解和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- IDEA SpringBoot项目配置热更新的步骤1.在pom.xml中添加依赖:<dependency><groupId
- 首先非空变量和可空变量的区别:// name为不可为空的变量, 不能赋值为null ,若有判断 if(name==null) 无意义,因为肯
- 一、思路1.定义一个toFind变量来传入要查找的元素2.遍历整个顺序表并判定当前下标的元素等不等于toFind3.如果等于就返回一个tru
- 前言在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一
- Java关键字及其作用一、 总览:访问控制private protected public类,方法和变量修饰符abstract class
- 如果想分析Android下 某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump
- 本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法。分享给大家供大家参考,具体如下:import java.awt.Col
- 本文实例讲述了C#实现程序开机启动的方法。分享给大家供大家参考,具体如下://此方法把启动项加载到注册表中//获得应用程序路径string