Beispiel #1
0
void GameState::createDollar() {
    std::list<Player*>::const_iterator it_player = Player::s_playerList.begin();
    while (Dollar::s_dollarList.size() < unsigned(Player::alivePlayers)) {
        Dollar* newDollar = new Dollar(config::path + config::D_SRC, 0, 0);
        int newDollar_xPos = 0;
        int newDollar_yPos = 0;
        bool valid = false;
        while(!valid) { //Loop until valid pos is found
            valid = true;
            newDollar_xPos = rand() % (config::W_WIDTH - newDollar->getWidth())   ;
            newDollar_yPos = rand() % (config::W_HEIGHT - newDollar->getHeight()) ;

            while(it_player != Player::s_playerList.end()) {
                if(Entity::collides((*it_player), newDollar)) {
                    valid = false;
                    break;
                }
                it_player++;
            }
        }
        newDollar->setXPos(static_cast<float>(newDollar_xPos));
        newDollar->setYPos(static_cast<float>(newDollar_yPos));
        Dollar::s_dollarList.push_back(newDollar);
    }
}