当前位置: 首页>>代码示例>>C++>>正文


C++ Human::getBuriedness方法代码示例

本文整理汇总了C++中Human::getBuriedness方法的典型用法代码示例。如果您正苦于以下问题:C++ Human::getBuriedness方法的具体用法?C++ Human::getBuriedness怎么用?C++ Human::getBuriedness使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Human的用法示例。


在下文中一共展示了Human::getBuriedness方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: simpleDecision

bool AmbulanceTeamAgent::simpleDecision()
{
    LOG(Main, 1) << "Simple Decision begins" << endl;
    //    for (int i = 0; i < neededHelpHumans.size(); i++)
    //        setValue(neededHelpHumans[i]);
    sort(neededHelpHumans.begin(), neededHelpHumans.end(), humanComparator);
    Human* myTarget;
    set<int> busyAgents;
    for (int i = 0; i < neededHelpHumans.size(); i++)
    {
        int neededAmbulances = getNumOfNeededAmbulances(neededHelpHumans[i]);
        LOG(Main, 1) << "neededAmbulances for " << neededHelpHumans[i]->getId() << " is " << neededAmbulances << endl;
        for (int j = 0; j < neededAmbulances; j++)
        {
            int minDist = MAX_INT;
            AmbulanceTeam* at = NULL;
            for (int k = 0; k < world->ambulanceTeams.size(); k++)
            {
                if (busyAgents.find(world->ambulanceTeams[k]->ambulanceTeamIndex) == busyAgents.end() && worldGraph->isReachable(world->ambulanceTeams[k]->getRepresentiveNodeIndex(), neededHelpHumans[i]->getRepresentiveNodeIndex(), GM_DEFAULT_NOT_BLOCKED))
                {
                    int dist = worldGraph->getDistance(world->ambulanceTeams[k]->getRepresentiveNodeIndex(), neededHelpHumans[i]->getRepresentiveNodeIndex(), GM_DEFAULT_NOT_BLOCKED);
                    //                    LOG(Main, 1) << "dist  " << world->ambulanceTeams[k]->getId() << " from civ is " << dist << endl;
                    if (dist < minDist)
                    {
                        //                        LOG(Main, 1) << "in if" << endl;
                        minDist = dist;
                        at = world->ambulanceTeams[k];
                        //                        LOG(Main, 1) << "at->getId " << at->getId() << endl;
                    }
                }
            }
            if (at != NULL)
            {
                if (at->ambulanceTeamIndex == self()->ambulanceTeamIndex)
                {
                    myTarget = neededHelpHumans[i];
                    break;
                }
                else
                {
                    LOG(Main, 1) << "ambulance " << at->getId() << " goes to " << neededHelpHumans[i]->getId() << endl;
                    busyAgents.insert(at->ambulanceTeamIndex);
                }
            }
        }
        if (myTarget != NULL)
            break;
    }

    if (myTarget != NULL)
    {
        LOG(Main, 1) << "my Target: " << myTarget->getId() << " its postion is " << myTarget->getMotionlessObject()->getId() << endl;
        if (self()->getMotionlessObject() != myTarget->getMotionlessObject())
        {
            LOG(Main, 1) << "move to myTarget " << myTarget->getId() << endl;
            command->moveToMotionless(myTarget->getMotionlessObject()->motionlessIndex, GM_DEFAULT_NOT_BLOCKED);
            return true;
        }
        else if (myTarget->getBuriedness() > 0)
        {
            LOG(Main, 1) << "I am rescuing my target " << endl;
            command->rescue(*myTarget);
            return true;
        }
        else
        {
            if (myTarget->isCivilian())
            {
                int minId = self()->getId();
                for (int i = 0; i < world->ambulanceTeams.size(); i++)
                    if (world->ambulanceTeams[i]->getMotionlessObject() == myTarget->getMotionlessObject() && world->ambulanceTeams[i]->getId() < minId)
                        minId = world->ambulanceTeams[i]->getId();
                if (minId == self()->getId())
                {
                    LOG(Main, 1) << "I am loading my target" << endl;
                    command->load(*myTarget);
                    return true;
                }
                else
                {
                    myTarget->isAvailable = false;
                }
            }
        }
    }
    return false;
}
开发者ID:RGB-RSL,项目名称:rgb,代码行数:87,代码来源:AmbulanceTeamAgent.cpp


注:本文中的Human::getBuriedness方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。