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

📄 critter.java

📁 Critter_Crunch_J2ME 游戏源
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
               }
               else {
                  Level.s_player.m_powerup_ammo = AMMO_MELON;
                  Level.s_player.m_powerup_id = ITEM_SEED;
               }
            }
            else if(m_id == ITEM_PEPPER) {
               if(Level.s_player.m_powerup_id == m_id) {
                  Level.s_player.m_powerup_ammo += AMMO_PEPPER;
               }
               else {
                  Level.s_player.m_powerup_ammo = AMMO_PEPPER;
                  Level.s_player.m_powerup_id = m_id;
               }
            }
            else if(m_id == ITEM_ONION) {
               if(Level.s_player.m_powerup_id == m_id) {
                  Level.s_player.m_powerup_ammo += AMMO_ONION;
               }
               else {
                  Level.s_player.m_powerup_ammo = AMMO_ONION;
                  Level.s_player.m_powerup_id = m_id;
               }
            }
            
            if(Level.s_type == Level.TYPE_ADVENTURE || Level.s_type == Level.TYPE_TUTORIAL) Level.s_level_bar -= m_consumed;
            score = m_consumed * m_consumed * (Level.BASE_POINTS + Level.s_number + Level.COMBO_POINTS);
            Level.s_current_score += score;
            Particles.create(Particles.TYPE_POINTS_TEXT, Particles.LAYER_HUD, (m_x<<Engine.FP_SHIFT), (Level.s_player.m_y - 30 - m_consumed*2)<<Engine.FP_SHIFT, score);
            if(Level.s_player.m_powerup_ammo > AMMO_MAX) Level.s_player.m_powerup_ammo = AMMO_MAX;
         }

         if(this == Level.s_player.m_in_mouth) {
            Level.s_player.m_in_mouth = null;
         }

         Level.removeExtra(this);
      }
      else {
         //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
         Level.s_player.m_state |= Avatar.STATE_CHOMP;
         Level.s_player.setAnim(Anims.BIGGS_CHOMP);
         Level.s_player.m_timer = (short)Avatar.TIME_CHOMP;
         //#else
//#          Level.s_player.setAnim(Anims.BIGGS_IDLE_LEFT);
         //#endif
      }
   }

   // cleanup/setup for when a Critter is spat out and reaches his/her destination.
   public void endSpit(Critter c) {

      if(c != null) {
         m_y = (short)(c.m_y + Level.SQUARE_H);
         m_next_y = (short)(c.m_next_y + Level.SQUARE_H);
         m_destination_y = (short)(c.m_destination_y + Level.SQUARE_H);
         m_board_y = (byte)(c.m_board_y + 1);
      }
      else {
         m_destination_y = m_next_y = m_y = (short)(Level.s_board_y + Level.SQUARE_HALF_H);
      }
      
      if(m_type == TYPE_CREATURE) {
         snapToBoard(c);
      }
      else if(m_type == TYPE_ITEM) {
         if(m_id == ITEM_SEED) {
            if(c != null) {
               if(c.m_id == CREATURE_WILDCARD) {
                  c.makeFull();
                  //Level.s_combo++;
                  Level.s_board_state |= (Level.BOARD_EXPLODE_FULL);
               }
               else {
                  //c.makeFull();
                  c.sentence();
               }
               /*
               if(c.m_id == CREATURE_TNT) {
                  c.m_consumed++;
                  if(c.full()) c.sentence();
               } 
               else {
                  c.sentence();
               }
               */
            }
         }
         else {
            snapToBoard(c);
         }
      }
      
      Level.removeExtra(this);
   }

   // finish end-spit by snapping to the desired position and testing for 
   // a possible combo.
   public void snapToBoard(Critter c) {
      
      if(Level.s_type == Level.TYPE_PUZZLE && Level.s_level_bar > 0) {
         Level.s_level_bar--;
         //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Razr
         for (int i=0; i<5; ++i) {
            Particles.create((i<2) ? Particles.TYPE_SHARD : Particles.TYPE_BIT, Particles.LAYER_HUD, 10, 
                 (Level.FOOD_BAR_X+Engine.getRandom(Level.FOOD_BAR_WIDTH))<<Engine.FP_SHIFT, ((Level.FOOD_BAR_Y + (Level.s_level_bar_goal-Level.s_level_bar) * Level.FOOD_BAR_SQUARE_SIZE)-Engine.getRandom(Level.FOOD_BAR_SQUARE_SIZE))<<Engine.FP_SHIFT,
                 Particles.getRandomFP(2<<Engine.FP_SHIFT), Particles.getRandomFP(2<<Engine.FP_SHIFT), 0, 1<<Engine.FP_SHIFT,
                 0xaaaaff, 0xffffff);
         }
         //#endif
      }
      m_state &= ~(STATE_ASCENDING | STATE_IMMOBILE | STATE_SPAT);
      setIdleAnim();
      m_speed = 0;
      Level.putOnBoard(this);
      eat(c);

      if(c != null && (m_state & STATE_BEING_EATEN) == 0) {
         //#ifndef NO_BOARD_BUMPS
         Level.s_board_bumps[Level.BUMP_DIRECTION][m_board_x] = Engine.UP;
         //#endif
         
         //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
         c.blockerPuff();
         //#endif
      }

      if(m_type == TYPE_ITEM && ((m_state & STATE_BEING_EATEN) == 0)) sentence(TIME_ITEM_SENTENCE); 
   }
   
   // poison a Critter. 
   public void toxicPoison(int time) {
      m_state |= STATE_POISONED;
      m_special_timer = (short)time;
   }
 
   // morph the indicated Critter into a toxic one.
   public void toxicMorph() {
      
      m_state &= ~(STATE_FLASHING | STATE_POISONED);
      m_state |= STATE_TOXIC;
      mapSize();
      setIdleAnim();
      specialInit(m_id, false);
      
      Particles.create(Particles.TYPE_CREATURE_PUFF, Particles.LAYER_FOREGROUND, (m_x<<Engine.FP_SHIFT), (m_y<<Engine.FP_SHIFT), CREATURE_TOXIC);
   }
   
   //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
   // make the blocker puff up.
   public void blockerPuff() {
      
      if(m_id == CREATURE_BLOCKER) {
         m_state |= STATE_BLOCKER_PUFF;
         m_special_timer = TIME_BLOCKER_PUFF;
         setAnim(Anims.GREEN_SCARED);
      }
   }
   //#endif
   
   // return the string representation of the Critter's id/name.
   public String idString() {
      
      //#ifdef DEBUG_PRINTOUTS
      if(m_type == TYPE_CREATURE) {
         if(m_id == CREATURE_GREEN)    return "GREEN GUY, ";
         if(m_id == CREATURE_RED)      return "RED GUY, ";
         if(m_id == CREATURE_BLUE)     return "BLUE GUY, ";
         if(m_id == CREATURE_BLOCKER)  return "BLOCKER, ";
         if(m_id == CREATURE_TOXIC)    return "TOXIC, ";
         if(m_id == CREATURE_TNT)      return "TNT, ";
         if(m_id == CREATURE_WILDCARD) return "WILDCARD, ";
         if(m_id == CREATURE_ORANGE)   return "ORANGE GUY, ";
         if(m_id == CREATURE_PURPLE)   return "PURPLE GUY, ";
         return "UNKNOWN CREATURE, ";
      }
      if(m_type == TYPE_ITEM) {
         if(m_id == ITEM_GEM_1)       return "GEM 1, ";
         if(m_id == ITEM_GEM_2)       return "GEM 2, ";
         if(m_id == ITEM_GEM_3)       return "GEM 3, ";
         if(m_id == ITEM_COIN)        return "COIN, ";      
         //#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
         if(m_id == ITEM_GEM_4)       return "GEM 4, ";
         if(m_id == ITEM_GEM_5)       return "GEM 5, ";
         if(m_id == ITEM_GEM_6)       return "GEM 6, ";
         if(m_id == ITEM_GEM_7)       return "GEM 7, ";
         if(m_id == ITEM_GEM_8)       return "GEM 8, ";
         if(m_id == ITEM_GEM_9)       return "GEM 9, ";
         //#endif
         if(m_id == ITEM_GEM_TOXIC)   return "TOXIC GEM, ";
         if(m_id == ITEM_WATERMELON)  return "WATERMELON, ";
         if(m_id == ITEM_PEPPER)      return "PEPPER, ";
         if(m_id == ITEM_ONION)       return "ONION, ";
         if(m_id == ITEM_SEED)        return "SEED, ";
         return "UNKNOWN ITEM, ";
      }
      return "UNKNOWN UNKNOWN, ";
      
      //#else
//#       return Engine.NO_DBG_STRING;
      //#endif
   }
   
   // return the string representation of the Critter's logical state(s).
   public String stateString() {
      
      //#ifdef DEBUG_PRINTOUTS
      String s = super.stateString();
      
      if((m_state & STATE_TONGUED) != 0)      s += "TONGUED | ";
      if((m_state & STATE_SPAT) != 0)         s += "SPAT | ";
      if((m_state & STATE_BEING_EATEN) != 0)  s += "BEING_EATEN | ";
      if((m_state & STATE_CHEWING) != 0)      s += "CHEWING | ";
      if((m_state & STATE_CHILI_BLAST) != 0)  s += "CHILI_BLAST | ";
      if((m_state & STATE_BONUS) != 0)        s += "BONUS | ";
      if((m_state & STATE_CLIMBING) != 0)     s += "CLIMBING | ";
      if((m_state & STATE_DONE_CLIMB) != 0)   s += "FINISHED_CLIMBING | ";
      if((m_state & STATE_FOOD_CHAIN) != 0)   s += "FOOD_CHAIN | ";
      if((m_state & STATE_FINAL_FALL) != 0)   s += "FINAL_FALL | ";
      if((m_state & STATE_ATTACKING) != 0)    s += "ATTACKING | ";
      if((m_state & STATE_TOXIC) != 0)        s += "TOXIC | ";
      if((m_state & STATE_POISONED) != 0)     s += "POISONED | ";
      if((m_state & STATE_SPAWN_DROP) != 0)   s += "SPAWN_DROP | ";
      if((m_state & STATE_BLOCKER_PUFF) != 0) s += "BLOCKER_PUFF | ";
      if((m_state & STATE_DROP_MELON) != 0)   s += "MELON_DROP | ";
      if((m_state & STATE_DROP_PEPPER) != 0)  s += "PEPPER_DROP | ";
      if((m_state & STATE_DROP_ONION) != 0)   s += "ONION_DROP | ";

      return s.substring(0, s.length() - 3) + ", ";
      //#else
//#       return Engine.NO_DBG_STRING;
      //#endif
   }
   
   // return the string representation of the Critter's animation state.
   public String animStateString() {
      
      //#ifdef DEBUG_PRINTOUTS
      //return "no anim support";
      return "" + m_anim_state;
      //#else
//#       return Engine.NO_DBG_STRING;
      //#endif
   }
   
   // override of Entity's toString() method.
   public String toString() {
      
      //#ifdef DEBUG_PRINTOUTS
      String s = super.toString();

      if     (m_type == TYPE_CREATURE)  s += ", type: Creature";
      else if(m_type == TYPE_ITEM)      s += ", type: Item";
      
      if     (m_size == SIZE_SMALL)    s += ", size: small";
      else if(m_size == SIZE_MEDIUM)   s += ", size: medium";
      else if(m_size == SIZE_BIG)      s += ", size: big";
      else if(m_size == SIZE_ALL)      s += ", size: all";
      else if(m_size == SIZE_INEDIBLE) s += ", size: inedible";

      s += (", consumed: " + m_consumed);
      s += (", special timer: " + m_special_timer);

      return s;
      //#else
//#       return Engine.NO_DBG_STRING;
      //#endif
   }
}

⌨️ 快捷键说明

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