📄 gameobject.java
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class GameObject
{
private int[][] Objects;//敌人状态数组
//Objects[][0] -----x
//Objects[][1] -----y
//Objects[][2] -----dx
//Objects[][3] -----dy
//Objects[][4] -----是否存活
//Objects[][5] -----sprite索引
//Objects[][6] -----发子弹的速度
//Objects[][7] -----子弹发射计时
public int imgwidth[];
public int imgheight[];
public Sprite[] sprite;//内置的Sprite
public int currentnum;//当前活动的敌人
private int width,height;//屏幕的高和宽
MyGameCanvas parent;
int tempwidth,tempheight;
public GameObject(int width,int height,MyGameCanvas p)
{
Image img=null;
sprite=new Sprite[10];
imgwidth=new int[10];
imgheight=new int[10];
//0
try
{
img = Image.createImage("/1.png");
}
catch (Exception ex)
{}
sprite[0]=new Sprite(img,img.getWidth(),img.getHeight());
imgwidth[0]=15/2;imgheight[0]=14/2;
//1
try
{
img = Image.createImage("/2.png");
}
catch (Exception ex)
{}
sprite[1]=new Sprite(img,img.getWidth(),img.getHeight());
imgwidth[1]=15/2;imgheight[1]=15/2;
//2
try
{
img = Image.createImage("/missile1.png");
}
catch (Exception ex)
{}
sprite[2]=new Sprite(img,85,26);
sprite[2].setTransform(Sprite.TRANS_ROT270);
imgwidth[2]=26/2;imgheight[2]=85/2;
//3
try
{
img = Image.createImage("/plane2.png");
}
catch (Exception ex)
{}
sprite[3]=new Sprite(img,40,24);
sprite[3].setTransform(Sprite.TRANS_ROT90);
imgwidth[3]=24/2;imgheight[3]=40/2;
//4
try
{
img = Image.createImage("/4.png");
}
catch (Exception ex)
{}
sprite[4]=new Sprite(img,30,38);
imgwidth[4]=30/2;imgheight[4]=38/2;
//5
try
{
img = Image.createImage("/laser.png");
}
catch (Exception ex)
{}
sprite[5]=new Sprite(img,img.getWidth(),img.getHeight());
sprite[5].setTransform(Sprite.TRANS_ROT90);
try
{
img = Image.createImage("/7.png");
}
catch (Exception ex)
{}
sprite[6]=new Sprite(img,img.getWidth(),img.getHeight());
try
{
img = Image.createImage("/8.png");
}
catch (Exception ex)
{}
sprite[7]=new Sprite(img,img.getWidth(),img.getHeight());
try
{
img = Image.createImage("/9.png");
}
catch (Exception ex)
{}
sprite[8]=new Sprite(img,img.getWidth(),img.getHeight());
try
{
img = Image.createImage("/10.png");
}
catch (Exception ex)
{}
sprite[9]=new Sprite(img,img.getWidth(),img.getHeight());
Objects=new int[20][8];
this.width=width;
this.height=height;
parent=p;
currentnum=-1;
}
public void initObject(int x,int y,int dx,int dy,int imageindex,int bulletspeed)//初始化一个敌人
{
int i;
for(i=0;i<=currentnum;i++)
{
if (Objects[i][4]==0) break;
}
if (i>currentnum)
{
currentnum++;//增加一个
Objects[currentnum][4] = 1; //alive 1表示存活, 0表示死去
Objects[currentnum][0]=x;
Objects[currentnum][1]=y;
Objects[currentnum][2]=dx;
Objects[currentnum][3]=dy;
Objects[currentnum][5]=imageindex;
Objects[currentnum][6]=bulletspeed;
Objects[currentnum][7]=bulletspeed+1;
sprite[imageindex].setFrame(0);
}
else
{
Objects[i][4] = 1; //alive 1表示存活, 0表示死去
Objects[i][0]=x;
Objects[i][1]=y;
Objects[i][2]=dx;
Objects[i][3]=dy;
Objects[i][5]=imageindex;
Objects[i][6]=bulletspeed;
Objects[i][7]=bulletspeed+1;
sprite[imageindex].setFrame(0);
}
}
public void update()
{
int i,j;
int planeXCenter=parent.plane.getX()+12;
int planeYCenter=parent.plane.getY()+12;
int ObjectXCenter,ObjectYCenter;
for(i=0;i<=currentnum;i++)
{
if (Objects[i][4]==0)
continue;
Objects[i][0]+=Objects[i][2];
Objects[i][1]+=Objects[i][3];
if (Objects[i][6]!=-1)
{
Objects[i][7]--;
if (Objects[i][7]==0) Objects[i][7]=Objects[i][6];
}
if(Objects[i][0]<-5 || Objects[i][0]>width+5)
{
Objects[i][4]=0;
}
if(Objects[i][1]>height+5)
{
Objects[i][4]=0;
}
if (Objects[i][7]==Objects[i][6])//可以发子弹了
{
parent.bullets.initBullet(Objects[i][0]+3,Objects[i][1],0,4,false);
}
//和飞机的冲突检测
tempwidth=imgwidth[Objects[i][5]];
tempheight=imgheight[Objects[i][5]];
ObjectXCenter=Objects[i][0]+tempwidth;
ObjectYCenter=Objects[i][1]+tempheight;
if(Math.abs(planeXCenter-ObjectXCenter) < 15)
{
if (Math.abs(planeYCenter - ObjectYCenter )< 15)
{
parent.gameover = true;
Objects[i][4]=0;
}
}
//和飞机子弹的冲突检测
for(j=0;j<=parent.bullets.mycurrentnum;j++)
{
if (parent.bullets.mybullets[j][4]!=0)
{
if(Math.abs(parent.bullets.mybullets[j][0]+3-ObjectXCenter) < (tempwidth+3))
{
if (Math.abs(parent.bullets.mybullets[j][1]+3 - ObjectYCenter )< (tempheight+3))
{
Objects[i][4]=0;
parent.bullets.mybullets[j][4]=0;
parent.explosions.initObject(Objects[i][0]-8,Objects[i][1]-8,0);
parent.score+=10;
break;
}
}
}
}
}
}
public void paint(Graphics g)
{
for(int i=0;i<=currentnum;i++)
{
if (Objects[i][4]==0)
continue;
sprite[Objects[i][5]].setPosition(Objects[i][0],Objects[i][1]);
sprite[Objects[i][5]].nextFrame();
sprite[Objects[i][5]].paint(g);
}
}
public void reset()
{
currentnum=-1;
for(int i=0;i<Objects.length;i++)
{
Objects[i][4]=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -