public void trocaAfobadaDeCarta(IA iA) { bool trocou = false; List<CartaTerritorio> cartasJogador = iA.getCartasJogador(); if (cartasJogador.Count() >= 3) { for (int i = 0; i < cartasJogador.Count(); i++) { for (int j = 0; j < cartasJogador.Count(); j++) { for (int k = 0; k < cartasJogador.Count(); k++) { if (i != k && i != j && j != k) { if (cartasJogador[i].Equals(cartasJogador[j]) && cartasJogador[i].Equals(cartasJogador[k]) && cartasJogador[k].Equals(cartasJogador[j]) && !trocou) { Console.WriteLine("IA trocando carta!"); iA.distribuirExercito(MaquinaDeRegras.efetuaTroca(cartasJogador[i], cartasJogador[j], cartasJogador[k])); trocou = true; } if (!cartasJogador[i].Equals(cartasJogador[j]) && !cartasJogador[i].Equals(cartasJogador[k]) && !cartasJogador[k].Equals(cartasJogador[j]) && !trocou) { Console.WriteLine("IA trocando carta!"); iA.distribuirExercito(MaquinaDeRegras.efetuaTroca(cartasJogador[i], cartasJogador[j], cartasJogador[k])); trocou = true; } } } } } } }
public void distribuiExercitoFullRandom(int quantidade, IA iA) { Random random = new Random(); int randomNumber; for (int i = 0; i < quantidade; i++) { randomNumber = random.Next(0, iA.getTerritorios().Count() - 1); iA.getTerritorios()[randomNumber].setNumeroExercitos(1 + iA.getTerritorios()[randomNumber].getNumeroExercito()); iA.removeExercitoParacolocar(); } }
public void distribuiExercitoTerritoriosBordaRandom(int quantidade, IA iA) { Random random = new Random(); int randomNumber; List<Territorio> territoriosComBorda = iA.getTerritoriosBorda(); for (int i = 0; i < quantidade; i++) { randomNumber = random.Next(0, iA.getTerritorios().Count() - 1); territoriosComBorda[randomNumber].setNumeroExercitos(1 + territoriosComBorda[randomNumber].getNumeroExercito()); iA.removeExercitoParacolocar(); } }
//Mantem os territorios de borda com o mesmo numero de tropas public void distribuiExercitoTerritoriosBorda(int quantidade, IA iA) { List<Territorio> territoriosComBorda = iA.getTerritoriosBorda(); Territorio bordaMenosTerrit = territoriosComBorda[0]; for (int i = 0; i < quantidade; i++) { foreach (Territorio territ in territoriosComBorda) { if (bordaMenosTerrit.getNumeroExercito() > territ.getNumeroExercito()) { bordaMenosTerrit = territ; } } bordaMenosTerrit.setNumeroExercitos(bordaMenosTerrit.getNumeroExercito()+1); iA.removeExercitoParacolocar(); } }
public void remanejaFullRandom(IA iA) { int randomNumber; Random random = new Random(); foreach(Territorio origem in iA.getTerritorios()) { foreach(Territorio destino in iA.getTerritorios()) { randomNumber = random.Next(0, origem.getNumeroExercitoRemanejavel()); if (MaquinaDeRegras.validaMovimentoRemanejamento(origem, destino, randomNumber)) { origem.setNumeroExercitos(origem.getNumeroExercito() - randomNumber); destino.setNumeroExercitos(destino.getNumeroExercito() + randomNumber); origem.setNumeroExercitosRemanejavel(origem.getNumeroExercitoRemanejavel() - randomNumber); } } } }
//Mantem os territorios de borda com o mesmo numero de tropas do territorio vizinho inimigo public void distribuiExercitoTerritoriosEqualizandoInimigo(int quantidade, IA iA) { List<Territorio> territoriosComBorda = iA.getTerritoriosBorda(); while (quantidade > 0) { Territorio inimigo = null; Territorio meu = null; int dif = 0; foreach (Territorio territ in territoriosComBorda) { foreach (Territorio territVizinho in territ.getListaVizinhosInimigos()) { if (territ.getNumeroExercito() < territVizinho.getNumeroExercito() && ((territ.getNumeroExercito() - territVizinho.getNumeroExercito()) > dif)) { dif = territVizinho.getNumeroExercito() -territ.getNumeroExercito(); inimigo = territVizinho; meu = territ; } } } if (meu != null) { if (dif < quantidade) { meu.setNumeroExercitos(meu.getNumeroExercito() + dif); iA.removeExercitoParacolocar(); quantidade = quantidade - dif; } else { meu.setNumeroExercitos(meu.getNumeroExercito() + quantidade); for (int i = 0; i < quantidade; i++) { iA.removeExercitoParacolocar(); } quantidade = 0; } } } }