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