📄 bulletmanager.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 + -