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