⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameboard.java

📁 手机RPG游戏
💻 JAVA
字号:
package window;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import main.*;
import thread.*;
import obj.*;
import java.io.*;
//游戏的主窗口
public class GameBoard extends Canvas implements CommandListener{

  public Action action;//动作
  public Plan myPlan;//玩家飞机
  public Bullets mybullets;//玩家子弹//////////////
  public Aerolites aerolites;//陨石
  public Enemys enemys;//敌机
  public Boss boss;//
  public Explodes explodes;//爆炸效果.
  public Booty booty;//奖励
  public BulletExplodes bexplode;//子弹的爆炸
  public  MyThread myThread;//线程

  private  Command esc;
  private  Command about;
  private  Command help;
  private  Command start;
  private int  i=1;//屏幕移动用的临时变量,计数器
  private int  moveScreen=0;//屏幕移动
  private int w;
  private int h;

  private  Image backimg;  //双缓冲
  private  Graphics backg;
////////////////////////////////////////////////
public GameBoard(){//构造函数

    action=new Action();
    esc=new Command("退出",Command.EXIT,1);
    start=new Command("重来",Command.OK,1);
    help=new Command("帮助",Command.OK,1);
    about=new Command("关于",Command.OK,1);

    this.addCommand(esc);
    this.addCommand(start);
    this.addCommand(help);
    this.addCommand(about);
    this.setCommandListener(this);

    w=this.getWidth();
    h=this.getHeight();

    backimg=Image.createImage(w,h);//双缓冲
    backg=backimg.getGraphics();
    drawBackImage(backg);//加入背景

    gameInit();

    myThread=new MyThread();//开启线程
    myThread.start();
  }
//////////////////////////
  private void gameInit(){
  Cntrl.load.pass=0;
  myPlan=new Plan(w,h);
  mybullets=new Bullets();
  aerolites=new Aerolites(w,h);
  enemys=new Enemys(w,h);
  boss=new Boss(w,h);
  explodes=new Explodes();
  booty=new Booty(0,0,w,h);
  bexplode=new BulletExplodes();

  }

protected void paint(Graphics g) {
    myPaint(g);
  }
private void drawback(Graphics g){
    moveScreen=this.getMoveScreen();//取得屏幕的移动量。
    g.drawImage(backimg,0,moveScreen-32,Graphics.LEFT|Graphics.TOP);//画背景
    g.drawImage(backimg,0,moveScreen,Graphics.LEFT|Graphics.TOP);//画两次是让背景产生移动效果


  }
/////////////////////////
public void myPaint(Graphics g){

  drawback(g);//背景
  explodes.DrawSelves(g);//爆炸效果.
  mybullets.DrawSelves(g,myPlan.myPlanAlive,action,myPlan.x,myPlan.y,w,h);//画玩家子弹

  booty.DrawSelf(g);//奖励
  aerolites.DrawSelves(g,mybullets);//陨石
  enemys.DrawSelves(g,mybullets);//敌机
  boss.drawself(g,enemys.showBoss,mybullets);//加入Boss //boss的子弹
  bexplode.DrawSelves(g);//玩家子弹的爆炸
  myPlan.drawMyPlan(g,action,booty,aerolites,enemys,boss);//加入玩家飞机。//画生命值.//画分数

  }
  ///////////////////////
public void commandAction(Command command, Displayable displayable) {
    if(command==esc){ Cntrl.myMid.quitApp(); }
    if(command==start){this.gameInit();}
    if(command==about){Cntrl.showAbout();}
    if(command==help){Cntrl.showHelp();}
    }//end
 //////////////////////
public void keyPressed(int keyCode){//系统侦听按钮
      switch(getGameAction(keyCode)){
          case Canvas.UP: action.up=(-myPlan.d); break;
          case Canvas.DOWN: action.down=(myPlan.d);break;
          case Canvas.LEFT: action.left=(-myPlan.d);break;
          case Canvas.RIGHT:action.right=(myPlan.d);break;
          case Canvas.GAME_A:action.fire=(2*myPlan.d);break;
        }
    }//end keyPressed
/////////////////
public void keyReapeted(int keyCode){//重复按键起
    }
public void keyReleased(int keyCode){//按键抬起时
   switch(getGameAction(keyCode)){
         case Canvas.UP:action.up=(0);break;
         case Canvas.DOWN:action.down=(0);break;
         case Canvas.LEFT:action.left=(0);break;
         case Canvas.RIGHT:action.right=(0);break;
         case Canvas.GAME_A:action.fire=(0);break;
         }
    }//end keyReleased
///////////////////////////////////////////
private int getMoveScreen(){//屏幕移动.
      if(0==i%2)
        { if(moveScreen>31)  { moveScreen=0;}
          else{ moveScreen+=1;}i=1;
        } else{i++;}
return moveScreen;
    }
 //////////////////////

public void drawBackImage(Graphics g){///画背景
     int pass=Cntrl.load.pass;
     Image img=Cntrl.load.skyImg[pass];
     int imgw=img.getWidth();
     int imgh=img.getHeight();
     int cx=w/imgw+1;//铺底图的块数
     int cy=h/imgh+1;

     for(int j=0;j<cy;j++)
     for(int i=0;i<cx;i++){
     g.drawImage(img,i*imgw,j*imgh,Graphics.LEFT|Graphics.TOP);
    }
    }//end
///////////////////////////////
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -