?? boxer.java
字號:
/*
* Boxer.java
*
* Copyright 2001 SkyArts. All Rights Reserved.
*/
import javax.microedition.lcdui.*;
/**
* Boxer類
*
* @author Hideki Yonekawa
* @version 1.0
*/
class Boxer {
/** 代表上段防御狀態(tài)的常量 */
static final int GUARD_UP = 0;
/** 代表下段防御狀態(tài)的常量 */
static final int GUARD_DOWN = 1;
/** 代表上段拳擊狀態(tài)的常量 */
static final int PANCH_UP = 2;
/** 代表下段拳擊狀態(tài)的常量 */
static final int PANCH_DOWN = 3;
/** 代表后退狀態(tài)的常量 */
static final int BACK_STEP = 5;
/** 代表擊倒狀態(tài)的常量 */
static final int KNOCK_DOWN = 9;
/** 儲存現(xiàn)在狀態(tài)的變量 */
protected int currentState;
/** 儲存Tick計數(shù)的變量 */
protected int tickCount;
/** 儲存默認生命點數(shù)的常量 */
protected static final int DEFAULT_LIFEPOINT = 100;
/** 儲存現(xiàn)在生命點數(shù)的變量 */
protected int lifePoint;
/** 儲存了描繪開始之X坐標的變量 */
protected int drawX;
/** 儲存了描繪開始之Y坐標的變量 */
protected int drawY;
/** 用來在后退時所使用之儲存現(xiàn)在防御狀態(tài)的變量 */
protected int guardState;
/**
* 儲存拳擊手圖像的變量
* 以身體、上段防御、下段防御、上段拳擊、下段拳擊的順序來儲存
*/
protected Image[] images = new Image[5];
/** 構造函數(shù) */
Boxer() throws Exception {
//取得圖像的路徑
String imgPaths[] = getImagePaths();
//以路徑為基礎取得圖像
for(int i=0; i < imgPaths.length; i++) {
images[i] = Image.createImage(imgPaths[i]);
}
}
/** 將拳擊手設為初始狀態(tài)的方法 */
void doInitialize() {
currentState = BACK_STEP;
guardState = GUARD_UP;
lifePoint = DEFAULT_LIFEPOINT;
tickCount = 0;
}
/**
* 傳回拳擊手之圖像路徑字符串數(shù)組的方法
* @return String[]圖像的路徑字符串數(shù)組
身體、上段防御、下段防御、上段拳擊、下段拳擊的順序
*/
protected String[] getImagePaths() {
return new String[] {
"/player_body.png", //身體
"/player_guardUP.png", //上段防御
"/player_guardDOWN.png", //下段防御
"/player_panchUP.png", //上段拳擊
"/player_panchDOWN.png" //下段拳擊
};
}
/**
* 設定現(xiàn)在狀態(tài)的方法
* @param state GUARD_UP丄GUARD_DOWN丄PANCH_UP丄PANCH_DOWN丄BACK_STEP丄KNOCK_DOWN 的任一個
*/
void setCurrentState(int state) {
switch(state) {
case PANCH_UP:
case PANCH_DOWN:
case BACK_STEP:
//設定上段拳擊、下段拳擊、后退時
if(getCurrentState() != BACK_STEP) {
//在后退以外時儲存了上下防御的其中一個
guardState = getCurrentState();
}
break;
}
this.currentState = state;
}
/**
* 傳回現(xiàn)在狀態(tài)的方法
* @return int GUARD_UP丄GUARD_DOWN丄PANCH_UP丄PANCH_DOWN丄BACK_STEP丄KNOCK_DOWN偺偄偯傟偐
*/
int getCurrentState() {
return currentState;
}
/**
* 設定生命點數(shù)的方法
* @param lifePoint 要設定的生命點數(shù)值
*/
void setLifePoint(int lifePoint) {
this.lifePoint = lifePoint;
}
/**
* 傳回現(xiàn)在生命點數(shù)的方法
* @return int 現(xiàn)在的生命點數(shù)值
*/
int getLifePoint() {
return lifePoint;
}
/**
* 設定用來進行描繪之X坐標的方法
* @param x 進行描繪的X坐標
*/
void setDrawX(int x) {
this.drawX = x;
}
/**
* 設定用來進行描繪之Y坐標的方法
* @param x 進行描繪的X坐標
*/
void setDrawY(int y) {
this.drawY = y;
}
/**
* 傳回圖像高度的方法
* @return int 進行描繪之圖像的高度
*/
int getHeight() {
//傳回身體圖像的高度
return images[0].getHeight();
}
/** 移動拳擊手的方法 */
void doMove() {
switch(getCurrentState()) {
case PANCH_UP:
case PANCH_DOWN:
//揮出上下拳擊時
tickCount++;
if(tickCount > 3) {
//等待一定時間返回防御狀態(tài)
setCurrentState(guardState);
tickCount = 0;
}
break;
}
}
/**
* 進行描繪的方法
* @param g 進行描繪用的Graphics對象
*/
void doDraw(Graphics g) {
//根據(jù)狀態(tài)來描繪身體與手腕的圖像
switch(currentState) {
case GUARD_UP: //上段防御
g.drawImage(images[0], drawX, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[1], drawX +4, drawY +17, Graphics.TOP|Graphics.LEFT);
break;
case GUARD_DOWN: //下段防御
g.drawImage(images[0], drawX, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[2], drawX +3, drawY +32, Graphics.TOP|Graphics.LEFT);
break;
case PANCH_UP: //上段拳擊
g.drawImage(images[0], drawX, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[3], drawX +10, drawY +16, Graphics.TOP|Graphics.LEFT);
break;
case PANCH_DOWN: //下段拳擊
g.drawImage(images[0], drawX, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[4], drawX +18, drawY +40, Graphics.TOP|Graphics.LEFT);
break;
case BACK_STEP: //后退
//后退時根據(jù)防御位置來改變手腕的位置
switch(guardState) {
case GUARD_UP: //上段防御
g.drawImage(images[0], drawX -15, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[1], drawX +4 -15,
drawY +17, Graphics.TOP|Graphics.LEFT);
break;
case GUARD_DOWN://下段防御
g.drawImage(images[0], drawX -15, drawY, Graphics.TOP|Graphics.LEFT);
g.drawImage(images[2], drawX +3 -15,
drawY +32, Graphics.TOP|Graphics.LEFT);
break;
}
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -