#include #include bool InvadersColumn::hasNoValid() const { return getOutterInvader()==size(); } unsigned InvadersColumn::getOutterInvader() const { unsigned i=size(); while(i>0){ --i; if(at(i)!=InvaderType::NONE)return i; } return size(); } // these are used to invoke rand() as less as possible unsigned InvadersColumn::randomValid() const { unsigned validTotal = 0; for(InvaderType ite : *this){ if(ite!=InvaderType::NONE)++validTotal; } unsigned rd = rand() % validTotal; unsigned validIndex = 0; for(unsigned i=0;i