一、装备物品时,人物属性要进行相应的更改:
player类里面写一个playerAttributeToInit()函数,用于将玩家当前属性置为没有穿戴任何装备时的属性,每次进行装备更新时,调用物品里面的usitem()函数,进行玩家属性的相应更改。具体实现如下:
equipment类:
if (KEY_DOWN(VK_RETURN))
{
wearEquiepment(m_vecEquiement[m_nIndex]);
m_vecEquiement.erase(m_vecEquiement.begin() + m_nIndex);
//每当装备更新时,才给玩家增加属性,增加属性前,应当先给玩家属性设为初值
g_GameMgr->getgameMap()->getplayer()->playerAttributeToInit();
for (int i = 0; i < 4;i++)
{
if (m_arrEquiemetns[i]!=nullptr)
{
m_arrEquiemetns[i]->useItem();
}
}
}
玩家:
void CPlayer::playerAttributeToInit()
{
m_nMaxHp = 100;
m_nMaxMp = 100;
m_nAtc = 100;
m_nDef = 100;
}
二:穿戴装备:
装备类里面定义两个成员变量:CIteam* m_arrEquiemetns[4]; vector<CIteam*>m_vecEquiement;数组用来存放身上穿的装备,vector容器用来存放所有买下来的装备。其中数组索引为0,1,2,3分别存放着武器、盾牌、铠甲、鞋子装备。穿戴装备时,将该item指针变量从容器中移除,给相对应的数组赋值为该指针变量所指向的item对象地址。具体实现代码如下:
对数组进行赋值:
void CEquimpent::wearEquiepment(CIteam* item)
{
if (item->getitemType()==E_ITEM_WEAPON)
{
tookOfEquiepment(m_arrEquiemetns[0]);
m_arrEquiemetns[0] = item;
}
else if (item->getitemT