블로그는 나의 힘!
[ Programing ]/Algorithm2011. 1. 3. 04:31
enum EQUIP_ITEM_SLOT
{
    EQUIP_ITEM_NONE = 0,
    EQUIP_ITEM_HELMET,
    EQUIP_ITEM_AMULET,
    EQUIP_ITEM_SHOULDER,
    EQUIP_ITEM_ELT, 
    EQUIP_ITEM_HAND,         // 5
    EQUIP_ITEM_GLOVE,
    EQUIP_ITEM_PANT,
    EQUIP_ITEM_SHOE,
    EQUIP_ITEM_RING,
    EQUIP_ITEM_ARMLET,          // 10
    
    EQUIP_ITEM_SPECIAL_1,
    EQUIP_ITEM_SPECIAL_2,
    EQUIP_ITEM_SPECIAL_3,
  
    EQUIP_ITEM_RESERVED_1,     
    EQUIP_ITEM_RESERVED_2,     // 15
 
    EQUIP_ITEM_MAX,     // 16
 
    EQUIP_ITEM_MIN_PLAYER_SLOT = EQUIP_ITEM_HELMET,
    EQUIP_ITEM_MAX_PLAYER_SLOT = EQUIP_ITEM_ARMLET +1,
 
    EQUIP_ITEM_SPECIAL_START = EQUIP_ITEM_SPECIAL_1,
    EQUIP_ITEM_SPECIAL_END =     EQUIP_ITEM_SPECIAL_3 +1,
};
 
// 64bit -> 4294967296, 32bit -> 65536
// [34] = { 0, 1, 2, 4, 8, 16, 32, 64, 128, 256,
//             512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 252144, 
//             524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 267435456,
//             534870912, 1069741824, 2139483648, 4278967296 };
int bitData[17] = { 0, 1, 2, 4, 8, 16, 32, 64, 128, 256,
                          512, 1024, 2048, 4096, 8192, 16384 };
 
int targetEquip = bitData[5] + bitData[10];
 
// 해당 장착 아이템의 enum 값과 bit 값을 비교하여 해당 위치면 해당 값을 반환하여, true 가 된다.
// bit 연산 이유 : 한가지 적용이 아닌 중복 적용을 하기 위하여.
//                     해당 소스는 5번(EQUIP_ITEM_HAND)과 10번(EQUIP_ITEM_ARMLET)이 허용 된다.
IsEquipSlot( EQUIP_ITEM_SLOT eEquip )
{
     return ( (eEquip > EQUIP_ITEM_NONE) && ( targetEquip & (1 << (eEquip -1)) ) );
}

'[ Programing ] > Algorithm' 카테고리의 다른 글

케릭터 간 거리 측정  (0) 2011.07.14
UTF-8을 Unicode로, Unicode를 UTF-8로 변환하기.  (0) 2011.01.05
거리 계산  (0) 2011.01.03
UTF-8 1~3 Byte 문자 구분  (2) 2010.07.15
FSM  (0) 2010.06.23
Posted by Mister_Q