📄 ufo.java
字号:
import java.awt.Graphics;
/**
* <p>Title: UFO_Play</p>
*
* <p>Description: 基于applet的攻击UFO的小游戏,定义UFO模型,继承于Piece</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: 鹿児島大学</p>
* @author 柴 智
* @version 1.0
*/
public class UFO extends Piece {
//UFO类的构造函数
public UFO(UFO_Canvas ufo_canvas) {
//UFO属性值的初始化
super(ufo_canvas);
vx = (Math.random() > 0.5 ? 1 : -1);
vy = -2;
w = 20;
h = 8;
int aw = ufo_canvas.getWindow_size().width;
px = opx = (int) (w / 2 + 1 + (aw - w - 2) * Math.random());
py = opy = ufo_canvas.getWindow_size().height + h / 2 + 1;
active = true;
img = ufo_canvas.getUfostrip();
}
//UFO对象的移动函数
public void move() {
opx = px;
opy = py;
px += vx;
py += vy;
if (py < -h / 2) {
active = false;
}
if ((px <= w / 2) ||
(px >= (ufo_canvas.getWindow_size().width - w / 2)) ||
(Math.random() > 0.96)) {
vx = -vx;
}
}
int seq = 0;
int seq2 = 0;
//UFO对象的绘制函数
public void draw() {
//设置对象的绘制区域
set_draw_rectangles(ufo_canvas.getPaint_area(), ufo_canvas.getNew_area());
// 清除旧的图像
Graphics bg = ufo_canvas.getBuffer().getGraphics();
bg.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y,
w, h);
bg.drawImage(ufo_canvas.getBackdrop(), 0, 0, ufo_canvas.getBaseApplet());
bg.dispose();
// 由于UFO用的图片是一个序列图,要进行剪切再使用
//根据seq2的值选择相应的部分
if ((++seq2 % 4) == 0) {
seq = ++seq % 4;
}
// 绘制新的区域到缓冲中
bg = ufo_canvas.getBuffer().getGraphics();
bg.clipRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w,
h);
bg.drawImage(img, ufo_canvas.getNew_area().x - w * seq,
ufo_canvas.getNew_area().y, ufo_canvas.getBaseApplet());
bg.dispose();
// 使用新的区域
ufo_canvas.getPaint_area().add(ufo_canvas.getNew_area());
// 将缓冲绘制到屏幕上
Graphics g = ufo_canvas.getBaseApplet().getGraphics();
g.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y,
ufo_canvas.getPaint_area().width,
ufo_canvas.getPaint_area().height);
g.drawImage(ufo_canvas.getBuffer(), 0, 0, ufo_canvas.getBaseApplet());
g.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -