?? mybullets.java
字號:
//玩家子彈類
//2005-5-4
//子彈因為飛機的不同而不同,比如霍克三,他的子彈射程為半屏,速度為3,而日96艦,則子彈射程只為2/3屏
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class mybullets extends Sprite
{ public int score=0;//戰(zhàn)果
private int[][] bullets;//子彈數(shù)組
//[i][0]子彈X坐標(biāo)
//[i][1]子彈Y坐標(biāo)
//[i][2]子彈Y方向速度
//[i][3]子彈存活狀態(tài)
private int bulletstotal;//數(shù)組的長度,即一次可以打出多少炮彈,視飛機型號不同而不同
public int width,bulletheight;//屏幕的高和寬
public int no=0;
public mybullets(Image img,int picwidth,int picheight,int bulletstotal,int width,int height)
{
super(img,picwidth,picheight);
this.bulletstotal=bulletstotal;
bullets=new int[bulletstotal][4];
this.width=width;
this.bulletheight=height/7;//初始華霍克3子彈射程
}
public void initBullets(int i)//初始化子彈狀態(tài)數(shù)組//???
{
bullets[i][3]=1;
bullets[i][2]=0;
}
public void updata(int i) //根據(jù)速度更新子彈下一楨的位置,出界消失
{
bullets[i][1]+=bullets[i][2];
}
public void setfirstposition(int x,int y,int nof,Sprite sprite[],Image img)//第一科子彈的起始位置
{
sprite[nof].setVisible(true);
sprite[nof+1].setVisible(true);
sprite[nof+2].setVisible(true);
//nof第F顆子彈,NOT第NOF+2顆子
bullets[nof][0]=x+10;//第一子彈X位置
bullets[nof][1]=y-24;//第一子彈(最上面的)Y位置,24是飛機左上的點的坐標(biāo),所以應(yīng)減多點,和后面子彈拉開距離
sprite[nof].setImage(img,6,6);
bullets[nof+1][1]=bullets[nof][1]+10;//第N+1子彈Y位置
bullets[nof+1 ][0]=x+10;//第N+1子彈X位置
sprite[nof+1].setImage(img,6,6);
bullets[nof+2][1]=bullets[nof+1][1]+10;//第N+2子彈Y位置
bullets[nof+2 ][0]=x+10;//第N+2子彈X位置
sprite[nof+2].setImage(img,6,6);
}
public void newposition(Sprite sprite[],int i,int v,Sprite jp0,Sprite jp1,Sprite jp2,Sprite boss,Image img)
{
bullets[i][2]-=5;//因為子彈是向上走的,所以是減
sprite[i].setPosition(bullets[i][0],bullets[i][1]+bullets[i][2]);
sprite[i+1].setPosition(bullets[i][0],bullets[i+1][1]+bullets[i][2]);
sprite[i+2].setPosition(bullets[i][0],bullets[i+2][1]+bullets[i][2]);
if (sprite[i].collidesWith(jp0,true))//玩家子彈與敵人碰撞檢測
{
sprite[i].setImage(img,32,32);
sprite[i+1].setImage(img,32,32);
sprite[i+2].setImage(img,32,32);
sprite[i].setFrame(1);
sprite[i+1].setFrame(1);
sprite[i+2].setFrame(2);
bullets[i][3]=0;
bullets[i+1][3]=0;
bullets[i+2][3]=0;
jp0.setVisible(false);
no=1;
score=score+1;
//jp0.setPosition(0,2500);
////sprite[i].setPosition(0,-1500);
//sprite[i+1].setPosition(0,-1500);
//sprite[i+2].setPosition(0,-1500);
}
if (sprite[i].collidesWith(jp1,true))
{
sprite[i].setImage(img,32,32);
sprite[i+1].setImage(img,32,32);
sprite[i+2].setImage(img,32,32);
sprite[i].setFrame(1);
sprite[i+1].setFrame(1);
sprite[i+2].setFrame(2);
bullets[i][3]=0;
bullets[i+1][3]=0;
bullets[i+2][3]=0;
jp1.setVisible(false);
no=1;
score=score+1;
//jp1.setPosition(0,2500);
////sprite[i].setPosition(0,-1500);
//sprite[i+1].setPosition(0,-1500);
//sprite[i+2].setPosition(0,-1500);
}
if (sprite[i].collidesWith(jp2,true))
{
sprite[i].setImage(img,32,32);
sprite[i+1].setImage(img,32,32);
sprite[i+2].setImage(img,32,32);
sprite[i].setFrame(1);
sprite[i+1].setFrame(1);
sprite[i+2].setFrame(2);
bullets[i][3]=0;
bullets[i+1][3]=0;
bullets[i+2][3]=0;
jp2.setVisible(false);
no=1;
score=score+1;
//jp2.setPosition(0,2500);
////sprite[i].setPosition(0,-1500);
//sprite[i+1].setPosition(0,-1500);
//sprite[i+2].setPosition(0,-1500);
}
}
public boolean isAlive(int i)
{
if (bullets[i][3]==1) return true;
else return false;
}
public void setAlive(int i)
{
for (int z=i;z<i+3;z++)
{
bullets[i][3]=0;
}
}
public int rscore()
{
return score;
}
public void clean(int i,Sprite sprite[])
{
for (int z=i;z<i+3;z++)
{
//sprite[z].setPosition(0,-1500);
sprite[z].setVisible(false);
no=1;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -