?? ufo.java
字號:
/*
* UFO.java
*
* Copyright 2001 SkyArts. All Rights Reserved.
*/
import javax.microedition.lcdui.*;
/**
* UFO類
*
* @author Hideki Yonekawa
* @version 1.0
*/
class UFO extends Sprite {
/** 儲存自機對象的變量 */
private MyShip myShip;
/** 儲存UFO圖像的類變量 */
private int missileCount = 0;
/** 儲存UFO爆炸圖像的類變量 */
private int direction;
/** 代表向右的常量 */
static final int DIRECTION_RIGHT = 0;
/** 代表向左的常量 */
static final int DIRECTION_LEFT = 1;
/** 儲存UFO圖像的類變量 */
private static Image ufoImg = null;
/** 儲存UFO爆炸圖像的類變量 */
private static Image burstImg = null;
/**
* 構造函數
* @param myShip 自機對象
*/
UFO(MyShip myShip) {
this.myShip = myShip;
if(ufoImg == null) {
//UFO圖像為null時就取得圖像
try {
ufoImg = Image.createImage("/ufo.png");
burstImg = Image.createImage("/burst.png");
}catch(Exception e) {}
}
//設定寬度與高度
width = ufoImg.getWidth();
height = ufoImg.getHeight();
}
/**
* 設定Alive狀態的方法
* @param isAlive 是Alive狀態就為true,不是Alive狀態就為false
*/
void setAlive(boolean isAlive) {
if(isAlive) {
//由于在變成Alive狀態時會將這個UFO復活,因此要把值予以初始化
this.isHit = false;
missileCount = 0;
tickCount = 0;
}
super.setAlive(isAlive);
}
/** 要移動Sprite時所調用的方法 */
void doMove() {
if(this.isAlive) { //Alive時
if(isHit()) { //Hit時
tickCount++;
//Tick計數為5的話就會從畫面消失
if(tickCount > 4) {
setAlive(false);
}
}else { //不是Hit時
//針對行進方向來移動UFO
switch(direction) {
case DIRECTION_RIGHT:
x = x + (width / 2) + 1;
break;
case DIRECTION_LEFT:
x = x - (width / 2) - 1;
break;
}
}
}
}
/** 在描繪Sprite的時候所調用的方法 */
void doDraw(Graphics g) {
if(isAlive) {
if(isHit()) {
//Hit時就描繪爆炸圖像
g.drawImage(burstImg, x, y, Graphics.TOP|Graphics.LEFT);
}else {
g.drawImage(ufoImg, x, y, Graphics.TOP|Graphics.LEFT);
}
}
}
/**
* 設定UFO方向的方法
* @param direction DIRECTION_RIGHT丄DIRECTION_LEFT偺偳偪傜偐
*/
void setDirection(int direction) {
this.direction = direction;
}
/**
* 用來判定UFO是否發出飛彈的方法
* @return boolean 發射飛彈時為true、沒有發射時為false
*/
boolean isDropBomb() {
if(missileCount < 3) {
//飛彈的發射數比3發還少時
//切割出UFO的中央坐標
int center = x + (width /2);
if(center >= myShip.getX() && center <= myShip.getX() + myShip.getWidth()) {
//UFO的中央坐標與自機的X坐標重疊時
//發射飛彈
missileCount++;
return true;
}
}
//處理到這個地方就不發射飛彈
return false;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -