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

📄 playertankmanager.java

📁 一个非常不错的J2ME坦克大战的游戏,可以在机顶盒上实际运行.
💻 JAVA
字号:
package com.ipanel.games.tank;

import java.io.IOException;
import java.util.Vector;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

public class PlayerTankManager {

	/**
	 * 存放Sprite,而不是PlayerTank instances。
	 * */
	private static Vector vSpriteTanks = new Vector();

	private static Image imageTank = null;

	private final int FRAME_SEQUENCE_UP = 0;

	private final int FRAME_SEQUENCE_RIGHT = 1;

	private final int FRAME_SEQUENCE_DOWN = 2;

	private final int FRAME_SEQUENCE_LEFT = 3;

	private static final int TANK_TOTAL = 3;

	/**
	 * 初始化值为TANK_TOTAL。
	 * */
	private static int TANK_REMAINED = TANK_TOTAL;

	private GameLayer layer = null;

	static {
		// imageTank = Image.createImage("/res/TankAll.png");
	}

	public PlayerTankManager(GameLayer layer) {
		super();

		this.layer = layer;

		init();
	}

	private void init() {
		try {
			imageTank = Image.createImage("/res/TankAll.png");
		} catch (IOException e) {
			layer
					.paintException("Exception when createImage in PlayTankManager.init()!");
		}
		Sprite sprite = null;
		for (int i = 0; i < TANK_TOTAL; i++) {
			sprite = new Sprite(imageTank, 32, 32);
			sprite.setFrameSequence(new int[] { FRAME_SEQUENCE_UP,
					FRAME_SEQUENCE_RIGHT, FRAME_SEQUENCE_DOWN,
					FRAME_SEQUENCE_LEFT });
			sprite.setFrame(FRAME_SEQUENCE_UP);

			vSpriteTanks.addElement(sprite);
		}
	}

	/**
	 * 不采用Vector存放PlayerTank instances的方法,而是运行时刻new PlayerTank()
	 * 并限制其次数。
	 * */
	PlayerTank getCurrentPlayer() {
		PlayerTank tank = null;
		if (TANK_REMAINED > 0) {
			try {
				tank = new PlayerTank(layer);
			} catch (Exception e) {
				layer
						.paintException("Exception in PlayerTankManager.getCurrentPlayer()!");
			}
			TANK_REMAINED--;
		}
		return tank;
	}

	/**
	 * static方法,负责画出当前剩余的Sprite;注意,这和任何PlayerTank instance没有关系。
	 * @param X_BASE X坐标的基准
	 * @param Y_BASE Y坐标的基准,程序中每次绘制一个Sprite,调整Y坐标的数值。
	 * */
	static void paintRemainedSprite(Graphics g, int X_BASE, int Y_BASE) {
		Sprite sprite = null;
		int Y = Y_BASE;
		for (int i = 0; i < TANK_REMAINED; i++) {
			sprite = (Sprite) vSpriteTanks.elementAt(i);
			Y -= (sprite.getHeight() + 10);
			sprite.setPosition(X_BASE, Y);
			sprite.paint(g);
		}
	}

}

⌨️ 快捷键说明

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