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); } }