public void IniciarJogo(Exercito exercito1, Exercito exercito2) { Contract.Requires <ArgumentException>(exercito1.Nacao > 0); Contract.Requires <ArgumentException>(exercito2.Nacao > 0); for (int i = 0; i < this.Largura; i++) { for (int j = 0; j < this.Altura; j++) { //Ultima ou primeira fileira? Exercito exercito = (j == 0 || j == 1) ? exercito1 : exercito2; ElementoDoExercito elemento = null; Factory.AbstractFactoryExercito factory = Factory.AbstractFactoryExercito.CriarFactoryExercito(exercito.Nacao); if (j == 0 || j == this.Altura - 1) { //Cria arqueiro nas posições pares e Cavaleiros nas posições impáres. elemento = (i % 2 == 0)? (ElementoDoExercito)factory.CriarArqueiro(): (ElementoDoExercito)factory.CriarCavalaria(); } else if (j == 1 || j == this.Altura - 2) { //Cria guerreiros elemento = (ElementoDoExercito)factory.CriarGuerreiro(); } //Se o elemento tiver sido instanciado criará o elemento no tabuleiro. if (elemento != null) { exercito.Elementos.Add(elemento); elemento.posicao = new Posicao(i, j); elemento.Tabuleiro = this; } } } }
public Posicao ObterPosicao(ElementoDoExercito elemento) { return(elemento.posicao); }