zoukankan      html  css  js  c++  java
  • 道具叠加情况在背包当中的实现

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

    需要的函数说明:

    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;
    }
  • 相关阅读:
    [转]看懂UML类图
    [转]客户需要什么样的业务解决方案
    [转]逻辑和计算机
    [转]数据库备份与恢复方案
    125个工具与技术(PMBOK2008)
    72个可交付成果(PMBOK2008)
    47个过程(PMBOK2008)
    项目管理详细任务(PMBOK2008)
    项目管理过程组和知识领域表(PMBOK2008)
    项 目 管 理 知 识 体 系 指 南 (PMBOK2008)
  • 原文地址:https://www.cnblogs.com/flashbird/p/4427961.html
Copyright © 2011-2022 走看看