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

📄 bullets.java

📁 一個j2me空戰游戲程序很不錯,可以作為學習之用
💻 JAVA
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class Bullets
{
	public Sprite sprite;//内置的Sprite
	private int[][] bullets;//子弹状态数组
	public int[][] mybullets;//飞机的子弹
	//bullets[i][0]表示子弹的x坐标;
	//bullets[i][1]表示子弹的y坐标;
	//bullets[i][2]表示子弹的x方向速度;
	//bullets[i][3]表示子弹的y方向速度;
	//bullets[i][4]表示子弹的存活状态;
	private int width,height;//屏幕的高和宽
	MyGameCanvas parent;
	int currentnum;//当前子弹的个数
	int mycurrentnum;
	
	public Bullets(Image img,int picwidth,int picheight,int width,int height,MyGameCanvas p)
	{
		sprite=new Sprite(img,picwidth,picheight);
		bullets=new int[80][5];
		mybullets=new int[30][5];
		this.width=width;
		this.height=height;
		parent=p;
                currentnum=-1;
		mycurrentnum=-1;
	}
	public void initBullet(int x,int y,int dx,int dy,boolean mybullet)//初始化一个子弹
	{
		int i;
		if (mybullet)
		{
			for(i=0;i<=mycurrentnum;i++)
			{
				if (mybullets[i][4]==0) break;
			}
			if (i>mycurrentnum)
			{
				mycurrentnum++;//增加一个子弹
				mybullets[mycurrentnum][4] = 1; //alive 1表示存活, 0表示死去
				mybullets[mycurrentnum][0]=x;
				mybullets[mycurrentnum][1]=y;
				mybullets[mycurrentnum][2]=dx;
				mybullets[mycurrentnum][3]=dy;
			}
			else
			{
				mybullets[i][4] = 1; //alive 1表示存活, 0表示死去
				mybullets[i][0]=x;
				mybullets[i][1]=y;
				mybullets[i][2]=dx;
				mybullets[i][3]=dy;
			}
		}
		else
		{
			
			for(i=0;i<=currentnum;i++)
			{
				if (bullets[i][4]==0) break;
			}
			if (i>currentnum)
			{
				currentnum++;//增加一个子弹
				bullets[currentnum][4] = 1; //alive 1表示存活, 0表示死去
				bullets[currentnum][0]=x;
				bullets[currentnum][1]=y;
				bullets[currentnum][2]=dx;
				bullets[currentnum][3]=dy;
			}
			else
			{
				bullets[i][4] = 1; //alive 1表示存活, 0表示死去
				bullets[i][0]=x;
				bullets[i][1]=y;
				bullets[i][2]=dx;
				bullets[i][3]=dy;
			}
		}
			
         }
         public void update()
         {
         	//根据速度更新i子弹下一桢的位置,判断是否出了边界,出了边界就不存活
         	int i;
         	int planeXCenter=parent.plane.getX()+12;
         	int planeYCenter=parent.plane.getY()+12;
         	for(i=0;i<=currentnum;i++)
         	{
         		if (bullets[i][4]==0)
         		  continue;
         		bullets[i][0]+=bullets[i][2];
         		bullets[i][1]+=bullets[i][3];
         		if(bullets[i][0]<-5 || bullets[i][0]>width+5)
         		{
         			bullets[i][4]=0;
         		}
         		if(bullets[i][1]<-5 || bullets[i][1]>height+5)
         		{
         			bullets[i][4]=0;
         		}
                        int bulletXCenter=bullets[i][0]+3;
                        int bulletYCenter=bullets[i][1]+3;
                        if(Math.abs(planeXCenter-bulletXCenter) < 12)
                        {
                        	if (Math.abs(planeYCenter - bulletYCenter )< 12)
                        	{ 
                        		parent.gameover = true;
                        		bullets[i][4]=0;
                        	}
                        }
         	}
         	for(i=0;i<=mycurrentnum;i++)
         	{
         		if (mybullets[i][4]==0)
         		  continue;
         		mybullets[i][0]+=mybullets[i][2];
         		mybullets[i][1]+=mybullets[i][3];
         		if(mybullets[i][0]<-5 || mybullets[i][0]>width+5)
         		{
         			mybullets[i][4]=0;
         		}
         		if(mybullets[i][1]<-5 || mybullets[i][1]>height+5)
         		{
         			mybullets[i][4]=0;
         		}
         	}
         }
         public void paint(Graphics g)
         {
         	int i;
         	//绘画整个子弹组
         	for ( i = 0; i <=currentnum; i++)
         	{
         		if(bullets[i][4]==0)
                           continue;
         		sprite.setPosition(bullets[i][0],bullets[i][1]); //更新位置
         		sprite.paint(g);
         	}
         	for (i = 0; i <=mycurrentnum; i++)
         	{
         		if(mybullets[i][4]==0)
                           continue;
         		sprite.setPosition(mybullets[i][0],mybullets[i][1]); //更新位置
         		sprite.paint(g);
         	}
         }
         public void reset()
         {
         	currentnum=-1;
		mycurrentnum=-1;
		for(int i=0;i<bullets.length;i++)
		{
			bullets[i][4]=0;
		}
		for(int i=0;i<mybullets.length;i++)
		{
			mybullets[i][4]=0;
		}
	}
         	
}

⌨️ 快捷键说明

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