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

📄 monstersprite.java

📁 星空大战,小车发出子弹打空中的飞行物。空中飞行物也 能发出子弹袭击小车。
💻 JAVA
字号:
import java.util.Enumeration;
import java.util.Random;
import java.util.Vector;

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

//怪物
public class MonsterSprite extends Sprite
{
	private int dx;
	private int dy;
	
	private int fireDelay;
	
	private Random rd;
	
	private int type;
	
	public static final int TYPE_BLOBBO = 0;
	public static final int TYPE_JELLY = 1;
	public static final int TYPE_TIMMY = 2;
	
	private static int[] dxs = {3, 1, 5};
	private static int[] dys = {2, 4, 0};
	
	private static int[] tw = {20, 21, 21};
	private static int[] th = {21, 21, 11};
	
	public MonsterSprite(int type)
    {
		super(SpaceCanvas.sc.getImgMonster(type), tw[type], th[type]);
	    
		this.type = type;
		
		dx = dxs[this.type];
		dy = dys[this.type];
		
	    rd = new Random();
	    
	    randomPosition();
    }

	public void fire()
	{	
		fireDelay++;
		if(fireDelay>70)
		{
			BulletSprite bs = null;
			
			switch(this.type)
			{
				// 异形
				case MonsterSprite.TYPE_BLOBBO:
				{
					bs = new BulletSprite(BulletSprite.TYPE_BLOBBO);
					break;
				}
				// 水母
				case MonsterSprite.TYPE_JELLY:
				{
					bs = new BulletSprite(BulletSprite.TYPE_JELLY);
					break;
				}
				// 蝗虫
				case MonsterSprite.TYPE_TIMMY:
				{
					bs = new BulletSprite(BulletSprite.TYPE_TIMMY);
					break;
				}
			}
			
			bs.setPosition(getX()+5, getY()+getHeight());
			SpaceCanvas.sc.getBullets().addElement(bs);
			
			fireDelay = 0;
		}
	}
	
	public void update()
	{
		move(dx, dy);
		checkBounds();
		nextFrame();
		fire();	
	}
	
	public void setDx(int dx)
	{
		this.dx = dx;
	}
	
	public void setDy(int dy)
	{
		this.dy = dy;
	}
	
	public void checkBounds() 
	{
		switch(this.type)
		{
			// 异形,水母
			case MonsterSprite.TYPE_BLOBBO:
			case MonsterSprite.TYPE_JELLY:
			{
				if (getX() < 0 || getX() > (SpaceCanvas.sc.getWidth() - getWidth()))
				{
					dx = -dx;
				}

				if (getY() < 0 || getY() > (SpaceCanvas.sc.getHeight() - getHeight()))
				{
					dy = -dy;
				}
				break;
			}
			// 蝗虫
			case MonsterSprite.TYPE_TIMMY:
			{
				if (getX() < -getWidth())
					setPosition(SpaceCanvas.sc.getWidth(), getY());
				else if (getX() > SpaceCanvas.sc.getWidth())
					setPosition(-getWidth(), getY());
				
				if (getY() < -getHeight())
					setPosition(getX(), SpaceCanvas.sc.getHeight());
				else if (getY() > SpaceCanvas.sc.getHeight())
					setPosition(getX(), -getHeight());
			}
		}
	}
	
	public void randomPosition()
	{
		setPosition(Math.abs(rd.nextInt()%(SpaceCanvas.sc.getWidth() - 25)), 
				Math.abs(rd.nextInt()%(SpaceCanvas.sc.getHeight() - 75)));
	}
	
	public int getType()
	{
		return this.type;
	}
}

⌨️ 快捷键说明

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