Java基于swing实现的弹球游戏代码
本文实例讲述了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程序设计有所帮助。