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

📄 gamelogic.java.bak

📁 一个类似炸弹人的游戏(city hunter)
💻 BAK
📖 第 1 页 / 共 5 页
字号:
//===============================================//
//  BB Factory version 1.00                      //
//  Platform : Nokia K-Java handsets             //
//  Handset  : Nokia 7650                        //
//  Author   : Pacess HO                         //
//  Date     : 30-June-2003                      //
//  Copyright (C) 2003, Pacess HO.               //
//  Copyright (C) 2003, iNFOiSLiVE Corporation.  //
//===============================================//

package city_hunter;

import java.io.*;
import java.util.*;
import java.io.InputStream;
import java.io.IOException;
import java.io.EOFException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Random;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.RecordStore;

/*final class Sprite {
  int iType;
  int iMiss;
  int iX;
  int iDX;
  int iImageID;
  int iCounter;
 } */

//==============================//
//  Logic part of "BB Factory"  //
//==============================//
public class GameLogic
    extends Canvas
    implements Runnable, CommandListener {

  //  Motorola V303: 176x182  //
  //  Motorola C650: 128x96   //
  //  private static final int SCREEN_WIDTH = 176;
  // private static final int SCREEN_HEIGHT = 182;

  private static final String AUTHOR = "[ Produced by Pacess ]";
  private static final String RMS_NAME = "Commander";
  private static final String VERSION = "v0.41";
  private static final int HELP_LINEEND = (20 * 9);
  private static final int CREDIT_LINEEND = (30 * 9);
 /* private static final int OPTION_H[] =
      {
      0, 13, 27, 42, 56, 71, 85, 97, 109}; */
  private static final int OPTION_H[] =
      {
      0, 13, 29, 42, 56, 72, 84, 103, 112};


  private static final int GRADE_RANGE = 500;
  private static final int PLAYER_SPEED = (4 << 16);
  private static final int PLAYER_HP = 100;
  private static final byte MAX_LEVEL = 25;
  private static final byte MAX_RECORD = 10;
  private static final String RANK_NAME[] =
      {
      "Florence", "Pacess", "Angela", "Sharon", "Kay",
      "Daphne", "Angus", "Mandy", "Emma", "Idy"};

//  Screen stage ID  //
  private String StrErr = "OK";
  private static final byte STAGE_NONE = -1;
  private static final byte STAGE_INIT = 10;
  private static final byte STAGE_MENU = 20;
  private static final byte STAGE_LEVEL = 30;
  private static final byte STAGE_GAME = 40;
  private static final byte STAGE_CLEAR = 50;
  private static final byte STAGE_GAMEOVER = 55;
  private static final byte STAGE_SETTING = 60;
  private static final byte STAGE_HELP = 70;
  private static final byte STAGE_RANK = 80;
  private static final byte STAGE_RANKL = 85;
  private static final byte STAGE_RANKW = 86;
  private static final byte STAGE_UPLOAD = 90;
  private static final byte STAGE_CREDIT = 100;
  private static final byte STAGE_QUIT = 110;

  private static int m_iStage = STAGE_NONE;

  //  Image sequence ID  //
  private static final byte MAX_IMAGE = 28;
  private static final byte IMG_MENU = 0;
  /*   private static final byte IMG_MAPBLOCK = 1;
     private static final byte IMG_HOUSE = 2;
     private static final byte IMG_TREE = 3;
     private static final byte IMG_ITEM_A = 5;
     private static final byte IMG_GRADE = 6;
     private static final byte IMG_EMISSILE = 7;
     private static final byte IMG_PMISSILE = 8;
     private static final byte IMG_EXPLOSE = 9;
     private static final byte IMG_PLAYER = 10;
     private static final byte IMG_TRUCKY = 11;
     private static final byte IMG_TRUCKB = 12;
     private static final byte IMG_TANK = 13;
     private static final byte IMG_BOAT = 14;
     private static final byte IMG_WELLDONE = 15; */
  private static final byte IMG_GAMEOVER = 4;
  private static final byte IMG_KEY4 = 3;
  private static final byte IMG_KEY6 = 2;
  private static final byte IMG_OPTION = 1;
  private static final byte IMG_PlayDie = 5;


  private static final int MAX_FRAME_WAIT = 55;
  private static final byte MAX_SAVELENGTH = 32;
  private static final byte MAX_SAVEDATA = 8;

  private static final int OPTION_Y = 79;
  //  Screen information  //
  private int SCREEN_WIDTH = getWidth();
  private int SCREEN_HEIGHT = getHeight(); // isdesign for moto 176*182
  //SCREEN_WIDTH = 176;
  //SCREEN_HEIGHT = 182;

  private static int itimeNo;

  //private int iImageno[];
//////////////////////////////////////////////////////////////////////////////////////////
  private byte M_Bomb[][];
  private static final byte m_bombtotal = 4;
  private static byte M_detonation_spot[][]; ////////暴炸点
 // private static final int m_detonation_spottotal = 9 * m_bombtotal;
  private static final byte m_detonationtime = 7; ///暴炸显示时间
  private static final byte bombset = 60;
  private static final int bombstrat = 0; ///开炸
  private static final int bombtime = 1;
  private static final int bombover = 1;

  private int m_inocpu; //用来统计当前关卡的怪物个数
  private byte M_imapno[][];   // game map


  private int m_imapnoW; //////大地图中用小块地图的宽的个数.
  private int m_imapnoH; //////大地图中用小块地图的高的个数.
  private int m_movex = 0; /////偏移X
  private int m_movey = 0; /////偏移Y

  //////////用来算m_movex,m_movey的值
  private int m_moveminx = 0; /////偏移X
  private int m_movemaxx = 0; /////偏移X
  private int m_moveminy = 0; /////偏移X
  private int m_movemaxy = 0; /////偏移X

  private int m_drawx = 0; /////手机上要画的X方向的块数
  private int m_drawy = 0; /////手机上要画的Y方向的块数
  private static final int m_mapTYPE_W = 16; ////////小地图的宽
  private static final int m_mapTYPE_H = 16; /////小地图的高

  private static int m_pathW = 0; ////////没多太用,等于一个

  private static int m_i;   // 用来弄时间的全局变量

  static byte oldmandirect; //判断方向的标志  用在主角
  static int imgpoint; // 用来 指示当前画那一帧 主角图片

  private static final byte Bombing_c = 1; ///暴炸显示画面
  private static final byte Bombing_ud = 5; ///暴炸显示画面
  private static final byte Bombing_lr = 2; ///暴炸显示画面
  private static final byte Bombing_lt = 3; ///暴炸显示画面
  private static final byte Bombing_rt = 4; ///暴炸显示画面
  private static final byte Bombing_ut = 6; ///暴炸显示画面
  private static final byte Bombing_dt = 7; ///暴炸显示画面

  private static final byte Bombing_wall = 20; ///暴炸显示时间




  // 图形变量
  private static Image m_pImage[]; // 游戏title,over ,menu
  private Image M_imgmap[]; /////地图元素
  private Image M_imgbomb; /////炸弹
  private Image M_imgbombing; //炸弹爆炸效果大
  private Image M_imgplay[]; /////人物
  private Image M_imgmedal[]; /////奖品

  private Image M_title; // 显示游戏信息
  private Image M_imgnumber; // 显示游戏分数 大图
  private Image M_imgnum[]; // 小图
  //////////////////////////////////人物是16*20.在画人时我y减了4.这样当成16*16的.

  private static Image[][] m_imgman; // 主角动画图片
  private static Image m_Bombing[]; // 爆炸动画图片
  private Image m_imgenemy[][]; //怪物动画图片
  private static Image m_Bombwall[];
  private static Image m_diecpu[];  // 怪物死亡图片


  private int M_iHPlay[]; ////人的性质
  private int M_iCPlay[][]; /////电脑的性质
  private Image PlayImage[]; ////人物图
  private byte m_iCPUPlayNo = 0; /////电脑数量

  private byte Toll_Gate = 0; /////当前关数
  Random rand = new Random(); ///////用来产生CPU玩家的方向中的.

  ///////////////////////////////////////////////////////////////////////////////////

  // city_hunter game variables //
 // private static int m_iLive;
  private static int m_iTopScore;
  private static int m_iCounter;
  private static int m_iTimeLeft;
  private static int m_iTimeBase;
  private static int m_icurScore;



  private static boolean m_bAutoScroll;
  private static boolean m_bResumeGame;

  private static int m_iCounter2;

  //  Key  //
  private static final int KEY_NONE = 0;
  private static final int KEY_L = 1;
  private static final int KEY_R = 2;
  private static final int KEY_UP = 4;
  private static final int KEY_DOWN = 8;
  private static final int KEY_LEFT = 16;
  private static final int KEY_RIGHT = 32;
  private static final int KEY_OK = 64;
  private static final int KEY_NUM = 0;
  private static final byte KEY_FIRE = 5;

 /* private static final String TEXT_UI[] =
      {
      "Loading...",
      "Confirm quit?",
      "# Yes",
      "* No",
      "SETTING",
      "Sound",
      "Vibrate",
      "Auto-upload",
      "Difficulity",
      "OFF",
      "ON", // 10
  //    “On a simple defend
 //   "On a simple defend"
      "Secret ghosts app-",
      "ear in city , you",
      "are only one who ",
      "can save the city,",
      "there is no  much ",
      "left, take action!",
      "[2]=Up   [8]=Down",
      "[4]=Left [6]=Right",
      "[5]= put bomb",
      "RANKING", // 20
      "LEVEL ",
      "Back to menu?",
      "CREDIT LIST",
      "Producer: Pacess",
      "Programmer: Pacess",
      "Designer: JoJo",
      "Assistant: Sharon",
      "Tester: Game Team",
      "Presented by ",
      "GameisLive ",      // 30
      "All rights reserved",
      "Loading...",
      "Network error ",
      "Score: ",
      "Live: ",
      "Grade:",
      "Killed:",
      "Score:",
      "LEVEL CLEARED",
      "Start",
      "Exit", // 40
      "Change",
      "Back",
      "Next",
      "Yes",
      "No"};   */
      
     private static final String TEXT_UI[] =
      {
      "载入中...",
      "确认退出?",
      "# 是",
      "* 否",
      "设置",
      "声音",
      "震动",
      "自动上传",
      "难度",
      "关",
      "开", // 10
      "神秘的鬼怪出现",
//      "Secret ghosts appear in city,",
   //   "you are only one who can ",
      "在城市,你是这",
      // "save the city! there is no ",
      "个城市的希望,",
      "留给你的时间不",
      "多了,行动把!",
   //   "much time left, take action ! ",
      "[2]=上 [8]=下",
      
      "[4]=左 [6]=右",
      
      "[5] = 放炸弹",
      "排名", // 20
      "关卡 ",
      "返回菜单?",
      "制作人员",
      "制作: Pacess",
      "程序: Pacess",
      "设计: JoJo",
      "助理: Sharon",
      "测试: 游戏小组",
      "Presented by GameisLive",
      "All rights reserved", // 30
      "载入中...",
      "网络错误 ",
      "分数: ",
      "生命: ",
      "等级:",
      "杀敌:",
      "分数:",
      "任务完成",
      "开始",
      "退出", // 40
      "变更",
      "返回",
      "继续",
      "是",
      "否"}; 

  //  Object type  //

  /* private static final byte LEVEL_TOY[] =
      {
      16, 24, 36, 56, 80}; */
  private static final int LEVEL_TIME[] =
      {
      120, 130, 140, 150,160,
      200,210,220,230,240,
      300,300,320,330,340,
      350,360,370,380,390,
      400,410,420,430,450};

  //====================//
  //  System variables  //
  //====================//
 // private static final Random m_rRandom = new Random();

  private static Thread m_pThread = null;
  private GameMIDlet m_pParent;

  private pRank m_pRank;
  private pEffect m_pEffect;

  private static int m_iRecordID;
  private static boolean m_bRefresh;
  private static boolean m_bPainting;
  private static byte m_iPlayed;
  private static int m_iScreenX, m_iScreenY;
  private static int m_iImageLoaded;
  private static int m_iload = 0;


  private static int m_iKey;

  //  Game variables  //
//  private static Sprite m_pSprite[];
  private static boolean m_bVibrateOn;
  private static boolean m_bSoundOn;
  private static boolean m_bPause;
  private static int m_iOption, m_iOption2;


  private static int m_iRankNo;

  private static long lTimeStart;

  private static boolean m_bPaint = false;
  //  private static boolean m_bPause = false;
  private static long m_lStartFrame;
  private static int m_iKeySkip = 0;

  //==================================//
  //  Execute once object is created  //
  //==================================//

  private static int m_iQuitL, m_iQuitR;
  private static int m_iQuitID;

  private static Command m_pNext;
  private static Command m_pBack;

  //  Variables for RMS  //
  private static int m_iRecord;
  private static int m_pScore[], m_pScoreI[];
  private static byte m_pLevel[], m_pLevelI[];
  private static String m_pName[], m_pNameI[];
  private static boolean m_bSound;
  private static boolean m_bVibrate;
  private static boolean m_bAutoUpload;
  private static byte m_iGameLevel;
  private static byte m_iLevel;
  private static byte m_iLive ;
  private static String m_sName;
  private static String m_sPhoneNo;
  private static int m_iScore;

  //===============//
  //  Constructor  //
  //===============//
  GameLogic(GameMIDlet pMIDlet) {

    m_pParent = pMIDlet;

    m_bPause = false;

    Setup();

  }

  public  final void Setup() {

    m_i = 0;
    m_pImage = new Image[6];
    M_iHPlay = new int[7];
    int i;
    m_iStage = STAGE_INIT;

 //   m_iLive = 3; // 测试用。。。。
    m_iTimeLeft = 3000;
    m_iLevel =0;
    m_iLive = 3;
 //   m_iScore = 1000;
    m_bSound = true;
    m_bVibrate = false;
    m_bAutoUpload = false;
    m_sName = "";
 //   m_sName = RANK_NAME[rand(RANK_NAME.length)];
    m_sPhoneNo = "85290009000";
    m_iRankNo = 10;
    m_pRank = new pRank(this);
    m_pEffect = new pEffect(Display.getDisplay(m_pParent));
    m_pEffect.LoadSound("/key.mid", (byte) 1);
    m_pEffect.LoadSound("/explose.mid", (byte) 2);

    //  Reset local ranking table  //
    m_pName = new String[MAX_RECORD];
    m_pScore = new int[MAX_RECORD];
    m_pLevel = new byte[MAX_RECORD];
    for (i = 0; i < MAX_RECORD; i++)
    {
      m_pName[i] = RANK_NAME[i];
      m_pScore[i] = 0;
      m_pLevel[i] = 0;
    }

    //  Reset internet ranking table  //
    m_pNameI = new String[MAX_RECORD];
    m_pScoreI = new int[MAX_RECORD];
    m_pLevelI = new byte[MAX_RECORD];
    for (i = 0; i < MAX_RECORD; i++)
    {
      m_pNameI[i] = RANK_NAME[i];
      m_pScoreI[i] = 0;
      m_pLevelI[i] = 0;

⌨️ 快捷键说明

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