?? gamescreen.java
字號:
//創建日期 2005-4-25
//游戲窗口
//在這個類里檢測碰撞。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
//。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
public class gameScreen extends GameCanvas implements Runnable,CommandListener
{
private Form al;
public LayerManager lm,lm1;
TiledLayer b1;
int height=getHeight();
int bosscolor=0;
int sbosscolor=0;
int sbz=0;//小BOSS AI相關標志位
int sbmove=0;//小BOSS移動標志位置0不動1上2下3左4右
int sfire=0;//SBOOS開火
int smovebz=0;//SBOSS移動標志
int sbpzbz=0;//SBOOS與玩家子彈碰撞標志
int slife=0;//sboss生命
int sbo=0;//sboss和飛機碰撞后玩家飛機自動出現的標志位
int drawslife=0;//畫SBOSS生命標志位
int lr=0;
int drawadd=0;//增加一個飛機畫個標志
int pzbz=0;//碰狀標記,解決中途被掛掉后的碰撞BUG
int pzbzover=0;//解決過關后的敵機器 仍然出現問題
int playlife=-1;//玩家延續生命標志位
int bosslife=0;//bosslife
int inputno=0;//鍵盤輸入標志位
int position=0;
int j1b=0;//CASE3語句里J1具有跟蹤能力的子彈
int jbsz=-1;//boss子彈標志
int sbsz0=-1;//sboss左子彈標志
int sbsz1=-1;//sboss右子彈
int sbsz2=-1;//SBOSS上子
int sbsz3=-1;//SBOSS下子彈
int planepo;//飛機下方參照坐標
int planepoup;//飛機上方參照坐標
int kkk;
int gz=0;//上跟蹤標志位置
int gzks=0;//跟蹤開始標志位
int jiangli=0;//獎勵標志位
int jplaneno;
int cloundno=0;
int right=0;//BOSS移動標志位,初始化向右移動
int left=1;
int boss=0;
int over=0;
int ai=0;
int planert=-1;//表示是否三次機會都沒了
int supermen=0;//玩家掛后短暫無敵
int overcmd=0;
int bossover=0;
int jpb=-12;//敵人子彈是否運行標志位
int aipp=0;
int jbz=0;
int cloudposition;
Random aik=new Random();
Random aip=new Random();
Random aicloud=new Random();
int jb[]=new int[5];//敵人飛機,白云出現標志
int playerno=3;//玩家剩余飛機標志,3,2,1三次,0就是掛了
private mybullets[] huokebullet=new mybullets[9];
private Sprite jbullet0,jbullet1,jbullet2,bossbullet0,bossbullet1,bossbullet2;
private Sprite cloud[]=new Sprite[5];//白云彩
private MenuScreen ms;
private Sprite c1,sboss,cboss,j0,j1,j2,boss1; //2D時為玩家飛機
private lzhhdm midlet;
int s1=0;//無敵時間1
int s2=65;//無敵時間2
int s3=0;//無敵時間3
int row2;
int row;
int planecolor=0;//自己的飛機無敵的時候邊紅
int planecoco=0;//變紅控制
public int by1;
public int y1;
public gameScreen (lzhhdm midlet)
{
super(true);
System.gc();
this.midlet=midlet;
addCommand(new Command("暫停",Command.BACK,1));
setCommandListener(this);
lm=new LayerManager();
c1=new Sprite(img("/pic/MyPlaneFrames.png"),24,24);//,getWidth(),getHeight()+1000);
cboss=new Sprite(img("/pic/boss.png"),65,50);//長 *寬
jbullet0=new Sprite(img("/pic/bullet.png"),6,6);
jbullet1=new Sprite(img("/pic/bullet.png"),6,6);
jbullet2=new Sprite(img("/pic/bullet.png"),6,6);
bossbullet0=new Sprite(img("/pic/bullet.png"),6,6);
bossbullet1=new Sprite(img("/pic/bullet.png"),6,6);
bossbullet2=new Sprite(img("/pic/bullet.png"),6,6);
sboss=new Sprite(img("/pic/smallboss.png"),65,50);
b1=createBackGround();//創建背景
c1.setPosition(getWidth()/2,row2+getHeight()-25);//精靈的起始位置row2+getHeight()-25=1655
//精靈是 精靈的坐標,而下面的Y1是畫屏幕的位置
//System.out.println("ffffffffffff");
planepoup=row2;//屏幕上方邊界
planepo=row2+getHeight();//屏幕下方邊界
j0=new Sprite(img("/pic/jplane2.png"),24,22);//寬24,高22
j1=new Sprite(img("/pic/jplane2.png"),24,22);
j2=new Sprite(img("/pic/jplane2.png"),24,22);
kkk=getHeight()/8;
cboss.setVisible(false);
//aipp=3;
ai=aik.nextInt()%4;
if (ai<0)
ai=-ai;
aipp=aip.nextInt()%3;
if(aipp==0)//動態確定下一組敵機位置的參數
{
aipp=aip.nextInt()%3;
}
try
{
for(int i=0;i<=4;i++)
{
cloud[i]=new Sprite(img("/pic/cloud1.png"),16,16);
lm.append(cloud[i]);
}
}catch(Exception e)
{
System.out.println("cloud");
}
lm.append(cboss);
lm.append(j0);
lm.append(j1);
lm.append(j2);
lm.append(bossbullet0);
lm.append(bossbullet1);
lm.append(bossbullet2);
lm.append(jbullet0);
lm.append(jbullet1);
lm.append(jbullet2);
lm.append(sboss);
jb[0]=1;
jb[1]=1;
jb[2]=1;
jb[3]=1;
try
{
for(int i=0;i<9;i++)
{
huokebullet[i]=playerbullet("/pic/bullet.png");
}
}catch(Exception e){}
try
{
for(int i=0;i<=8;i=i+3)
{
huokebullet[i].no=1;//ok
huokebullet[i].score=0;
}
}catch(Exception e){System.out.println("ffffffffffffff");}
for(int i=0;i<9;i++)
{
lm.append(huokebullet[i]);
}
lm.append(c1);
lm.append(b1);
}
private Image img (String pic)
{
Image img=null;
try
{
img=Image.createImage(pic);
}catch(Exception exp)
{
System.out.println(exp);
}
return img;
}
private mybullets playerbullet(String pic)//,int px,int py,int total ,int width,int height)
{
Image img=null;
try
{
img=Image.createImage(pic);
}catch(Exception exp)
{
System.out.println(exp);
}
return new mybullets(img,6,6,21,getWidth(),getHeight());//
}
public TiledLayer createBackGround()
{
Image img=null;
try
{
img=Image.createImage("/pic/beijing.png");
}catch(Exception exp)
{
System.out.println("layer create image");
}
TiledLayer tiledLayer=new TiledLayer(50,200,img,16,16);
int[] map1=
{ 3,1,1,3,3,3,1,3,3,3,3,3,3,2,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
1,3,1,1,1,1,1,1,1,1,1,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,2,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
1,1,1,1,1,1,1,1,1,3,1,3,3,4,1,
1,1,1,1,1,1,1,1,1,3,1,3,3,4,1,
1,1,1,1,1,1,1,1,1,3,1,3,3,4,1,
1,1,1,1,1,1,1,1,1,3,1,3,3,4,1,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,
2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,
5,5,2,3,3,3,3,3,3,3,3,3,3,3,4,
5,7,2,3,3,3,3,3,3,3,3,3,3,3,4,
5,5,2,10,10,10,10,10,1,3,1,3,3,4,1,
5,2,2,1,1,1,1,1,1,3,1,3,3,4,1,
5,5,2,1,1,1,1,1,1,3,1,3,3,4,1,
5,2,2,1,1,1,1,1,1,3,1,3,3,4,1
};
for(int i=0;i<map1.length;i++)//注意 此步,更改后背景才能生效
{
int column=i%15;//15代表有多少列,改變地圖后相應也要改變
row=(i-column)/15;//同上一起改變
tiledLayer.setCell(column,row,map1[i]);
}
row2=(row+1)*16-getHeight();//地圖總的長度,減是因為要留一個屏幕的可視區域
y1=-row2;
System.gc();
return tiledLayer;
}
boolean conti=true;
int rate=50;
public void run()
{
long st=0;
long et=0;
Graphics g=getGraphics();
int l=1350;
while(conti)
{
st=System.currentTimeMillis();
input();
//玩家子彈
if(huokebullet[0].isAlive(0))
{
huokebullet[0].no--;
if(huokebullet[0].no>0)
{
huokebullet[0].newposition(huokebullet,0,3,j0,j1,j2,cboss,img("/pic/explosion.png"));
}
if(huokebullet[0].no<=0)
{ //隱藏子彈
huokebullet[0].setAlive(0);
huokebullet[0].clean(0,huokebullet);
}
}
if(huokebullet[3].isAlive(3))
{
huokebullet[3].no--;
if(huokebullet[3].no>0)
{
huokebullet[3].newposition(huokebullet,3,3,j0,j1,j2,cboss,img("/pic/explosion.png"));
}
if(huokebullet[3].no<=0)
{ //隱藏子彈
huokebullet[3].setAlive(3);
huokebullet[3].clean(3,huokebullet);
}
}
if(huokebullet[6].isAlive(6))
{
huokebullet[6].no--;
if(huokebullet[6].no>0)
{
huokebullet[6].newposition(huokebullet,6,3,j0,j1,j2,cboss,img("/pic/explosion.png"));
}
if(huokebullet[6].no<=0)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -