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

📄 mscreen.java~4~

📁 手机游戏小游戏 合金弹头 J2ME S60模拟器源代码
💻 JAVA~4~
📖 第 1 页 / 共 5 页
字号:
import java.io.*;
import java.util.*;
import com.nokia.mid.ui.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import com.nokia.mid.sound.Sound;

public class MScreen extends FullCanvas {
  protected final int N3650 = 1;
  protected final int N7650 = 0;
  protected final int platform
     = ("nokia3650".equals(System.getProperty("microedition.platform").toLowerCase()))?N3650:N7650;

  //****************************************************************************
  //角色左右方向
  //****************************************************************************
  private final int DIRECT_LEFT = -1;
  private final int DIRECT_RIGH = 1;
  private final int DIRECT_OVER = 2;
  private final int DIRECT_DOWN = 3;
  private final int DIRECT_LEFTOVER = 4;
  private final int DIRECT_LEFTDOWN = 5;
  private final int DIRECT_RIGHOVER = 6;
  private final int DIRECT_RIGHDOWN = 7;
  //****************************************************************************
  //资源索引
  //****************************************************************************
  private final int FACE_MENUCOVER = 0;
  private final int FACE_MENUTITLE = 1; //主菜单中央标题文字
  private final int FACE_COPYRIGHT = 2; //主菜单底部版权信息
  private final int FACE_MENUITEMS = 3; //菜单项的图形
  private final int FACE_MENUPOINT = 4; //菜单页的菜单指针 弹头形状

  private final int FACE_MISSION_OPT = 5;
  private final int FACE_FONT_LITTLE = 6;//数字字体-最小
  private final int FACE_FONT_MIDDLE = 7;//数字字体-中等大小
  private final int FACE_FONT_GREATE = 8;//数字字体-最大

  private final int FACE_GAME_OVER = 9;  //游戏任务失败的画面
  private final int FACE_GAMESTART = 10; //游戏开始和结束文字
  private final int FACE_ANIMASLOT = 11; //主角的血槽图形
  private final int FACE_HEROBEING = 12; //表示主角生命个数图形
  private final int FACE_ARMS_BOMB = 13; //子弹数和炸弹数文字
  private final int FACE_INFINITUD = 14; //子弹无限的符号
  private final int FACE_PROP_ICON = 15; //道具图标图形
  private final int FACE_BIGCANNON = 16; //飞机坦克用的炮管
  private final int FACE_ZIZOU_GUN = 17; //自走炮的图形

  //****************************************************************************
  /** @todo:构造函数 */
  //****************************************************************************
  public MScreen() {
    face_load();
    sound_load();
    screen_index = SCREEN_RESSLOAD;
  }
  //****************************************************************************
  /** @todo: 框架代码 */
  //****************************************************************************
  private int screen_index = 0;
  private boolean process_lock = false;
  private final int SCREEN_MAINMENU = 0; //主菜单页面
  private final int SCREEN_GAMEBODY = 1; //游戏页面
  private final int SCREEN_HELPINFO = 2; //帮助页面
  private final int SCREEN_COPYRIGH = 3; //版权信息
  private final int SCREEN_GAMEOVER = 4; //游戏结束
  private final int SCREEN_HIGHLIST = 5; //排行榜
  private final int SCREEN_SELEGATE = 6; //选择关卡
  private final int SCREEN_RESSLOAD = 7; //资源装载页面

  /**********************************************
   *
   **********************************************/
  protected final void process_set(int index){
    process_lock = true;
    switch(screen_index){
      case SCREEN_GAMEBODY: gamebody_free(); break;
//      case SCREEN_MAINMENU: mainmenu_free(); break;
//      case SCREEN_HELPINFO: helpinfo_free(); break;
//      case SCREEN_COPYRIGH: copyrigh_free(); break;
//      case SCREEN_GAMEOVER: gameover_free(); break;
//      case SCREEN_HIGHLIST: highlist_free(); break;
//      case SCREEN_RESSLOAD: ressload_free(); break;
//      case SCREEN_SELEGATE: selegate_free(); break;
    }
    screen_index = index;
    switch(index){
      case SCREEN_GAMEBODY: gamebody_init(); break;
      case SCREEN_MAINMENU: mainmenu_init(); break;
      case SCREEN_HELPINFO: helpinfo_init(); break;
      case SCREEN_COPYRIGH: copyrigh_init(); break;
      case SCREEN_HIGHLIST: highlist_init(); break;
      case SCREEN_SELEGATE: selegate_init(); break;
//      case SCREEN_GAMEOVER: gameover_init(); break;
//      case SCREEN_RESSLOAD: ressload_init(); break;
    }
    process_lock = false;
  }

  /**********************************************
   * 状态处理
   **********************************************/
  public final void process_tick() {
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_GAMEBODY: gamebody_run(); break;
      case SCREEN_MAINMENU: mainmenu_run(); break;
      case SCREEN_HELPINFO: helpinfo_run(); break;
      case SCREEN_COPYRIGH: copyrigh_run(); break;
      case SCREEN_GAMEOVER: gameover_run(); break;
      case SCREEN_HIGHLIST: highlist_run(); break;
      case SCREEN_RESSLOAD: ressload_exec(); break;
      case SCREEN_SELEGATE: selegate_run(); break;
    }
  }

  /**********************************************
   * 按键处理
   **********************************************/
  protected final void process_key(int keycode){
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_GAMEBODY: gamebody_key(keycode); break;
      case SCREEN_MAINMENU: mainmenu_key(keycode); break;
      case SCREEN_HELPINFO: helpinfo_key(keycode); break;
      case SCREEN_COPYRIGH: copyrigh_key(keycode); break;
      case SCREEN_GAMEOVER: gameover_key(keycode); break;
      case SCREEN_HIGHLIST: highlist_key(keycode); break;
      case SCREEN_SELEGATE: selegate_key(keycode); break;
//      case SCREEN_RESSLOAD: ressload_key(keycode); break;
    }
  }

  /**********************************************
   * 画
   **********************************************/
  protected void process_draw() {
    if(process_lock) return;
    switch(screen_index){
      case SCREEN_MAINMENU: mainmenu_draw(); break;
      case SCREEN_HELPINFO: helpinfo_draw(); break;
      case SCREEN_COPYRIGH: copyrigh_draw(); break;
      case SCREEN_GAMEBODY: gamebody_draw(); break;
      case SCREEN_GAMEOVER: gameover_draw(); break;
      case SCREEN_HIGHLIST: highlist_draw(); break;
      case SCREEN_RESSLOAD: ressload_draw(); break;
      case SCREEN_SELEGATE: selegate_draw(); break;
    }
  }

  //****************************************************************************
  /** @todo: 主要菜单 */
  //****************************************************************************
   private int mainmenu_index = 0;    //菜单选择索引
   private int mainmenu_total = 6;
   private final int MAINMENU_STARGAME = 0; //开始新游戏
   private final int MAINMENU_CONTINUE = 1; //继续游戏
   private final int MAINMENU_HELPINFO = 2; //帮助信息
   private final int MAINMENU_COPYRIGH = 3; //版权信息
   private final int MAINMENU_HIGHLIST = 4; //高分榜
   private final int MAINMENU_EXITGAME = 5; //退出游戏

   private final void mainmenu_init(){
     mainmenu_index = 0;
   }

   private final void mainmenu_execute(int index){
     switch(index){
       case MAINMENU_STARGAME: process_set(SCREEN_GAMEBODY); break;
       case MAINMENU_CONTINUE: process_set(SCREEN_SELEGATE); break;
       case MAINMENU_HELPINFO: process_set(SCREEN_HELPINFO); break;
       case MAINMENU_COPYRIGH: process_set(SCREEN_COPYRIGH); break;
       case MAINMENU_HIGHLIST: process_set(SCREEN_HIGHLIST); break;
       case MAINMENU_EXITGAME: exitapp(); break;
     }
   }

   private final void mainmenu_run(){
     refresh();
   }

   private final void mainmenu_key(int keycode){
     switch(keycode){
       case KEY_DOWN:
         if (mainmenu_index < mainmenu_total - 1) mainmenu_index++;
         refresh();
         break;
       case KEY_OVER:
         if (mainmenu_index > 0) mainmenu_index--;
         refresh();
         break;
       case KEY_FIRE:
       case KEY_SOFT1:
         mainmenu_execute(mainmenu_index);
         break;
     }
   }

   private final void mainmenu_draw(){
     g.setClip(0, 0, screen_w, screen_h);
     g.drawImage(faceres[FACE_MENUCOVER], 0, 0, 0);
     g.drawImage(faceres[FACE_MENUTITLE], screen_w >> 1,  8, 17);
     g.drawImage(faceres[FACE_COPYRIGHT], screen_w >> 1,198, 17);
     g.drawImage(faceres[FACE_MENUITEMS], screen_w >> 1, 80, 17);
     g.drawImage(faceres[FACE_MENUPOINT],  45, 82 + mainmenu_index * 15, 0);
   }

  //****************************************************************************
  /** @todo:游戏菜单 */
  //****************************************************************************
  private int gamemenu_index = 0;
  private boolean gamemenushow = false;
  private boolean gamebodyexit = false;
  private String[] gamemenu_text = {"返回游戏", "回主菜单"};

  private final void gamemenu_draw() {
    if (!gamemenushow)return;
    g.setClip(0, 0, screen_w, screen_h);
    int x = 30;
    int y = 60;
    int r = 146;
    int b = 100;
    drawframe(x, y, r, b);
    g.setColor(0xF67F1F);
    if ( (gamemenu_index >= 0) && (gamemenu_index < gamemenu_text.length)) {
      g.fillRect(x + 4, y + 4 + 13 * gamemenu_index, r - 8 - x, 13);
    }
    g.setColor(0xffffff);
    for (int i = 0; i < gamemenu_text.length; i++) {
      g.drawString(gamemenu_text[i], screen_w >> 1, y + 4 + 13 * i, 0x11);
    }
  }

  private final void gamemenu_key(int keycode) {
    switch (keycode) {
      case KEY_OVER:
        if (gamemenu_index > 0) gamemenu_index--;
        break;
      case KEY_DOWN:
        if (gamemenu_index < gamemenu_text.length - 1) gamemenu_index++;
        break;
      case KEY_SOFT1:
      case KEY_FIRE:
        switch (gamemenu_index) {
          case 0:
            gamemenushow = false;
            break;
          case 1:
            gamebodyexit = true;
            break;
        }
        break;
      case KEY_SOFT2:
        gamemenushow = false;
        break;
    }
  }

   //****************************************************************************
   /** @todo:游戏结束 */
   //****************************************************************************
   private final void gameover_run(){
     refresh();
   }

   private final void gameover_key(int keycode){
     process_set(SCREEN_MAINMENU);
   }

   private final void gameover_draw(){
     g.setColor(0);
     g.fillRect(0, 0, screen_w, screen_h);
     g.drawImage(faceres[FACE_GAME_OVER], screen_w >> 1, 45, 17);
   }

  //****************************************************************************
  /** @todo:积分排行 */
  //****************************************************************************
  private final int[] highlist = new int[8];
  private final void highlist_init(){
    System.arraycopy(record_load_mark(), 0, highlist, 0, 8);
  }

  private final void highlist_run(){
    refresh();
  }

  private final void highlist_key(int keycode){
    switch(keycode){
      case KEY_SOFT2: process_set(SCREEN_MAINMENU); break;
    }
  }

   private final void highlist_draw(){
     g.setClip(0, 0, screen_w, screen_h);
     g.drawImage(faceres[FACE_MENUCOVER], 0, 0, 0);
     draw_alpharect(0, 0, screen_w, screen_h, (short)0x6000);
     g.setColor(0xF17D00);
     g.drawString("游戏积分榜", 88, 9, 17);
     g.setColor(0xFFFFFF);
     g.drawString("排名:", 6, 39, 0);
     g.drawString("分数", 133, 39, 0);
     g.setColor(0xFFFC00);
     g.drawLine(0, 57, screen_w, 57);
     g.drawLine(0, 180, screen_w, 180);
     for(int i = 0; i < 8; i++){
       g.setClip(0, 0, screen_w, screen_h);
       g.setColor(0xF17D00);
       g.drawString((i + 1) + ".", 6, 64 + i * 14, 0);
       drawString(highlist[i], 156, 66 + i * 14, FONT_ALIGN_RIGH, FONT_MIDDLE); //font_middle_draw(highlist[i], 156, 66 + i * 14, FONT_ALIGN_RIGH);
     }
   }
   //****************************************************************************
   /** @todo:版权信息 */
   //****************************************************************************
   private String[] copyrigh_text = {
     "合金弹头",
     "版本:1.1.7",
     "",
     "版权所属",
     "杭州联梦娱乐软件有限公司",
     "发行单位",
     "杭州联梦娱乐软件有限公司",
     "网站地址",
     "www.m-dream.com.cn",
     "邮箱地址",
     "service@m-dream.com.cn",
     "客服电话",
     "0571-87233000",
     "",
     "开发公司",
     "成都联合众志有限公司",
     "网站地址",
     "www.shepherdstoy.com",
     "邮箱地址",
     "service@shepherdstoy.com",
   };

⌨️ 快捷键说明

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