Anroid
gameStart()
package game.game;
import java.util.Random;
import java.util.Vector;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.media.MediaPlayer;
import android.util.Log;
publicclass gameStart{
public gameMain father;
public Bitmap bk;
public Bitmap Player;
publicintpx,py;
publicintspeed=10;
public Bitmap imFruit[];
publicintspeedtime;
public Bitmap winbk;
publicintscreenW,screenH;
public Vector fruit;
publicintlevel=1;
publicintpframe=0;
privatelonglevelStartTime;
privateintscore;
publicinttnum;
publicintsnum;
publicstaticintFruitSpeed=2;
publicstaticlongdrawtime;
publiclonglevellastTime;
publicbooleandir=false;
publicbooleanzoom=true;
public Bitmap meirenyu;
public Bitmap sudu;
public Bitmap shijian;
privateintlevelCount=20;
publicintcount=0;
publicintcout=0;
public Bitmap lost;
publicintdefen,fenx,feny;
publicintjineng=0;
privateinta=0;
publicintji=0;
publicintZframe=0;
publicintlevelTime[]=
{
0,200,198,196,194,192,190,188,186,184,182,180,
178,176,174,172,170,168,166,164,162,160
};
publicintlevelTypes[][]={
{0,0,0,0,0,0,},
{0,0,0,1,1,1},
{0,0,1,1,2,2},
{0,0,1,1,2,3},
{0,0,1,2,3,4},
{0,1,2,3,4,0},
{0,1,2,3,4,1},
{0,1,2,3,4,1},
{0,1,2,3,4,1},
{0,1,2,3,4,1},
{0,1,2,3,4,1},
{0,1,2,3,4,0},
{0,1,2,3,1,1},
{0,1,2,3,1,0},
{0,1,2,3,1,1},
{0,1,2,3,4,0},
{1,0,2,3,2,1},
{0,1,2,3,1,1},
{0,1,2,3,1,0},
{0,1,2,3,1,1}
};
privateintfruittime[]=
{
30,32,34,36,38,40,42,44,46,48,50,51,52,53,54,55,56,57,58,59
};
privateintlevelScore[]=
{
0,500,600,700,800,900,1000,1200,1400,1600,1800,2000,
1000,2000,2000,2000,2000,1000,2000,2000,2000,2000
};
privatelonglastTime;
privateintcountFruit=1;
public Random random;
private MediaPlayer win;
public MediaPlayer pengzhuang,jinengl;
private Bitmap fanhui;
publicintxuanze=1;
public gameStart(gameMain father){
this.father=father;
random=new Random();
imFruit=new Bitmap[5];
fruit=new Vector();
screenW=father.screenWidth;
screenH=father.screenHeight;
px=screenW/2;
py=screenH-50;
initBitmap(father);
initLevel(level);
}
privatevoid initBitmap(Context context) {
// TODO Auto-generated method stub
//Log.i("2", "ok");
Resources r=context.getResources();
try{
bk=BitmapFactory.decodeResource(r, R.drawable.stbk);
Player=BitmapFactory.decodeResource(r, R.drawable.player);
imFruit[0]=BitmapFactory.decodeResource(r, R.drawable.caomei);
imFruit[1]=BitmapFactory.decodeResource(r, R.drawable.huanggua);
imFruit[2]=BitmapFactory.decodeResource(r, R.drawable.xihongshi);
imFruit[3]=BitmapFactory.decodeResource(r, R.drawable.xiangjiao);
imFruit[4]=BitmapFactory.decodeResource(r, R.drawable.beizi);
lost=BitmapFactory.decodeResource(r, R.drawable.lost);
winbk=BitmapFactory.decodeResource(r, R.drawable.winbk);
meirenyu=BitmapFactory.decodeResource(r, R.drawable.meirenyu);
sudu=BitmapFactory.decodeResource(r, R.drawable.sudu);
shijian=BitmapFactory.decodeResource(r, R.drawable.shijian);
fanhui=BitmapFactory.decodeResource(r, R.drawable.fanhui);
win=MediaPlayer.create(context, R.drawable.win);
pengzhuang=MediaPlayer.create(context, R.drawable.pengzhuang);
jinengl=MediaPlayer.create(context, R.drawable.jineng);
jinengl.setVolume(4, 7);
}catch(Exception e){e.printStackTrace();}
}
publicstatic Bitmap rotate(Bitmap b, int degrees) {
if (degrees != 0 && b != null) {
Matrix m = new Matrix();
m.setRotate(degrees,
(float) b.getWidth() / 2, (float) b.getHeight() / 2);
try {
Bitmap b2 = Bitmap.createBitmap(
b, 0, 0, b.getWidth(), b.getHeight(), m, true);
if (b != b2) {
b.recycle(); //Bitmap操作完應該顯示的釋放
b = b2;
}
} catch (OutOfMemoryError ex) {
// 如何出現了內存不足異常,最好return 原始的bitmap對象。.
}
}
return b;
}
publicvoid doDraw(Canvas canvas){
switch(gameMain.gm.gameState)
{
case States.GM_ACTION:
// Log.i("1","ok");
drawBack(canvas);
drawPlayer(canvas);
makefruit();
drawfruit(canvas);
drawscore(canvas);
break;
case States.GM_WIN:
drawWin(canvas);
drawInfo(canvas);
break;
case States.GM_LOST:
drawLost(canvas);
break;
case States.GM_JINENG:
drawBack(canvas);
drawPlayer(canvas);
drawfruit(canvas);
drawjineng(canvas);
break;
case States.GM_PAUSE:
drawBack(canvas);
drawPlayer(canvas);
drawfruit(canvas);
drawpause(canvas);
break;
}
}
privatevoid drawpause(Canvas canvas) {
// TODO Auto-generated method stub
Paint paint=new Paint();
paint.setStyle(Style.STROKE);
paint.setARGB(255, 0, 150, 200);
switch(xuanze)
{
case 1:
canvas.drawBitmap(fanhui, 40,20, null);
canvas.drawRect(185, screenH/2,215, screenH/2+33,paint);
break;
case 2:
canvas.drawBitmap(fanhui, 40, 20, null);
canvas.drawRect(305, screenH/2, 335, screenH/2+33,paint);
break;
}
}
publicint drawjineng(Canvas canvas){
switch(ji)
{
case 1:
jineng+=5;
if(jineng>=screenH/2-10)
{
gameMain.gm.gameState=States.GM_ACTION;
jineng=0;
ji=0;
return 0;
}
canvas.drawBitmap(sudu, screenW/2-60, jineng, null);
break;
case 2:
jineng+=5;
if(jineng>=screenH/2-10)
{
gameMain.gm.gameState=States.GM_ACTION;
jineng=0;
ji=0;
return 0;
}
canvas.drawBitmap(shijian, screenW/2-60, jineng, null);
}
return 1;
}
privatevoid drawInfo(Canvas canvas) {
// TODO Auto-generated method stub
Paint paint=new Paint();
paint.setARGB(255,0,0,255);
canvas.drawText("第"+level+"關",screenW/2-40,screenH/2+20,paint);
canvas.drawText("倒計時(秒) "+this.levelTime[level],screenW/2-40,screenH/2+40,paint);
canvas.drawText("通關分數 "+this.levelScore[level+1],screenW/2-40,screenH/2+60,paint);
}
privatevoid drawLost(Canvas canvas){
Paint paint=new Paint();
paint.setARGB(255,0, 0, 0);
canvas.drawRect(0, 0, screenW, screenH,paint);
paint.setARGB(255,0, 100, 255);
canvas.drawBitmap(lost, screenW/2-40, screenH/2-40, null);
canvas.drawText("您已經通過"+level+"關", screenW/2-25, screenH/2+10, paint);
cout++;
if(cout>40)
{
gameMain.gm.gc.load.process=0;
gameMain.gm.gameState=States.GM_MENU;
level=1;
}
}
publicvoid zhangyunext()
{
if(Zframe>1)
{
Zframe=0;
}
else
{
Zframe++;
}
}
privatevoid drawWin(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(winbk, 0, 0, null);
zhangyunext();
count++;
if(count>=40)
{
count=0;
try {
gameMain.gm.gc.back.seekTo(0);
gameMain.gm.gc.back.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(level>levelCount)
{
gameMain.gm.gameState=States.GM_LOST;
}
else
{
initLevel(level);
gameMain.gm.gameState=States.GM_ACTION;
}
}
canvas.clipRect(screenW/2-40, 50, screenW/2-40+120, 170);
canvas.drawBitmap(meirenyu, screenW/2-40-120*Zframe, 50, null);
canvas.restore();
}
publicvoid drawfruit(Canvas canvas)//畫水果
{
for(int i=0;i<fruit.size();i++)
{int tmp[]=(int [])fruit.elementAt(i);
canvas.drawBitmap(imFruit[tmp[0]],tmp[1],tmp[2],null);
}
}
publicint drawscore(Canvas canvas)
{
Paint paint=new Paint();
paint.setARGB(255,255, 255, 255);
switch(defen)
{
case 1:
a+=2;
if(a>=15)
{
a=0;
defen=0;
return 0;
}
canvas.drawText("+100", fenx, feny-a, paint);
break;
case 2:
a+=2;
if(a>=15)
{
a=0;
defen=0;
return 0;
}
canvas.drawText("+200", fenx, feny-a, paint);
break;
}
return 1;
}
publicsynchronizedvoid makefruit()
{
countFruit++;
if(countFruit>fruittime[level-1])
{
countFruit=1;
int tmp[]=newint[4];
int ftype=Math.abs(random.nextInt()%6);
tmp[0]=this.levelTypes[level-1][ftype];
tmp[1]=0;
switch(ftype)
{
case 0:
tmp[2]=Math.abs((random.nextInt()%(screenH/2-50)));
break;
case 1:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 2:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 3:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 4:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 5:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
}
tmp[3]=0;
fruit.addElement(tmp);
}
if(countFruit%FruitSpeed==0)
{
for(int i=0;i<fruit.size();i++)
{
int tmp[]=(int [])fruit.elementAt(i);
if(tmp[3]==0)
{
tmp[1]+=10+level*2;
if(tmp[1]>screenW)
{
fruit.removeElementAt(i);
}
System.gc();
}
else
{
if(tmp[0]==0){score+=100;defen=1;fenx=tmp[1]+12;feny=tmp[2];}
if(tmp[0]==1){score+=200;defen=2;fenx=tmp[1]+12;feny=tmp[2];}
fruit.removeElementAt(i);
System.gc();
}
}
}
}
publicvoid drawPlayer(Canvas canvas)
{
if(dir)
{
if(zoom)
{
if(py>0)
{
py-=speed;
for(int i=0;i<fruit.size();i++)
{
int tmp[]=(int [])fruit.elementAt(i);
int x=px;
int y=py;
if(x<tmp[1]-30||x>tmp[1]+4||y<tmp[2]||y>tmp[2]+25)
{
}
else
{
try {
pengzhuang.start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(tmp[0]==2){snum++;}
elseif(tmp[0]==3){tnum++;}
elseif(tmp[0]==4){//增加水果
Thread ts=new Thread()
{
publicvoid run()
{
for(int i=0;i<15;i++)
{
makefruit();
try{ Thread.sleep(100);}catch(Exception e){}
}
}
};
ts.start();
}
else{
tmp[3]=1;
}
if(tmp[0]>1)fruit.removeElementAt(i);
zoom=false;
Player=rotate(Player,180);
}
}
}
else
{
zoom=false;
Player=rotate(Player,180);
}
}
else
{
if(py<screenH-50)
{
py+=speed;
}
else
{
py=screenH-50;
Player=rotate(Player,180);
zoom=true;;
dir=false;
if(score>=levelScore[level])
{
level++;
gameMain.gm.gameState=States.GM_WIN;
try {
gameMain.gm.gc.back.pause();
win.seekTo(0);
win.start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
Pframe();
}
canvas.clipRect(px, py, px+64, py+64);
canvas.drawBitmap(Player, px-64*pframe, py, null);
canvas.restore();
}
publicvoid time()//計算時間
{
long currTime = System.currentTimeMillis();
lastTime = currTime;
drawtime=this.levellastTime-(lastTime-this.levelStartTime)/1000;
if(drawtime<=0){gameMain.gm.gameState=States.GM_LOST;try {
gameMain.gm.gc.back.pause();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
publicvoid drawBack(Canvas canvas) //畫背景
{
Paint paint=new Paint();
canvas.drawBitmap(bk, 0, 0, null);
paint.setARGB(255,255,255,255);
canvas.drawText("分數: "+score+" 剩餘時間: "+drawtime,5,10,paint);
paint.setARGB(255,40,200,20);
canvas.drawText("第 "+this.level+" 關 ",screenW-50,10,paint);
paint.setARGB(255,200,200,200);
if(snum>0)
canvas.drawText("S: "+snum,6,25,paint);
if(tnum>0)
canvas.drawText("T: "+tnum,6,40,paint);
}
publicvoid initLevel(int n)
{
level=n;
speedtime=levelTime[level];
this.levelStartTime=System.currentTimeMillis();
this.levellastTime=this.levelTime[n];
this.score=0;
if(gameMain.gm.gameState==States.GM_WIN)
{
gameMain.gm.gameState=States.GM_ACTION;
}
FruitSpeed=3;
fruit.removeAllElements();
if(n==1)//如果是第一關初始化道具
{
tnum=snum=10;
}
gameMain.gm.gc.back.seekTo(0);
gameMain.gm.gc.back.start();
System.gc();
}
publicvoid Pframe()
{
if(pframe>1)
{
pframe=0;
}
else
{
pframe++;
}
}
publicvoid move(int direction)
{
switch(direction)
{
case Direction.D_LEFT:
if(px>=0)
{
px-=speed;
Pframe();
}
break;
case Direction.D_REIGHT:
if(px<screenW-50)
{
px+=speed;
Pframe();
}
break;
}
}
}
J2M2:
gameStart()
import java.io.InputStream;
publicclass gameStart{
public Image bk;
public Image Player;
publicintpx,py;
publicintspeed=8;
public Image imFruit[];
publicintspeedtime;
public Image winbk;
public Graphics offG;
public Sprite player;
public LayerManager lm;
publicintscreenW,screenH;
public Vector fruit;
publicintlevel=1;
privatelonglevelStartTime;
privateintscore;
publicinttnum;
publicintsnum;
publicstaticintFruitSpeed=2;
publicstaticlongdrawtime;
publiclonglevellastTime;
publicbooleandir=false;
publicbooleanzoom=true;
public Image zhangyu;
public Image sudu;
public Image shijian;
public Sprite Zhangyu;
privateintlevelCount=20;
publicintcount=0;
publicintcout=0;
public Image lost;
publicintdefen,fenx,feny;
publicintjineng=0;
privateinta=0;
publicintji=0;
publicintlevelTime[]=
publicintlevelTypes[][]={
privateintfruittime[]=
privateintlevelScore[]=
privatelonglastTime;
privateintcountFruit=1;
public Random random;
private Player win;
public Player pengzhuang,jinengl;
private Image fanhui;
publicintxuanze=1;
public gameStart(){
try{
random=new Random();
bk=loadImage("/gmbk.png");
Player=loadImage("/player.png");
InputStream is=this.getClass().getResourceAsStream("/win.wav");
win=Manager.createPlayer(is,"audio/x-wav");
is=this.getClass().getResourceAsStream("/pengzhuang.wav");
pengzhuang=Manager.createPlayer(is,"audio/x-wav");
is=this.getClass().getResourceAsStream("/jineng.wav");
jinengl=Manager.createPlayer(is,"audio/x-wav");
imFruit=new Image[5];
imFruit[0]=loadImage("/caomei.png");
imFruit[1]=loadImage("/huanggua.png");
imFruit[2]=loadImage("/xihongshi.png");
imFruit[3]=loadImage("/xiangjiao.png");
imFruit[4]=loadImage("/beizi.png");
lost=loadImage("/lost.png");
winbk=loadImage("/winbk.png");
zhangyu=loadImage("/zhangyu.png");
sudu=loadImage("/sudu.png");
shijian=loadImage("/shijian.png");
fanhui=loadImage("/fanhui.png");
}catch(Exception e){}
fruit=new Vector();
lm=new LayerManager();
player=new Sprite(Player,32,32);
Zhangyu=new Sprite(zhangyu,32,32);
lm.append(player);
offG=gameMain.gm.gc.off;
screenW=bk.getWidth();
screenH=bk.getHeight();
px=screenW/2;
py=screenH-Player.getHeight()-32;
player.setPosition(px, py);
initLevel(level);
}
publicstatic Image loadImage(String fname)
{
Image im=null;
try{
im =Image.createImage(fname);
}catch(Exception e){
System.out.println("pic err fname="+fname);
}
return im;
}
publicvoid Paint(){
switch(gameMain.gm.gameState)
{
case States.GM_ACTION:
drawBack();
drawPlayer();
makefruit();
drawfruit();
drawscore();
break;
case States.GM_WIN:
drawWin();
drawInfo();
break;
case States.GM_LOST:
drawLost();
break;
case States.GM_JINENG:
drawBack();
drawPlayer();
drawfruit();
drawjineng();
break;
case States.GM_PAUSE:
drawBack();
drawPlayer();
drawfruit();
drawpause();
break;
}
lm.paint(offG, 0, 0);
}
privatevoid drawpause() {
// TODO Auto-generated method stub
switch(xuanze)
{
case 1:
offG.drawImage(fanhui, 40, screenH/2-20, 0);
offG.setColor(0, 150, 200);
offG.drawRect(58, screenH/2+15,50, 18);
break;
case 2:
offG.drawImage(fanhui, 40, screenH/2-20, 0);
offG.setColor(0, 150, 200);
offG.drawRect(140, screenH/2+15, 46, 18);
break;
}
}
publicint drawjineng(){
switch(ji)
{
case 1:
jineng+=5;
if(jineng>=screenH/2-10)
{
gameMain.gm.gameState=States.GM_ACTION;
jineng=0;
ji=0;
return 0;
}
offG.drawImage(sudu, 60, jineng, 0);
break;
case 2:
jineng+=5;
if(jineng>=screenH/2-10)
{
gameMain.gm.gameState=States.GM_ACTION;
jineng=0;
ji=0;
return 0;
}
offG.drawImage(shijian, 60, jineng, 0);
}
return 1;
}
privatevoid drawInfo() {
// TODO Auto-generated method stub
offG.setColor(0,0,255);
offG.drawString("第"+level+"關",80,130,0);
offG.drawString("倒計時(秒) "+this.levelTime[level],80,150,0);
offG.drawString("通關分數 "+this.levelScore[level+1],80,170,0);
}
privatevoid drawLost(){
if(lm!=null)
{
lm.remove(player);
}
offG.setColor(0, 0, 0);
offG.fillRect(0, 0, screenW, screenH);
offG.setColor(0, 100, 255);
offG.drawImage(lost, 60, screenH/2-40, 0);
offG.drawString("您已經通過"+level+"關", 80, screenH/2+10, 0);
cout++;
if(cout>40)
{
gameMain.gm.gc.load.process=0;
gameMain.gm.gameState=States.GM_MENU;
level=1;
try {
gameMain.gm.gc.back.setMediaTime(0);
gameMain.gm.gc.back.start();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
privatevoid drawWin() {
// TODO Auto-generated method stub
lm.remove(player);
offG.drawImage(winbk, 0, 0, 0);
lm.append(Zhangyu);
Zhangyu.nextFrame();
Zhangyu.setPosition(screenW/2-20, screenH/2-60);
count++;
if(count>=30)
{
count=0;
try {
gameMain.gm.gc.back.setMediaTime(0);
gameMain.gm.gc.back.start();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(level>levelCount)
{
gameMain.gm.gameState=States.GM_LOST;
}
else
{
initLevel(level);
gameMain.gm.gameState=States.GM_ACTION;
}
}
}
publicvoid drawfruit()//畫水果
{
for(int i=0;i<fruit.size();i++)
{int tmp[]=(int [])fruit.elementAt(i);
offG.drawImage(imFruit[tmp[0]],tmp[1],tmp[2],0);
}
}
publicint drawscore()
{
offG.setColor(255, 255, 255);
switch(defen)
{
case 1:
a+=2;
if(a>=15)
{
a=0;
defen=0;
return 0;
}
offG.drawString("+100", fenx, feny-a, 0);
break;
case 2:
a+=2;
if(a>=15)
{
a=0;
defen=0;
return 0;
}
offG.drawString("+200", fenx, feny-a, 0);
break;
}
return 1;
}
publicsynchronizedvoid makefruit()
{
countFruit++;
if(countFruit>fruittime[level-1])
{
countFruit=1;
int tmp[]=newint[4];
int ftype=Math.abs(random.nextInt()%6);
tmp[0]=this.levelTypes[level-1][ftype];
tmp[1]=0;
switch(ftype)
{
case 0:
tmp[2]=Math.abs((random.nextInt()%(screenH/2-50)));
break;
case 1:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 2:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 3:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 4:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
case 5:
tmp[2]=Math.abs((random.nextInt()%(screenH/2+40)));
break;
}
tmp[3]=0;
fruit.addElement(tmp);
}
if(countFruit%FruitSpeed==0)
{
for(int i=0;i<fruit.size();i++)
{
int tmp[]=(int [])fruit.elementAt(i);
if(tmp[3]==0)
{
tmp[1]+=3+level;
if(tmp[1]>screenW)
{
fruit.removeElementAt(i);
}
System.gc();
}
else
{
if(tmp[0]==0){score+=100;defen=1;fenx=tmp[1]+12;feny=tmp[2];}
if(tmp[0]==1){score+=200;defen=2;fenx=tmp[1]+12;feny=tmp[2];}
fruit.removeElementAt(i);
System.gc();
}
}
}
}
publicvoid drawPlayer()
{
if(dir)
{
if(zoom)
{
if(py>0)
{
py-=speed;
for(int i=0;i<fruit.size();i++)
{
int tmp[]=(int [])fruit.elementAt(i);
int x=px;
int y=py;
if(x<tmp[1]-10||x>tmp[1]+16||y<tmp[2]||y>tmp[2]+25)
{
}
else
{
try {
pengzhuang.start();
} catch (MediaException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(tmp[0]==2){snum++;}
elseif(tmp[0]==3){tnum++;}
elseif(tmp[0]==4){//增加水果
Thread ts=new Thread()
{
publicvoid run()
{
for(int i=0;i<15;i++)
{
makefruit();
try{ Thread.sleep(100);}catch(Exception e){}
}
}
};
ts.start();
}
else{
tmp[3]=1;
}
if(tmp[0]>1)fruit.removeElementAt(i);
zoom=false;
player.setTransform(Sprite.TRANS_ROT180);
}
}
}
else
{
zoom=false;
player.setTransform(Sprite.TRANS_ROT180);
}
}
else
{
if(py<screenH-Player.getHeight()-32)
{
py+=speed;
}
else
{
py=screenH-Player.getHeight()-32;
player.setTransform(Sprite.TRANS_NONE);
zoom=true;;
dir=false;
if(score>=levelScore[level])
{
level++;
gameMain.gm.gameState=States.GM_WIN;
try {
gameMain.gm.gc.back.stop();
// win.setMediaTime(0);
win.start();
} catch (MediaException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
player.nextFrame();
}
player.setPosition(px, py);
}
publicvoid time()//計算時間
{
long currTime = System.currentTimeMillis();
lastTime = currTime;
drawtime=this.levellastTime-(lastTime-this.levelStartTime)/1000;
if(drawtime<=0){gameMain.gm.gameState=States.GM_LOST;try {
gameMain.gm.gc.back.stop();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
publicvoid drawBack() //畫背景
{
offG.drawImage(bk, 0, 0, 0);
offG.setColor(255,255,255);
offG.drawString("分數: "+score+" 剩餘時間: "+drawtime,5,5,Graphics.LEFT|Graphics.TOP);
offG.setColor(0, 0, 0);
offG.drawString("菜單",5,screenH-Font.getDefaultFont().getHeight(),0);
offG.setColor(40,200,20);
offG.drawString("第 "+this.level+" 關 ",190,5,Graphics.LEFT|Graphics.TOP);
offG.setColor(200,200,200);
if(snum>0)
offG.drawString("S: "+snum,6,25,Graphics.LEFT|Graphics.TOP);
if(tnum>0)
offG.drawString("T: "+tnum,6,40,Graphics.LEFT|Graphics.TOP);
}
publicvoid initLevel(int n)
{
level=n;
speedtime=levelTime[level];
lm.append(player);
lm.remove(Zhangyu);
this.levelStartTime=System.currentTimeMillis();
this.levellastTime=this.levelTime[n];
this.score=0;
if(gameMain.gm.gameState==States.GM_WIN)
{
gameMain.gm.gameState=States.GM_ACTION;
}
FruitSpeed=3;
fruit.removeAllElements();
if(n==1)//如果是第一關初始化道具
{
tnum=snum=0;
}
System.gc();
}
publicvoid move(int direction)
{
switch(direction)
{
case Direction.D_LEFT:
if(px>=0)
{
px-=speed;
player.nextFrame();
player.setPosition(px, py);
}
break;
case Direction.D_REIGHT:
if(px<screenW-player.getHeight())
{
px+=speed;
player.nextFrame();
player.setPosition(px+speed, py);
}
break;
}
}
}
QQ283413152 喫草莓的小逸