正文

ssss2006-12-04 11:24:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/21259.html

分享到:

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.*;
import java.util.*;
public class Saver extends MIDlet
{
 private SaverCanvas savercanvas;
 private static Menu menu;//菜单类
 
 public void startApp(){
 
 menu=new Menu(Display.getDisplay(this));
 
 //savercanvas=new SaverCanvas(Display.getDisplay(this));
 //savercanvas.start();
 
         }

 public void pauseApp(){}

 public void destroyApp(boolean e){
 notifyDestroyed();
      }


 class SaverCanvas extends GameCanvas implements Runnable{
 
 private Display display;
 private Sprite xman;
 private TiledLayer background;
 private int Xbackground,Ybackground;
 private int xmanX=2,xmanY=2;//主角的XY坐标,速度
 private int xman_now_X,xman_now_Y;//主角现在的XY坐标
 private Random rand;
 private Sprite enemy1,enemy2,enemy3,enemy4;//不喜欢用数组
 private int enemy_now_X,enemy_now_Y;//敌人现在的坐标
 private Sprite burst_first,burst_second,burst_third1,burst_third2;//为什么不用一个精灵?因为我手上没PS合成-!
 private int lift=3,killenemy,score;
 private boolean end=true;
 private int power=0;//炸弹的长度控制
 


 //private Timer bursttimer;//任务
 //private BurstTask bursttask;//用于爆炸

 private Burst burst;

 public SaverCanvas(Display d){

 super(true);
 
 display=d;
 
 display.setCurrent(this);
         }

 

 private void start(){
 try{
 xman=new Sprite(Image.createImage("/man.png"),8,8);
 enemy1=new Sprite(Image.createImage("/man1.png"),8,8);
 enemy2=new Sprite(Image.createImage("/man1.png"),8,8);
 enemy3=new Sprite(Image.createImage("/man1.png"),8,8);
 enemy4=new Sprite(Image.createImage("/man1.png"),8,8);

 background=new TiledLayer(15,15,Image.createImage("/tree.png"),8,8);

 burst_first=new Sprite(Image.createImage("/img1.png"),8,8);
 burst_second=new Sprite(Image.createImage("/img2.png"),8,8);
 burst_third1=new Sprite(Image.createImage("/burst1.png"),24,8);
 burst_third2=new Sprite(Image.createImage("/burst2.png"),8,24);
 //一开始没爆炸
 burst_first.setVisible(false);
 burst_second.setVisible(false);
 burst_third1.setVisible(false);
 burst_third2.setVisible(false);
 


 setcell();
 enemy_random_raise();
    }
 catch(Exception e){
     }
 
 Thread t=new Thread(this);
 t.start();

       }


/*
      随机出现敌人

*/

private void enemy_random_raise(){//随机敌人
 int enemyX,enemyY;
 
 rand=new Random();
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;//屏幕大概就15*8那么大吧,只要是8倍数,而且不在背景
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy1.setPosition(enemyX,enemyY);
   }while(enemy1.collidesWith(background,false));
 
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy2.setPosition(enemyX,enemyY);
   }while(enemy2.collidesWith(background,false));

 do{
 enemyX=Math.abs(rand.nextInt())%15*8;
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy3.setPosition(enemyX,enemyY);
   }while(enemy3.collidesWith(background,false));

 do{
 enemyX=Math.abs(rand.nextInt())%15*8;
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy4.setPosition(enemyX,enemyY);
   }while(enemy4.collidesWith(background,false));
 

     }

/*
 敌人出现不能和背景碰撞,初始化敌人出现地点
*/
/*private void firstCheckEnemy(Sprite s){
 if(s.collidesWith(background,false))
 enemyX=Math.abs(rand.nextInt())%15*8;
  enemyY=Math.abs(rand.nextInt())%15*8;
 s.setPosition(enemyX,enemyY);
 
            }
*/


/*
 为地图赋予列行
*/
 private void setcell(){

int map1[]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
 
 
 };
 
 for(int i=0;i<map1.length;i++)
 {
 int column=i%15;//6,1
 int row=(i-column)/15;//1
 background.setCell(column,row,map1[i]);
 
 }
 
 Xbackground=2;
 Ybackground=2;
 
 xman.setPosition(8,8);
 background.setPosition(0,0);
 
         }


 public void run(){
 Graphics g=getGraphics();

 while(end){

 alive();

 update();
 
 draw(g);
 
 try{
 Thread.sleep(100);
 
    }
 catch(Exception e){}
          }
        }

/*
 判断是否结束游戏,生命<0
*/
private void alive(){

 if(lift<0){
 end=false;
    }
      }

 


/*
 update()核心方法
*/
 private void update()
 {  enemyrandommove();

 xman_now_X=xman.getX();
 xman_now_Y=xman.getY(); 
 
 int keyState=getKeyStates();
 
 if((keyState&GAME_A_PRESSED)!=0){
 
 end=false;
 
 menu.sleep=true;System.out.println(""+menu.sleep);

 display.setCurrent(menu);

 System.out.println("GameA put down");

     }
 


 if((keyState&FIRE_PRESSED)!=0){
 burst_first.setPosition(xman_now_X,xman_now_Y);
 burst_first.setVisible(true);
 burst=new Burst(xman_now_X,xman_now_Y);//     实现爆炸类
 burst=null;
    }
 

 if((keyState&LEFT_PRESSED)!=0)
 {
 
 xman.move(-xmanX,0);
 xman.nextFrame();
 checkRole();
 }
 else if((keyState&RIGHT_PRESSED)!=0)
 {
 
 xman.move(xmanX,0);
 xman.nextFrame();
 checkRole();
 }
 if((keyState&UP_PRESSED)!=0){

 xman.move(0,-xmanY);
 xman.nextFrame();
 checkRole();
        }
 if((keyState&DOWN_PRESSED)!=0){
 
 xman.move(0,xmanY);
 xman.nextFrame();
 checkRole();
    }

 xman_knock_enemy();

 burstknockenemy();
 

 
 }


/*
 敌人随机移动,并伴随追逐主角
*/
private void enemyrandommove(){
 
 int enemyvalue;
   rand=new Random();

 enemy_now_X=enemy1.getX();
 enemy_now_Y=enemy1.getY();

 

 if(Math.abs(enemy_now_X-xman_now_X)<24 && Math.abs(enemy_now_Y-xman_now_Y)<24)//判断是否绝对值在X<24或者Y〈24就要追逐
 {
enemy1.nextFrame();
 if(enemy_now_X<xman_now_X)
 {
 enemy1.move(1,0);
 checkEnemy(enemy1);
 //System.out.println("xSSSS");
 }

  if(enemy_now_X>xman_now_X)
 {

 enemy1.move(-1,0);
 checkEnemy(enemy1);
 //System.out.println("xSSSS");
 }


 if(enemy_now_Y>xman_now_Y)
 {

 enemy1.move(0,-1);
 checkEnemy(enemy1);
 //System.out.println("xSSSS");
 }

 if(enemy_now_Y<xman_now_Y)
 {

 enemy1.move(0,1);
 checkEnemy(enemy1);
 //System.out.println("xSSSS");
 }

 }

 //else{

 enemyvalue=Math.abs(rand.nextInt())%4;

 switch(enemyvalue)
 {
 case 0:enemy1.move(-3,0);enemy1.nextFrame();checkEnemy(enemy1);break;
 case 1:enemy1.move(3,0);enemy1.nextFrame();checkEnemy(enemy1);break;
 case 2:enemy1.move(0,-3);enemy1.nextFrame();checkEnemy(enemy1);break;
 case 3:enemy1.move(0,3);enemy1.nextFrame();checkEnemy(enemy1);break;
 default:break;
 
 }
     //}


 enemy_now_X=enemy2.getX();//2
 enemy_now_Y=enemy2.getY();

 if(Math.abs(enemy_now_X-xman_now_X)<24  && Math.abs(enemy_now_Y-xman_now_Y)<24)
 {
enemy2.nextFrame();
 if(enemy_now_X<xman_now_X)
 {
 enemy2.move(1,0);
 checkEnemy(enemy2);
 //System.out.println("xSSSS");
 }

  if(enemy_now_X>xman_now_X)
 {

 enemy2.move(-1,0);
 checkEnemy(enemy2);
 //System.out.println("xSSSS");
 }

 if(enemy_now_Y>xman_now_Y)
 {

 enemy2.move(0,-1);
 checkEnemy(enemy2);
 //System.out.println("xSSSS");
 }

 if(enemy_now_Y<xman_now_Y)
 {

 enemy2.move(0,1);
 checkEnemy(enemy2);
 //System.out.println("xSSSS");
 }

 }

 //else{

 enemyvalue=Math.abs(rand.nextInt())%4;

 switch(enemyvalue)
 {
 case 0:enemy2.move(-3,0);enemy2.nextFrame();checkEnemy(enemy2);break;
 case 1:enemy2.move(3,0);enemy2.nextFrame();checkEnemy(enemy2);break;
 case 2:enemy2.move(0,-3);enemy2.nextFrame();checkEnemy(enemy2);break;
 case 3:enemy2.move(0,3);enemy2.nextFrame();checkEnemy(enemy2);break;
 default:break;
 
 }
     //}


 enemy_now_X=enemy3.getX();//3
 enemy_now_Y=enemy3.getY();

 
 if(Math.abs(enemy_now_X-xman_now_X)<24 && Math.abs(enemy_now_Y-xman_now_Y)<24)
 {
enemy3.nextFrame();
 if(enemy_now_X<xman_now_X)
 {
 enemy3.move(1,0);
 checkEnemy(enemy3);
 //System.out.println("xSSSS");
 }

  if(enemy_now_X>xman_now_X)
 {

 enemy3.move(-1,0);
 checkEnemy(enemy3);
 //System.out.println("xSSSS");
 }

 if(enemy_now_Y>xman_now_Y)
 {

 enemy3.move(0,-1);
 checkEnemy(enemy3);
 //System.out.println("xSSSS1");
 }

 if(enemy_now_Y<xman_now_Y)
 {

 enemy3.move(0,1);
 checkEnemy(enemy3);
 //System.out.println("xSSSS1");
 }
 }

 //else{

 enemyvalue=Math.abs(rand.nextInt())%4;

 switch(enemyvalue)
 {
 case 0:enemy3.move(-3,0);enemy3.nextFrame();checkEnemy(enemy3);break;
 case 1:enemy3.move(3,0);enemy3.nextFrame();checkEnemy(enemy3);break;
 case 2:enemy3.move(0,-3);enemy3.nextFrame();checkEnemy(enemy3);break;
 case 3:enemy3.move(0,3);enemy3.nextFrame();checkEnemy(enemy3);break;
 default:break;
 
 }

    //}

 enemy_now_X=enemy4.getX();//4
 enemy_now_Y=enemy4.getY();

 
 if(Math.abs(enemy_now_X-xman_now_X)<24 && Math.abs(enemy_now_Y-xman_now_Y)<24)
 {
enemy4.nextFrame();
 if(enemy_now_X<xman_now_X)
 {
 enemy4.move(1,0);
 checkEnemy(enemy4);
 //System.out.println("xSSSS");
 }

  if(enemy_now_X>xman_now_X)
 {

 enemy4.move(-1,0);
 checkEnemy(enemy4);
 System.out.println("xSSSS");
 }

 if(enemy_now_Y>xman_now_Y)
 {

 enemy4.move(0,-1);
 checkEnemy(enemy4);
 //System.out.println("xSSSS1");
 }

 if(enemy_now_Y<xman_now_Y)
 {

 enemy4.move(0,1);
 checkEnemy(enemy4);
 //System.out.println("xSSSS1");
 }
 }

 //else{


 enemyvalue=Math.abs(rand.nextInt())%4;

 switch(enemyvalue)
 {
 case 0:enemy4.move(-3,0);enemy4.nextFrame();checkEnemy(enemy4);break;
 case 1:enemy4.move(3,0);enemy4.nextFrame();checkEnemy(enemy4);break;
 case 2:enemy4.move(0,-3);enemy4.nextFrame();checkEnemy(enemy4);break;
 case 3:enemy4.move(0,3);enemy4.nextFrame();checkEnemy(enemy4);break;
 default:break;
 
 }

     //}

        }

/*
 敌人碰撞背景,则停止
*/
private void checkEnemy(Sprite s){
 if(s.collidesWith(background,false)){
 s.setPosition(enemy_now_X,enemy_now_Y);
 //System.out.println("碰撞");
           }
 
     }

/*

 检测主角是否到边界,或者遇到背景

*/
 private void checkRole(){

 if(xman.collidesWith(background,false)){
 xman.setPosition(xman_now_X,xman_now_Y);
 System.out.println("碰撞");
 
            }
           }

/*
 主角碰到了敌人,自然后退,要判断前后碰撞和上下碰撞
 #只需要把主角的左右坐标和敌人坐标比较
 #左右坐标有差异的,移动左右
 #上下坐标有差异的,移动上下
 #实现后退
 #主角上次坐标已经保留
*/
 private void xman_knock_enemy(){
 //if(xman.getX()%8==0)原本是为了防止碰撞后斜跳
 //if(xman.getY()%8==0)原本是为了防止碰撞后斜跳
 if(xman.collidesWith(enemy1,false)){
 
  if(xman.getX()<enemy1.getX()){//敌人左边
  xman.setPosition(xman_now_X-16,xman.getY());
          }
  if(xman.getX()>enemy1.getX()){//敌人右边
  xman.setPosition(xman_now_X+16,xman.getY());
          }
  if(xman.getY()<enemy1.getY()){//敌人在下
  xman.setPosition(xman.getX(),xman_now_Y-16);
          }
  if(xman.getY()>enemy1.getY()){//敌人在上
  xman.setPosition(xman.getX(),xman_now_Y+16);
          }
 lift-=1;
  //lockXmancheck();
 
               }
 
 if(xman.collidesWith(enemy2,false)){
  if(xman.getX()<enemy2.getX()){//敌人左边
  xman.setPosition(xman_now_X-16,xman.getY());
          }
  if(xman.getX()>enemy2.getX()){//敌人右边
  xman.setPosition(xman_now_X+16,xman.getY());
          }
  if(xman.getY()<enemy2.getY()){//敌人在下
  xman.setPosition(xman.getX(),xman_now_Y-16);
          }
  if(xman.getY()>enemy2.getY()){//敌人在上
  xman.setPosition(xman.getX(),xman_now_Y+16);
              }
 lift-=1;
 
  //lockXmancheck();
        }

 if(xman.collidesWith(enemy3,false)){
  if(xman.getX()<enemy3.getX()){//敌人左边
  xman.setPosition(xman_now_X-16,xman.getY());
          }
  if(xman.getX()>enemy3.getX()){//敌人右边
  xman.setPosition(xman_now_X+16,xman.getY());
          }
  if(xman.getY()<enemy3.getY()){//敌人在下
  xman.setPosition(xman.getX(),xman_now_Y-16);
          }
  if(xman.getY()>enemy3.getY()){//敌人在上
  xman.setPosition(xman.getX(),xman_now_Y+16);
               }
 lift-=1;

  //lockXmancheck();
        }

 if(xman.collidesWith(enemy4,false)){
  if(xman.getX()<enemy4.getX()){//敌人左边
  xman.setPosition(xman_now_X-16,xman.getY());
          }
  if(xman.getX()>enemy4.getX()){//敌人右边
  xman.setPosition(xman_now_X+16,xman.getY());
          }
  if(xman.getY()<enemy4.getY()){//敌人在下
  xman.setPosition(xman.getX(),xman_now_Y-16);
          }
  if(xman.getY()>enemy4.getY()){//敌人在上
  xman.setPosition(xman.getX(),xman_now_Y+16);
               }
 lift-=1;

 
        }
  lockXmancheck();
  
      }


/*
 防止主角落在边界上卡住,或者在屏幕之外
*/
 private void lockXmancheck(){
 if(xman.getX()<8){
 xman.setPosition(8,xman.getY());
    }
 if(xman.getX()>112){
 xman.setPosition(104,xman.getY());
      }
 if(xman.getY()<8){
 xman.setPosition(xman.getX(),8);
    }
 if(xman.getY()>104){
 xman.setPosition(xman.getX(),96);
      }
 
 
        }

/*
 炸弹炸到敌人,而且是第三个"炸弹"
*/
 private void burstknockenemy(){
 int enemyX,enemyY;

 if(burst_third1.collidesWith(enemy1,false)||burst_third2.collidesWith(enemy1,false)){
 rand=new Random();
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;//屏幕大概就15*8那么大吧,只要是8倍数,而且不在背景
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy1.setPosition(enemyX,enemyY);
   }while(enemy1.collidesWith(background,false));

 killenemy+=1;score+=20;power+=1;
 if(power>6) power=6;
         }


 if(burst_third1.collidesWith(enemy2,false)||burst_third2.collidesWith(enemy2,false)){
 System.out.println("knock");
 rand=new Random();
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;//屏幕大概就15*8那么大吧,只要是8倍数,而且不在背景
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy2.setPosition(enemyX,enemyY);
   }while(enemy2.collidesWith(background,false));

 killenemy+=1;score+=20;power+=1;
 if(power>6) power=6;
         }


 if(burst_third1.collidesWith(enemy3,false)||burst_third2.collidesWith(enemy3,false)){
 System.out.println("knock");
 rand=new Random();
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;//屏幕大概就15*8那么大吧,只要是8倍数,而且不在背景
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy3.setPosition(enemyX,enemyY);
   }while(enemy3.collidesWith(background,false));
 
 killenemy+=1;score+=20;power+=1;
 if(power>6) power=6;
         }


 if(burst_third1.collidesWith(enemy4,false)||burst_third2.collidesWith(enemy4,false)){
 System.out.println("knock");
 rand=new Random();
 do{
 enemyX=Math.abs(rand.nextInt())%15*8;//屏幕大概就15*8那么大吧,只要是8倍数,而且不在背景
  enemyY=Math.abs(rand.nextInt())%15*8;
 enemy4.setPosition(enemyX,enemyY);
   }while(enemy4.collidesWith(background,false));

 killenemy+=1;score+=20;power+=1;
 if(power>6) power=6;
         }
 

    }

 


/*
 绘画
*/
private void draw(Graphics g){

 g.setColor(0xffffff);
 g.fillRect(0,0,getWidth(),getHeight());
 
 background.paint(g);

 burstdrawcheck();

 enemy1.paint(g);
 enemy2.paint(g);
 enemy3.paint(g);
 enemy4.paint(g);

 xman.paint(g);
 
 liftkillscore(g,lift,killenemy,score);


 flushGraphics();
            }

/*
 爆炸检测,有按下的话,炸弹暴
*/
private void burstdrawcheck(){
 Graphics g=getGraphics();
 if(burst_first.isVisible())
 {burst_first.paint(g);}

 if(burst_second.isVisible())
 {burst_second.paint(g);}

 if(burst_third1.isVisible())
 {burst_third1.paint(g);
  burst_third2.paint(g);}
        }

 
               }


/*
 生命,杀敌,分数
*/
private void liftkillscore(Graphics gg,int l,int k,int s){
 int lift=l;
 int killenemy=k;
 int score=s;

 
 Graphics g=gg;


 g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_SMALL));
  g.setColor(0x00ffff);
  g.drawString("命:"+lift+"  杀敌:"+killenemy+"  分数: "+score,0,112,Graphics.TOP|Graphics.LEFT);
 
             }


  /*
 炸弹类,做成一个任务,行不通,传值麻烦

class BurstTask implements Runnable{
  private int burst_X,burst_Y;
 private Sprite burst_first,burst_second,burst_third;
 
 public BurstTask(int xman_now_X,int xman_now_Y){
 burst_X=xman_now_X;
 burst_Y=xman_now_Y;
 try{
 burst_first=new Sprite(Image.createImage("/img1.png"),8,8);
 burst_second=new Sprite(Image.createImage("/img2.png"),8,8);
 burst_third=new Sprite(Image.createImage("/img3.png"),16,16);
 //一开始没爆炸
 burst_first.setVisible(false);
 burst_second.setVisible(false);
 burst_third.setVisible(false);
 }
 catch(Exception e){}
         }
 
 public void run(){

 
 burst_first.setPosition(burst_X,burst_Y);
 burst_first.setVisible(true);

 try{Thread.sleep(2000);}
 catch(Exception e){}

    }
     }


  */

/*
 爆炸类2,只是简单的变量调用
*/
class Burst implements Runnable{
 private int burstX,burstY;
/*
 构造器
*/
 public Burst(int x,int y){

 burstX=x;
 burstY=y;

 Thread t=new Thread(this);
 t.start();
 System.out.println("Thread2");
 //savercanvas.xman_now_X=100;
        }
 
/*
 线程启动
*/

 public void run(){
 
 loadburst();
 
 burstdraw();
 
    }

/*
 装载第三个炸弹
*/

private void loadburst(){
 
 switch(menu.savercanvas.power)
 {
 case 1:burstcase1();break;
 case 2:burstcase2();break;
 case 3:burstcase3();break;
 case 4:burstcase4();break;
 case 5:burstcase5();break;
 case 6:burstcase6();break; 
 default:break;
 }
 
   }

/*
 burstcase1炸弹扩大一格
*/
private void burstcase1(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst4.png"),40,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst3.png"),8,40);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }

private void burstcase2(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst5.png"),56,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst6.png"),8,56);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }

private void burstcase3(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst8.png"),72,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst7.png"),8,72);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }


private void burstcase4(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst9.png"),88,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst10.png"),8,88);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }

private void burstcase5(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst12.png"),104,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst11.png"),8,104);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }

private void burstcase6(){
 try{
 menu.savercanvas.burst_third1=new Sprite(Image.createImage("/burst13.png"),120,8);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2=new Sprite(Image.createImage("/burst14.png"),8,120);
 menu.savercanvas.burst_third2.setVisible(false);
    }
 catch(Exception e){}
    }

 

 

 

/*
 判断,并且炸弹每间隔2秒换图burst_first,burst_second,burst_third;
*/
private void burstdraw(){
 
 if(menu.savercanvas.burst_first.isVisible())
 {
 try{
 Thread.sleep(1000);
    }
 catch(Exception e){}

 menu.savercanvas.burst_second.setPosition(burstX,burstY);
 menu.savercanvas.burst_second.setVisible(true);
 menu.savercanvas.burst_first.setVisible(false);

 }
 
 if(menu.savercanvas.burst_second.isVisible())
 {
 try{
 Thread.sleep(1000);
    }
 catch(Exception e){}

 menu.savercanvas.burst_third1.setPosition(burstX-(menu.savercanvas.power+1)*8,burstY);//十字形状
 menu.savercanvas.burst_third2.setPosition(burstX,burstY-(menu.savercanvas.power+1)*8);
 menu.savercanvas.burst_third1.setVisible(true);
 menu.savercanvas.burst_third2.setVisible(true);
 menu.savercanvas.burst_second.setVisible(false);

 }

 if(menu.savercanvas.burst_third1.isVisible())
 {
 try{
 Thread.sleep(500);
    }
 catch(Exception e){}
 //savercanvas.burst_third.setVisible(true);
 menu.savercanvas.burst_third1.setVisible(false);
 menu.savercanvas.burst_third2.setVisible(false);
 }
 
   }

    }

 

//}

 

class Menu extends GameCanvas implements Runnable{
 private SaverCanvas savercanvas;
 private Display display;
 public boolean sleep=true;//转入为false
 private boolean putdown=false;//按下为true
 int nowPosition=1;
 private boolean savercanvasRun=false;//运行之后为true

/*
      构造器
*/

 
 public Menu(Display d){
 super(true);
 
  display=d;
 
  display.setCurrent(this);
 
 Thread t=new Thread(this);
 t.start();
       }


 
/*
      线程运行
*/
 public void run(){
 Graphics g=getGraphics();
 while(sleep){


 update();

 draw(g);

 try{
 Thread.sleep(1000);
    }
 catch(Exception e){}

 
      }
 
    }

/*
      更新update()
*/
 private void update(){

 int keyState=getKeyStates();
 
 if((keyState&FIRE_PRESSED)!=0){//                             启动savercanvas

 if(nowPosition==1){ 

 if(savercanvasRun==false){
  savercanvas=new SaverCanvas(display);
 savercanvas.start();
 sleep=false;
 savercanvasRun=true;
     }
 else
 {
 savercanvas.end=true;
 display.setCurrent(savercanvas);
 
 }


          }
 else if(nowPosition==2){
 putdown=!putdown;
   }
 else if(nowPosition==3){
 destroyApp(true);
   }
 
 
 

          }
 
 if((keyState&UP_PRESSED)!=0){
 nowPosition--;
 if(nowPosition==0)
 nowPosition=3;
 
        }

 if((keyState&DOWN_PRESSED)!=0){
  
 nowPosition++;
 if(nowPosition==4)
 nowPosition=1;

          }
 
        }

/*
      画图draw(g)
*/
 private void draw(Graphics g){

 g.setColor(0xffffff);
 g.fillRect(0,0,getWidth(),getHeight());

 g.setColor(0xff00ff);
 for(int i=1;i<4;i++){

 g.drawRect(20,20*i,80,20); //起点X,起点Y,宽,高   
       }


 g.setColor(0X00ffff);

 if(nowPosition==1){
 g.fillRect(20,20,80,20);
 
         }
 else
 if(nowPosition==2){
 g.fillRect(20,40,80,20);
 
        }
 else
 if(nowPosition==3){
 g.fillRect(20,60,80,20);
 
        }
 

 
 g.setColor(0X333333);
 
 g.drawString("进入游戏",20,20*1,Graphics.TOP|Graphics.LEFT);
 g.drawString("游戏帮助",20,20*2,Graphics.TOP|Graphics.LEFT);
 g.drawString(" 退  出 ",20,20*3,Graphics.TOP|Graphics.LEFT); 
 
 if(putdown){
 g.setColor(0xffffff);
  g.fillRect(0,0,getWidth(),getHeight());

  g.setColor(0xff00ff);
 g.drawString("qq14923349",20,20*1,Graphics.TOP|Graphics.LEFT);
 g.drawString("2006,12,5",20,20*2,Graphics.TOP|Graphics.LEFT);
 g.drawString("www.sword2008.",0,20*3,Graphics.TOP|Graphics.LEFT);
 g.drawString("programfan.com",0,20*4,Graphics.TOP|Graphics.LEFT);

     }   

 flushGraphics();

 
         }

                     }


}

 

阅读(1865) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册