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

📄 gamemap.java

📁 学习j2me写的,虽然在碰撞上处理的不好!但其中的技巧还是可以学习的1
💻 JAVA
字号:
package Snowball;

public class GameMap
{
    //地图数据 格式:{x1, x2, y}   
     private final static int Data1_1[][] = {
        {0, 176, 185}, {52, 142, 144}, {16, 56, 108}, {68, 105, 91}, {118, 176,58} ,{0, 86,29} 
     };//1-1
            
     private final static int Data1_2[][] = {
        {0, 176, 185}, {0, 58, 142}, {90, 168, 105}, {24, 74, 69}, {106, 143, 40} 
     };//1-2
        
     private final static int Data1_3[][] = {
        {0, 176, 185}, {0, 40, 146}, {93, 158, 147}, {40, 103, 109}, {107,143,80} ,  {49, 124,38}
     }; //1-3
  
     private final static int Data1_4[][] = {
        {0, 176, 185}, {90, 168, 148}, {15, 75, 118}, {96, 160, 81}, {0,77,53} , {88,171,24} 
     };//1-4
     
     private final static int Data2_1[][] = {
        {0, 176, 185}, {62, 176, 157}, {0, 95, 120}, {139, 176, 120}, {57,138,84} , {0,57,48} , {129,176,46}
     };//2-1
     
     private final static int Data2_2[][] = {
        {0, 176, 185}, {0, 94, 152}, {140, 176, 153}, {104, 176,115}, {0,80,81} , {135,176,79} , {0,37,44}, {72,131,43}, {157,176,43}
     };//2-2
     
     private final static int Data2_3[][] = {
        {0, 176, 185}, {21, 58, 150}, {72, 176, 113}, {0, 90,75}, {0,40,42} , {106,176,41} 
     };//2-3
     
     private final static int Data2_4[][] = {
         {0, 176, 185}, {78, 138, 158}, {0, 56, 128}, {99, 176,119}, {0,94,82} , {157,176,62} , {0,33,44}, {82,140,44}
     };//2-4
     
     private final static int Data3_1[][] = {
         {0, 176, 185}, {0, 40, 137}, {89, 150, 139}, {14, 76 ,94}, {122,176 ,95} , {83,146,54} , {4,62,39}
     };//3-1
     
     private final static int Data3_2[][] = {
         {0, 176, 185}, {15, 101, 152}, {65, 150, 109}, {3, 88 ,65}, {87,173 ,26} 
     };//3-2
     
     private final static int Data3_3[][] = {
         {0, 176, 185}, {15, 93 , 139}, {91, 165, 98}, {10, 91 ,64}, {92,171 ,35} 
     };//3-3
   
     private final static int Data3_4[][] = {
         {0, 176, 185}, {102, 176 , 157}, {5, 87, 135}, {82, 165 ,89}, {0,75 ,50} , {87,173 ,29} 
     };//3-4
     
     private final static int Data4_1[][] = {
         {0, 176, 185}, {0, 69 , 148}, {110, 162, 148}, {0, 35 ,114}, {86 ,175 ,109} , {34 , 118 , 72} , {144, 176 ,74}, {0,75 ,33} , {99,173 ,34} 
     };//4-1
     
     private final static int Data4_2[][] = {
        {0, 176, 185}, {54, 87 , 156}, {125, 176, 156}, {0, 50 ,118}, {81 ,175 ,118} , {0 , 28 , 79} , {105, 166 ,80}, {22 ,110 ,44} , {143,173 ,44} 
     };//4-2
     
     private final static int Data4_3[][] = {
         {0, 176, 185}, {0, 88 , 149}, {88, 108, 154}, {141, 176 ,148}, {0 ,40 ,114} , {75 , 176 ,114}  , {24 ,54 ,78}, {113 , 150  ,78}, {47 , 130  ,42}
     };//4-3
     
     private final static int Data4_4[][] = {
         {0, 176, 185}, {80, 176 , 160}, {0, 76, 120}, {115, 174 ,120}, {17,76 ,82} , {97,176 ,84} , {0, 44 ,46}, {94 , 176 ,45}
     };//4-4

     //标准数据
     private int Data[][] = {};
  
     public int Debug; //调试信息
    
    /** Creates a new instance of GameMap */
    public GameMap()
    {     
    }

    public int CalcY(int x, int OffsetL, int OffsetR, int y1, int y2)
    {
        int Index;
        int Ret = 0;
        int x1, x2;
        
        x1 = x + OffsetL;
        x2 = x + OffsetR;
        //检查点是否在台阶上面
        for(Index  = 0; Index < Data.length; Index++)
        {
            //判断y
            if((y1 <= Data[Index][2]) && (y2 >= Data[Index][2]))
            {
                //判断x
                if((x2 >= Data[Index][0]) && (x1 <= Data[Index][1]))
                {
                    Ret = Data[Index][2];
                    break;
                }
            }
        }
        
        return Ret;
    }

    public int CalcX(int x, int OffsetL, int OffsetR)
    {
        int Ret = 0;
        int x1, x2;
        
        x1 = x + OffsetL;
        x2 = x + OffsetR;
        //检查点是否出了屏幕
        if(x1 < 0)
        {
            Ret = 0 - OffsetL;
        }
        else if(x2 > 176)
        {
            Ret = 176 - OffsetR;
        }
        else
        {
            Ret = x;
        }
        
        return Ret;
    }

    //是否能跳跃
    public boolean CalcJump(int x, int OffsetL, int OffsetR, int y, int JumpDistance, int WalkDir)
    {
        boolean Ret = false;
        int x1, x2;
        int Index;
        
        x1 = x + OffsetL;
        x2 = x + OffsetR;
        //计算上一个台阶
        for(Index = 0; Index < Data.length - 1; Index++)
        {
            if(Data[Index][2] == y)
            {
                switch(WalkDir)
                {
                    case 0:
                        if(((x2 - JumpDistance) >= Data[Index + 1][0]) && (x1 - JumpDistance) <= Data[Index + 1][1])
                        {
                            Ret = true;
                        }
                        break;
                    case 1:
                        if(((x2 + JumpDistance) >= Data[Index + 1][0]) && ((x1 + JumpDistance) <= Data[Index + 1][1]))
                        {
                            Ret = true;
                        }
                        break;
                }
                break;
            }
        }
        
        return Ret;
    }
    
    public void changeMapData(int GreatLevel , int ShareLevel){
         switch(GreatLevel){            
              case 1://第一大关                   
                  switch(ShareLevel){
                      case 1: //第一小关  
                          Data = Data1_1;            
                          break;                   
                      case 2://第二小关 
                          Data = Data1_2;
                          break;
                      case 3:
                          Data = Data1_3;
                          break;
                      case 4:
                          Data = Data1_4;
                          break;                        
                  }break;
                  
              case 2://第二大关
                switch(ShareLevel){
                    case 1: //第一小关  
                        Data = Data2_1;            
                        break;                   
                    case 2://第二小关 
                        Data = Data2_2;
                        break;
                    case 3:
                        Data = Data2_3;
                        break;
                    case 4:
                        Data = Data2_4;
                        break;    
                         
                }break;
                       
              case 3://第三大关
                  switch(ShareLevel){
                     case 1: //第一小关  
                         Data = Data3_1;            
                         break;                   
                      case 2://第二小关 
                          Data = Data3_2;
                          break;
                      case 3:
                          Data = Data3_3;
                          break;
                      case 4:
                          Data = Data3_4;
                          break;    
                         
               }break;
           
              case 4://第四大关
                  switch(ShareLevel){
                      case 1: //第一小关  
                          Data = Data4_1;            
                          break;                   
                      case 2://第二小关 
                          Data = Data4_2;
                          break;
                      case 3:
                          Data = Data4_3;
                          break;
                      case 4:
                          Data = Data4_4;
                          break;                             
                  }break;
        }
    }
   
}

⌨️ 快捷键说明

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