示例#1
0
文件: AIStatus.cpp 项目: geofl/tdai
void AIStatus::ClearIM()
{
    if(this->enabled == true)
    {
        GameScene* sc = (GameScene*) this->_pGs;
        //delete existing labels and sprites first
        for( std::pair<Label*, Sprite*> p : this->imNodes )
        {
            //remove label
            sc->getMapLayer()->removeChild(p.first);
            sc->getMapLayer()->removeChild(p.second);
        }
        this->imNodes.clear();
    }
}
示例#2
0
文件: AIStatus.cpp 项目: geofl/tdai
void AIStatus::IMDraw()
{
    if(this->enabled == true)
    {
        GameScene* sc = (GameScene*) this->_pGs;
        //im cost numbers
        for(std::map<int, InfluenceMapNode>::iterator node = sc->getInfluenceMap()->getMap()->begin(); node != sc->getInfluenceMap()->getMap()->end(); ++node)
        {
            if(((InfluenceMapNode)node->second).cost > -1)
            {
                std::stringstream ss1;
                ss1 << ((InfluenceMapNode)node->second).cost; //+ ((InfluenceMapNode)node->second).pTower->GetStrength() ;
                Label * lbl = Label::create(ss1.str(), "Arial", 12, CCSizeMake(sc->getTiledMap()->getTileSize().width, sc->getTiledMap()->getTileSize().height), kCCTextAlignmentCenter);
                lbl->setPosition(sc->getMapInfo()->ConvertIdToPoint(node->first));
            
                Rect r = lbl->getBoundingBox();
                Sprite * spr = Sprite::create("sprite_Blue_10x10.png", r);
                spr->setPosition(sc->getMapInfo()->ConvertIdToPoint(node->first));
                spr->setOpacityModifyRGB(true);
                spr->setOpacity( 80 + (((InfluenceMapNode)node->second).cost / 10) );
            
                sc->getMapLayer()->addChild(spr);
                sc->getMapLayer()->addChild(lbl);
            
                //add it to the local pointers holder
                std::pair< Label*, Sprite* > p;
                p.first = lbl;
                p.second = spr;
                this->imNodes.insert(p);
            }
        }
    }
}
示例#3
0
void GeneticAlgorithmProfile1::SetWaveForSimulation(ThreadData* td, AdditionalTowers* addTowerSettings, Chromosome *population)
{

    ///////////////////////////////////////
    
    GameScene* gs = ((GameScene*)td->_sc);
    
    //upgrade existing towers
    
    //apply new towers
    for ( std::vector<Tower*>::iterator tower = addTowerSettings->additionalTowers.begin(); tower != addTowerSettings->additionalTowers.end(); ++tower )
    {
        Tower* t = *tower;
        gs->towerslist.push_back(t);
        gs->getMapLayer()->addChild(t);
    }
    
    ///////////////////////////////////////
    
    td->creepsWaveForSimulation.clear();
    for(int j = 0; j < CreepsPerRound; j++)
    {
        Creep * creep;
        std::string s;
        double hp = population->healthPoints[j];
        double sp = population->movementSpeed[j] / speedBoost ;
        
        ElementalAffinity ef = (ElementalAffinity)population->elementalAffinity[j];
        switch (ef)
        {
            case Earth:
                s = "1creep_simpearth1.png";
                break;
            case Fire:
                s = "1creep_simpfire1.png";
                break;
            case Water:
                s = "1creep_simpwater1.png";
                break;
            case Shock:
                s = "1creep_simpshock1.png";
                break;
            case None:
                s = "1creep_simpnone1.png";
                break;
        }
        creep = new Creep(s, hp, sp);
        creep->setCoins(50);
        creep->element = ef;
        td->creepsWaveForSimulation.push_back(creep);
    }
}
示例#4
0
文件: AIStatus.cpp 项目: geofl/tdai
void AIStatus::ClearEnvironment()
{
    GameScene* sc = (GameScene*) this->_pGs;
    
    //delete existing labels and sprites first
    for( std::pair<Label*, Sprite*> p : this->envNodes )
    {
        //remove label
        sc->getMapLayer()->removeChild(p.first);
    }
    
    this->envNodes.clear();
}
示例#5
0
文件: AIStatus.cpp 项目: geofl/tdai
void AIStatus::DrawRoads()
{
    GameScene* sc = (GameScene*) this->_pGs;

    if(this->enabled == true)
    {
        //draw all roads
        ValueVector idd = sc->getMapInfo()->GetMapInfoTypeVec(MapInfoType::Road);
        for (auto& index: idd) {
            Label * lbl = Label::create("R", "Arial", 12, CCSizeMake(sc->getTiledMap()->getTileSize().width, sc->getTiledMap()->getTileSize().height), kCCTextAlignmentCenter);
            lbl->setPosition(sc->getMapInfo()->ConvertIdToPoint(index.asInt()));
            sc->getMapLayer()->addChild(lbl);
        
            std::pair < Label*, Sprite* > p;
            p.first = lbl;
            this->envNodes.insert(p);
        }
    }
}
示例#6
0
void GeneticAlgorithmProfile1::CalculateFitness(ThreadData* td, Chromosome *population)
{
    GameScene* gs = ((GameScene*)td->_sc);
    AdditionalTowers at;
    GeneticAlgorithmProfile1::SimulationForwardBackUp(td, at);
    GeneticAlgorithmProfile1::SimulationForward(td, at);
    GeneticAlgorithmProfile1::SetWaveForSimulation(td, &at, population);
    td->SetSimulating(true);
    while ( td->IsSimulating() == true ) {
        sleep(1);
    }
    CurrentRoundScores crs = td->GetCurrentRoundScores();
    population->fitnessScore = crs.creepsLeftFitness;
    population->fitnessHPPercentage = crs.creepsLeftPercFitness;
    
    GeneticAlgorithmProfile1::SimulationForwardRestore(td, at);
    int siz = at.additionalTowers.size();
    for(int i = 0; i < siz; i++ )
    {
        gs->getMapLayer()->removeChild(at.additionalTowers[i], true);
        gs->towerslist.pop_back();
    }
    GeneticAlgorithmProfile1::RatesEvaluation(td);
}