主题:[讨论]应用
buaacse3606
[专家分:0] 发布于 2007-11-25 00:02:00
本人有四个JAVA程序(见上传文件),希望做出一个界面,将Clock程序放在界面上,并设置三个按钮“计算”,“益智”,“游戏”,当鼠标点击按钮时,分别运行Caculator,blackvswhite,ufo_attack.
初学JAVA,希望各位大侠不令赐教!!!
http://upload.programfan.com/upfile/20071125142571.rar
最后更新于:2007-11-25 14:27:00
回复列表 (共23个回复)
21 楼
buaacse3606 [专家分:0] 发布于 2007-11-25 14:24:00
ufo(8)
//定义Missile类,继承于Piece类
class Missile extends Piece {
//导弹类的构造函数
public Missile (UFO_Attack a) {
//导弹属性值的初始化
this.a = a ;
px = opx = 0 ;
py = opy = 0 ;
vx = 0 ;
vy = 7 ;
w = 12 ;
h = 22 ;
active = false ;
img = a.missile ;
}
//对象的移动函数
public void move() {
opx = px ;
opy = py ;
px = a.L.px ;
// 使移动的速度更加实际化
int dx = px - opx ;
int nvy = vy*vy - dx*dx ;
if (nvy > 0) nvy = (int) Math.sqrt(nvy) ; // Should exceptions
if (nvy < 1) nvy = 1 ;
py += nvy ;
if (py > a.window_size.height + 2*h) active = false ;
}
int seq = 0 ;
//导弹对象的绘制
public void draw() {
//设置绘制区域
set_draw_rectangles(a.paint_area, a.new_area) ;
//先将变化绘制到缓冲中
Graphics bg = a.buffer.getGraphics() ;
bg.clipRect(a.paint_area.x, a.paint_area.y, w, h);
bg.drawImage(a.backdrop,0,0,a) ;
bg.dispose() ;
//由于导弹所用的图片是一个序列图,所以要从中剪切,然后再使用
//根据seq的值来显示此序列图的一部分
seq = ++seq % 1 ;
int dx = px - opx ;
seq = 0 ;
if (dx > 0)
seq = 1 ;
else if (dx < 0)
seq = 2 ;
//将变化绘制到缓冲上
bg = a.buffer.getGraphics() ;
bg.clipRect(a.new_area.x, a.new_area.y, w, h);
bg.drawImage(img,a.new_area.x-w*seq,a.new_area.y,a) ;
bg.dispose() ;
//使用新的区域
a.paint_area.add(a.new_area) ;
//将缓冲绘制到屏幕上
Graphics g = a.getGraphics() ;
g.clipRect(a.paint_area.x ,a.paint_area.y, a.paint_area.width, a.paint_area.height);
g.drawImage(a.buffer, 0, 0, a);
g.dispose() ;
}
}
//定义UFO类,继承于Piece类
class UFO extends Piece {
//UFO类的构造函数
public UFO (UFO_Attack a) {
//UFO属性值的初始化
this.a = a ;
vx = (Math.random() > 0.5 ? 1 : -1) ;
vy = -2 ;
w = 20 ;
h = 8 ;
int aw = a.window_size.width ;
px = opx = (int) (w/2+1 + (aw-w-2)* Math.random()) ;
py = opy = a.window_size.height + h/2 + 1 ;
active = true ;
img = a.ufostrip ;
}
//UFO对象的移动函数
public void move() {
opx = px ;
opy = py ;
px += vx ;
py += vy ;
if (py < -h/2) active = false ;
if ((px <= w/2) ||
(px >= (a.window_size.width - w/2)) ||
(Math.random() > 0.96)) {
vx = -vx ;
}
}
int seq = 0 ;
int seq2 = 0 ;
//UFO对象的绘制函数
public void draw() {
//设置对象的绘制区域
set_draw_rectangles(a.paint_area, a.new_area) ;
// 清除旧的图像
Graphics bg = a.buffer.getGraphics() ;
bg.clipRect(a.paint_area.x, a.paint_area.y, w, h);
bg.drawImage(a.backdrop,0,0,a) ;
bg.dispose() ;
// 由于UFO用的图片是一个序列图,要进行剪切再使用
//根据seq2的值选择相应的部分
if ((++seq2 % 4) == 0) seq = ++seq % 4 ;
// 绘制新的区域到缓冲中
bg = a.buffer.getGraphics() ;
bg.clipRect(a.new_area.x, a.new_area.y, w, h);
bg.drawImage(img,a.new_area.x-w*seq,a.new_area.y,a) ;
bg.dispose() ;
// 使用新的区域
a.paint_area.add(a.new_area) ;
// 将缓冲绘制到屏幕上
Graphics g = a.getGraphics() ;
g.clipRect(a.paint_area.x ,a.paint_area.y, a.paint_area.width, a.paint_area.height);
g.drawImage(a.buffer, 0, 0, a);
g.dispose() ;
}
}
22 楼
buaacse3606 [专家分:0] 发布于 2007-11-25 14:25:00
ufo(9)
//定义爆炸类,继承于Piece类
class Explosion extends Piece {
//Explosion类的构造函数
public Explosion (UFO_Attack a, int x, int y) {
//爆炸对象属性值的初始化
this.a = a ;
w = 30 ;
h = 30 ;
px = opx = x ;
py = opy = y ;
active = true ;
img = a.missile_explosion ;
}
int seq = 0 ;
int seq2 = 0 ;
//爆炸对象的绘制函数
public void draw() {
//设置绘制的区域
set_draw_rectangles(a.paint_area, a.new_area) ;
// 清除旧的图像
Graphics bkd_g = a.backdrop.getGraphics();
bkd_g.clipRect(a.paint_area.x, a.paint_area.y, w, h);
bkd_g.drawImage(a.bgimg,0,0,a.window_size.width,a.window_size.height,a) ;
// 由于爆炸用的图片是一个序列图,要进行剪切再使用
//根据seq2的值选择相应的部分
if ((++seq2 % 4) == 0) seq = ++seq % 5 ;
// 爆炸图最后的部分显示后,将active属性值设为false,并将其清除
if (seq == 4) active = false ;
// 将新的区域绘制到缓冲中
bkd_g.clipRect(a.new_area.x, a.new_area.y, w, h);
bkd_g.drawImage(img,a.new_area.x-w*seq,a.new_area.y,a) ;
bkd_g.dispose() ;
// 将变化绘制到缓冲中
Graphics bg = a.buffer.getGraphics() ;
bg.clipRect(a.new_area.x,a.new_area.y,w,h);
bg.drawImage(a.backdrop,0,0,a) ;
bg.dispose() ;
// 将缓冲绘制到屏幕上
Graphics g = a.getGraphics() ;
g.clipRect(a.paint_area.x ,a.paint_area.y, a.paint_area.width, a.paint_area.height);
g.drawImage(a.buffer, 0, 0, a);
g.dispose() ;
}
//爆炸对象的清除
public void erase() {
//设置绘制的区域
set_draw_rectangles(a.paint_area, a.new_area) ;
// 清除旧的图像
Graphics bkd_g = a.backdrop.getGraphics();
bkd_g.clipRect(a.paint_area.x, a.paint_area.y, w, h);
bkd_g.drawImage(a.bgimg,0,0,a.window_size.width,a.window_size.height,a) ;
bkd_g.dispose() ;
// 对缓冲和屏幕执行同样的操作
super.erase() ;
}
}
23 楼
z416177937 [专家分:70] 发布于 2007-12-04 19:59:00
郁闷了,怎么回帖的都是你自己啊!
我来回复