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

📄 gameobject.java

📁 一個j2me空戰游戲程序很不錯,可以作為學習之用
💻 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 + -