?? missile.java
字號:
import java.awt.Graphics;
/**
* <p>Title: UFO_Play</p>
*
* <p>Description: 基于applet的攻擊UFO的小游戲中的導彈類</p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: 鹿児島大學</p>
* @author 柴 智
* @version 1.0
*/
public class Missile extends Piece {
//導彈類的構造函數
public Missile(UFO_Canvas ufo_canvas) {
//導彈屬性值的初始化
super(ufo_canvas);
px = opx = 0;
py = opy = 0;
vx = 0;
vy = 7;
w = 12;
h = 22;
active = false;
img = ufo_canvas.getMissile();
}
//對象的移動函數
public void move() {
opx = px;
opy = py;
px = ufo_canvas.getL().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 > ufo_canvas.getWindow_size().height + 2 * h) {
active = false;
}
}
int seq = 0;
//導彈對象的繪制
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();
//由于導彈所用的圖片是一個序列圖,所以要從中剪切,然后再使用
//根據seq的值來顯示此序列圖的一部分
seq = ++seq % 1;
int dx = px - opx;
seq = 0;
if (dx > 0) {
seq = 1;
} else if (dx < 0) {
seq = 2;
}
//將變化繪制到緩沖上
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 + -