⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boxer.java

📁 几个不错的手机程序例子
💻 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;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -