// recursive adding queens void addQueens ( int newCol ) { boardLoc newMove; newMove.c = newCol; for ( int i = 0; i < numRows; i++ ) { newMove.r = i; if ( isMoveValid(newMove) ) { queenLoc[numQueenLoc] = newMove; numQueenLoc++; if ( numQueenLoc == 8 ) printQueenLoc(); else addQueens( newCol+1 ); numQueenLoc--; } } }
void CombatLogic::move(intp targetPos, intp direction) { if (!isMoveValid(targetPos)) { return; } creatures[currentCreature]->combatPos = targetPos; intp lookAt = targetPos + direction; for (int i = 0; i < (int)creatures.size(); i++) { if (creatures[i] != nullptr && creatures[i]->count > 0 && creatures[i]->combatPos == lookAt && creatures[i]->getFactionId() != creatures[currentCreature]->getFactionId()) { creatures[i]->takeDamageFrom(creatures[currentCreature]); std::cout << " " << creatures[currentCreature]->plural << " attacked "<< creatures[i]->plural << ". " << creatures[i]->count << " survived the attack." << std::endl; if (creatures[i]->count <= 0) { if (creatures[i]->getFactionId() == attackerFaction) { attackerStacks--; std::cout << " Attacker lost a stack, stacks remaining: " << attackerStacks << std::endl; if (attackerStacks <= 0) { endCombat(defenderFaction); return; } } else { defenderStacks--; std::cout << " Defender lost a stack, stacks remaining: " << defenderStacks << std::endl; if (defenderStacks <= 0) { endCombat(attackerFaction); return; } } } break; // TODO better attack logic, retaliation, etc. } } nextCreature(); }
void proceed() { prepare(); if (isMoveValid() == 1) { if (cf == 'k') { remove("save.dat"); cout<<endl<<"Player "<<turn<<" has won!"; pressAnyKeyToContinue(); turn = 0; return; } if (ci == 'P' && turn == 1 ? yf == 7 : yf == 0) { Game[xf][yf] = turn == 1 ? 'Q' : -'Q'; } else { Game[xf][yf] = turn == 1 ? ci : -ci; } Game[xi][yi] = ' '; turn = turn == 1 ? 2 : 1; } else { pressAnyKeyToContinue(); } }