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

📄 bulletmanager.java

📁 一个用Java开发的射击类游戏
💻 JAVA
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import java.io.IOException;

public class BulletManager
{
	private Bullet	bulletArray[]		= null;
	private int		currentBulletNumber = 0;

	public BulletManager(WallManager tempWallManager, EnemyManager tempEnemyManager)
	{
		bulletArray = new Bullet[War.MAX_BULLET_NUMBER];
		try
		{
			Image tempBulletImage = Image.createImage("/bullet.png");
			Bullet tempBullet = null;
			for (int i = 0; i < War.MAX_BULLET_NUMBER; i++)
			{
				tempBullet = new Bullet(tempBulletImage, tempWallManager, tempEnemyManager);
				tempBullet.setVisible(false);
				bulletArray[i] = tempBullet;
			}
		}
		catch (IOException ie)
		{
		}
	}
	public void addBullet(int tempDirectStatus, int tempBulletCurrentX, int tempBulletCurrentY)
	{
		if (currentBulletNumber == War.MAX_BULLET_NUMBER)
		{//如果子弹数目已经达到最大
			return;
		}
		int bulletX = 0, bulletY = 0;
		switch (tempDirectStatus)
		{
			case 0://上
				bulletX = tempBulletCurrentX + (War.ACTOR_WIDTH - War.BULLET_WIDTH)/2;
				bulletY = tempBulletCurrentY - War.BULLET_HEIGHT;
				break;
			case 1://下
				bulletX = tempBulletCurrentX + (War.ACTOR_WIDTH - War.BULLET_WIDTH)/2;
				bulletY = tempBulletCurrentY + War.ACTOR_HEIGHT;
				break;
			case 2://左
				bulletX = tempBulletCurrentX - War.BULLET_WIDTH;
				bulletY = tempBulletCurrentY + (War.ACTOR_HEIGHT - War.BULLET_HEIGHT)/2;
				break;
			case 3://右
				bulletX = tempBulletCurrentX + War.ACTOR_WIDTH;
				bulletY = tempBulletCurrentY + (War.ACTOR_HEIGHT - War.BULLET_HEIGHT)/2;
		}
		if (bulletX < War.WAR_FIELD_LEFT || bulletX > War.WAR_FIELD_LEFT + War.WAR_FIELD_WIDTH - War.BULLET_WIDTH || bulletY < War.WAR_FIELD_TOP || bulletY > War.WAR_FIELD_TOP + War.WAR_FIELD_HEIGHT - War.BULLET_HEIGHT)
		{//检查子弹是否超界
			return;
		}
		currentBulletNumber++;
		for (int i = 0; i < War.MAX_BULLET_NUMBER; i++)
		{
			if (!bulletArray[i].isVisible())
			{//将遇到的第一个隐藏子弹设置位置后,显示出来
				bulletArray[i].setVisible(true);
				bulletArray[i].setPosition(bulletX, bulletY);
				bulletArray[i].setDirectStatus(tempDirectStatus);
				//System.out.println("子弹的坐标原点是" + bulletArray[i].getRefPixelX() + ":" + bulletArray[i].getRefPixelY());
				break;
			}
		}
		//System.out.println("主角坐标为:"+tempBulletCurrentX+":"+tempBulletCurrentY);
		//System.out.println("子弹坐标为:"+bulletX+":"+bulletY);
		//System.out.println("子弹方向标志为:"+tempDirectStatus);
	}
	public void delBullet()
	{
		
	}
	public void updateBullet(Graphics g)
	{
		for (int i = 0; i < War.MAX_BULLET_NUMBER; i++)
		{
			if (bulletArray[i].isVisible())
			{
				bulletArray[i].move();
				bulletArray[i].collidesChecking();
				bulletArray[i].paint(g);
				if (bulletArray[i].isOverTime())
				{
					bulletArray[i].setVisible(false);
					currentBulletNumber--;
				}
			}
		}
	}
}

⌨️ 快捷键说明

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