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

📄 engine.java

📁 手机ACT游戏全代码(包括代码和jar和jad)
💻 JAVA
字号:


import javax.microedition.lcdui.*;

public class Engine
{
       public Engine()
       {
       }
       Map map;//地图的对象(游戏中仅存在一个地图(游戏场景))
       Role role;//主角类的对象(ACT类游戏通常只有一个游戏主角)
       Enemy[] enemy;//敌人列表
       Trap[] trap;
       boolean isPass;//过关条件
       /**
        * 游戏开始前的初始化。
        * 包括加载资源、地图、主角、敌人、道具等的初始化位置等等信息
        */
       protected void init(){
              Data.getFrameItemIndex();//获得所有对象的所有动画的帧数列表
              Data.getnpcItemDataSize();//获得动画数据总所有动画的尺寸,以做碰撞
              Data.loadRes();
              map = new Map();
              map.init();
              role = new Role(this);
              role.init();
              initEnemy();//初始化该关卡内的所有敌人
              initTrap();//初始化该关卡内的所有道具、陷阱等信息
              isPass = false;
       }

       /**
        * 整体游戏中的显示部分
        * @param g Graphics
        */
       protected void drawGame(Graphics g){
              map.drawMap(g);
              role.drawRole(g);
              for(int i = 0;i < enemy.length;i ++){
                     if(enemy[i].isDead) continue;
                     enemy[i].drawEnemy(g);
              }
              for(int i = 0;i < trap.length;i ++){
                     trap[i].drawTrap(g);
              }
              drawHp(g);


       }
       /**
        * 所有游戏中的逻辑部分
        */
       protected void runGame(){
              role.roleLogic();
              map.setScreenMode(role.x,role.y,role.isLeft);//根据主角位置设置视窗的显示位置
              for (int i = 0; i < enemy.length; i++)
              {
                     if (enemy[i].isDead)continue;
                     enemy[i].move();
              }
              for (int i = 0; i < trap.length; i++)
              {
                     trap[i].move();
              }

       }
       /**
        * 初始化所有敌人的信息
        */
       void initEnemy(){
              short[][]data = {
                  {1,10*Map.cellWidth,11*Map.cellHeight,50,5,0,0},
                  {2,16*Map.cellWidth,7*Map.cellHeight,50,5,0,0},
                  {3,30*Map.cellWidth,9*Map.cellHeight,50,5,0,0},
              };
              enemy = new Enemy[data.length];
              enemy[0] = new Enemy(this,data[0]);
              enemy[1] = new Enemy(this,data[1]);
              enemy[2] = new Enemy(this,data[2]);
              //列表顺序:站立、行走、追击、攻击、受伤、死亡
              enemy[0].setActionIndex(new byte[]{0,1,1,2,4,6});
              enemy[1].setActionIndex(new byte[]{0,1,1,2,3,5});
              enemy[2].setActionIndex(new byte[]{0,1,1,1,2,3});
       }
       /**
        * 初始化所有的道具信息
        */
       void initTrap(){
              short[][]data = {
                  {1,5,17*Map.cellWidth+(Map.cellWidth/2),13*Map.cellHeight,0,0,0,0},
                  {0,4,15*Map.cellWidth+(Map.cellWidth/2),13*Map.cellHeight,0,0,0,0},
//                  {0,4,17*Map.cellWidth+(Map.cellWidth/2),13*Map.cellHeight,0,0,0,0},
                  {0,4,19*Map.cellWidth+(Map.cellWidth/2),13*Map.cellHeight,0,0,0,0},

              };
              trap = new Trap[data.length];
              for(int i = 0;i < trap.length;i ++)
                     trap[i] = new Trap(this,data[i]);


       }
       /**
        * 显示主角的血条
        */
       void drawHp(Graphics g){
              Tools.drawNpcItemData(g,7,0,0,Map.leftTopX,Map.leftTopY,true);
              g.setColor(0xff0000);
              g.fillRect(60,20,role.HP*35/100,4);
       }
}

⌨️ 快捷键说明

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