【Java开源代码栏目提醒】:网学会员Java开源代码为您提供Boxer.java参考,解决您在Boxer.java学习中工作中的难题,参考学习。
/*
* Boxer.java
*
* Copyright 2001 SkyArts. All Rights Reserved.
*/
import javax.microedition.lcdui.*;
/**
* Boxer类
*
* @author Hideki Yonekawa
* @version 1.0
*/
class Boxer {
/** 代表上段防御状态的常量 */
static final int GUARD_UP = 0;
/** 代表下段防御状态的常量 */
static final int GUARD_DOWN = 1;
/** 代表上段拳击状态的常量 */
static final int PANCH_UP = 2;
/** 代表下段拳击状态的常量 */
static final int PANCH_DOWN = 3;
/** 代表后退状态的常量 */
static final int BACK_STEP = 5;
/** 代表击倒状态的常量 */
static final int KNOCK_DOWN = 9;
/** 储存现在状态的变量 */
protected int currentState;
/** 储存Tick计数的变量 */
protected int tickCount;
/** 储存默认生命点数的常量 */
protected static final int DEFAULT_LIFEPOINT = 100;
/** 储存现在生命点数的变量 */
protected int lifePoint;
/** 储存了描绘开始之X坐标的变量 */
protected int drawX;
/** 储存了描绘开始之Y坐标的变量 */
protected int drawY;
/** 用来在后退时所使用之储存现在防御状态的变量 */
protected int guardState;
/**
* 储存拳击手图像的变量
* 以身体、上段防御、下段防御、上段拳击、下段拳击的顺序来储存
*/
protected Image[] images = new Image[5];
/** 构造函数 */
Boxer() throws Exception {
//取得图像的路径
String imgPaths[] = getImagePaths();
//以路径为基础取得图像
for(int i=0; i < imgPaths.length; i++) {
images[i] = Image.createImage(imgPaths[i]);
}
}
/** 将拳击手设为初始状态的方法 */
void doInitialize() {
currentState = BACK_STEP;
guardState = GUARD_UP;
lifePoint = DEFAULT_LIFEPOINT;
tickCount = 0;
}
/**
* 传回拳击手之图像路径字符串数组的方法
* @return String[]图像的路径字符串数组
身体、上段防御、下段防御、上段拳击、下段拳击的顺序
*/
protected String[] getImagePaths() {
return new String[] {
"/player_body.png", //身体
"/player_guardUP.png", //上段防御
"/player_guardDOWN.png", //下段防御
"/player_panchUP.png", //上段拳击
"/player_panchDOWN.png" //下段拳击
};
}
/**
* 设定现在状态的方法
* @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;
}
/**
* 传回现在状态的方法
* @return int GUARD_UP丄GUARD_DOWN丄PANCH_UP丄PANCH_DOWN丄BACK_STEP丄KNOCK_DOWN偺偄偯傟偐
*/
int getCurrentState() {
return currentState;
}
/**
* 设定生命点数的方法
* @param lifePoint 要设定的生命点数值
*/
void setLifePoint(int lifePoint) {
this.lifePoint = lifePoint;
}
/**
* 传回现在生命点数的方法
* @return int 现在的生命点数值
*/
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) {
//等待一定时间返回防御状态
setCurrentState(guardState);
tickCount = 0;
}
break;
}
}
/**
* 进行描绘的方法
* @param g 进行描绘用的Graphics对象
*/
void doDraw(Graphics g) {
//根据状态来描绘身体与手腕的图像
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: //后退
//后退时根据防御位置来改变手腕的位置
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;
}
}
}
上一篇:
Box.java
下一篇:
基于web二手汽车交易管理系统(含录像)