首页 > 其他 > 详细

道具叠加情况在背包当中的实现

时间:2015-04-15 13:01:15      阅读:153      评论:0      收藏:0      [点我收藏+]

只是列举一下伪算法的的函数步骤,留待以后思考。

需要的函数说明:

Item* FindItemBySourceID(); //获取同类型的物品并且数量最小

具体函数操作:

bool BagManager::Obtain(Item* pItem)
{
    Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
     if (pItem)
    { //存在该物品
        
     }
    else
    { //不存在该物品 直接add

    }
    return false;
}

很直观的容易这么处理,存在该物品只需要修改物品参数就可以了,不存在物品再添加到新的格子里面。但是可能存在的一个格子,叠加之后还有剩余,我们其实可以把else的处理放开,如下图:

bool BagManager::Obtain(Item* pItem)
{
    Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
    if (pItem)
    { //存在该物品
        
    }
    if(pItem->getNums() > 0)
    { //直接add

    }    
    return false;
}

但是同样还是存在问题,加入pItem一次叠加后剩余的数量,或者本身pItem的数量就远远超过一个格子的最大叠加数,则需要对剩余处理做更多的判断

bool BagManager::Obtain(Item* pItem)
{
    Item* pTempItem = FindItemBySourceID(pItem->getSourceID()); //获得背包同类物品
    if (pItem)
    { //存在该物品
        
    }
    if(pItem->getNums()!=0 && pItem->getNums() > pItem->getLimitStackNums())
   { //剩余物品数量仍然大于一个格子的最大叠加数

   }
    if(pItem->getNums() > 0)
    { //剩余数量追加

    }    
    return false;
}

道具叠加情况在背包当中的实现

原文:http://www.cnblogs.com/flashbird/p/4427961.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!