예제 #1
0
        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;
                    }
                }
            }
        }
예제 #2
0
 public Posicao ObterPosicao(ElementoDoExercito elemento)
 {
     return(elemento.posicao);
 }