//Este médodo vai ser usado para tomar posse de um território vazio (Para a fase de Setup)
 public void Tomar_Posse_de_Território(Territorio territorio_a_tomar_posse)
 {
     territorio_a_tomar_posse.Identificação_do_Jogador_que_o_possui = Identificação;
     territorio_a_tomar_posse.botão.Cor_Texto               = this.Cor;
     territorio_a_tomar_posse.Infantaria_Presente           = 1;
     Territórios_Possuídos[territorio_a_tomar_posse.índice] = 1;
     Número_de_Infantaria_Guardada--;
 }
 public bool Verificar_se_o_Estado_lhe_Pertence(Territorio territorio)
 {
     if (Territórios_Possuídos[territorio.índice] == 1)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public bool Está_Na_Vizinhança(Territorio atacante, Territorio defensor) //Vai verificar se o território t2 está na vizinhança do t1
        {
            bool resultado = false;

            foreach (string vizinho in atacante.Nomes_Territórios_Vizinhos)
            {
                if (vizinho == defensor.Nome)
                {
                    resultado = true;
                }
            }
            return(resultado);
        }
 public void Reforçar_Território(Territorio t)
 {
     t.Infantaria_Presente++;
     Número_de_Infantaria_Guardada--;
 }
 public bool Verificar_se_o_Estado_lhe_Pertence(Territorio territorio)
 {
     if (Territórios_Possuídos[territorio.índice] == 1)
         return true;
     else
         return false;
 }
 //Este médodo vai ser usado para tomar posse de um território vazio (Para a fase de Setup)
 public void Tomar_Posse_de_Território(Territorio territorio_a_tomar_posse)
 {
     territorio_a_tomar_posse.Identificação_do_Jogador_que_o_possui = Identificação;
     territorio_a_tomar_posse.botão.Cor_Texto = this.Cor;
     territorio_a_tomar_posse.Infantaria_Presente = 1;
     Territórios_Possuídos[territorio_a_tomar_posse.índice] = 1;
     Número_de_Infantaria_Guardada--;
 }
 public void Reforçar_Território(Territorio t)
 {
     t.Infantaria_Presente++;
     Número_de_Infantaria_Guardada--;
 }
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
                Exit();

            MouseState mouse = Mouse.GetState();
            if (CurrentGameState == GameState.MainMenu)
            {
                if (btnPlay.isClicked == true) CurrentGameState = GameState.Setup;
                btnPlay.Update(mouse);

                add.Update(mouse,gameTime);
                sub.Update(mouse,gameTime);

                if (add.Foi_Clicado && Número_Inicial_de_Jogadores < 6)
                    Número_Inicial_de_Jogadores++;
                if (sub.Foi_Clicado && Número_Inicial_de_Jogadores > 3)
                    Número_Inicial_de_Jogadores--;
            }
            if (CurrentGameState == GameState.Setup)
            {
                if (!já_foi_sorteado_o_primeiro)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (i <= Número_Inicial_de_Jogadores)
                            Jogadores[i] = new Jogador(i + 1, Número_Inicial_de_Jogadores);
                        else
                            Jogadores[i] = new Jogador();
                    }
                    for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                    {
                        Jogadores[i].sorteio_inicial = r.Next(1, 7);
                    }
                    Jogadores[0].Cor = Color.Red;
                    Jogadores[1].Cor = Color.Blue;
                    Jogadores[2].Cor = Color.Green;
                    Jogadores[3].Cor = Color.Orange;
                    Jogadores[4].Cor = Color.Black;
                    Jogadores[5].Cor = Color.Cyan;
                    //Vão ser rolados os dados para cada jogador para escolher o primeiro a colocar os soldados
                    int maior_numero_saido = 0, jogador_com_maior_numero = -1;
                    for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                    {
                        if (Jogadores[i].sorteio_inicial > maior_numero_saido)
                        {
                            jogador_com_maior_numero = i;
                            maior_numero_saido = Jogadores[i].sorteio_inicial;
                        }
                    }
                    //Os Jogadores irão ocupar os vários continentes
                    jogador_actual = jogador_com_maior_numero;
                    já_foi_sorteado_o_primeiro = true;
                }

                //Enquanto os territórios não estiverem ocupados e os jogadores ainda tiverem infantaria
                if(!tabuleiro.Os_Territórios_Estão_Todos_Ocupados()||!Todos_os_Jogadores_Estão_Sem_Infantaria())
                {
                    if (!o_jogador_actual_escolheu)
                    {
                        for (int t = 0; t < 42; t++)
                        {
                            tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                            if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                            {
                                //Se o território estiver desocupado
                                if (tabuleiro.Territorios[t].Está_Desocupado()&&!Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                                {
                                    Jogadores[jogador_actual].Tomar_Posse_de_Território(tabuleiro.Territorios[t]);
                                }
                                else
                                {//Se não estiver mas se o jogador o possuir
                                    if (Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && !Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                                    {
                                        Jogadores[jogador_actual].Reforçar_Território(tabuleiro.Territorios[t]);
                                    }
                                }
                                o_jogador_actual_escolheu = true;
                            }
                        }
                    }
                    else
                    {
                        //Se o jogador que está a inserir já escolheu...
                        //...então se este é o "último jogador", o jogador 0 (jogador 1) é o seguinte
                        if (jogador_actual == (Número_Inicial_de_Jogadores - 1))
                        {
                            jogador_actual = 0;
                        }
                        else
                        {
                            jogador_actual++;
                        }
                        o_jogador_actual_escolheu = false;
                    }
                }
                else
                {
                    //Inseridos todas as unidades de infantaria e conquistados os continentes, começa-se o jogo com o primeiro jogador na fase de drafting
                    jogador_actual = 0;
                    o_jogador_actual_escolheu = false;
                    CurrentGameState = GameState.Drafting;
                }
                //CurrentGameState = GameState.Drafting;
            }
            if (CurrentGameState == GameState.Drafting)
            {
                //Para o caso do jogador actual já ter perdido
                while(Jogadores[jogador_actual].Perdeu)
                {
                    if (jogador_actual == Número_Inicial_de_Jogadores)
                        jogador_actual = 0;
                    else
                        jogador_actual++;
                }
                //Aqui vão-se gerar os números de infantaria de cada jogador com base no número de continentes possuídos
                if (!já_foi_dada_a_infantaria)
                {
                    Jogadores[jogador_actual].Número_de_Infantaria_Guardada += Jogadores[jogador_actual].Contar_Territórios() + r.Next(1, 10);
                    já_foi_dada_a_infantaria = true;
                }
                    for (int t = 0; t < 42; t++)
                    {
                        tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                        if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                        {
                            if (Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && Jogadores[jogador_actual].Número_de_Infantaria_Guardada > 0)
                            {
                                tabuleiro.Territorios[t].Infantaria_Presente++;
                                Jogadores[jogador_actual].Número_de_Infantaria_Guardada--;
                            }
                        }
                    }
                    if (Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                    {
                        já_foi_dada_a_infantaria = false;
                        CurrentGameState = GameState.Attacking;
                    }
            }
            if (CurrentGameState == GameState.Attacking)
            {
                //Os "dados" são "lançados"
                for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                {
                    Jogadores[i].Lançar_Dados();
                }
                if (!escolheu_atacante || !escolheu_defensor)
                {
                    //Neste "for" serve para ler os cliques do rato e saber se está a escolher o atacante e o que vai ser atacado
                    for (int t = 0; t < 42; t++)
                    {
                        tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                        if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                        {
                            if (!escolheu_atacante && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && tabuleiro.Territorios[t].Infantaria_Presente > 1)
                            {
                                território_atacante = tabuleiro.Territorios[t];
                                escolheu_atacante = true;
                            }
                            if (escolheu_atacante && !escolheu_defensor && !Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                            {
                                território_defensor = tabuleiro.Territorios[t];
                                //Este método vai dar tempo para o jogador actual ler a informação.
                                Esperar(gameTime, 2000);
                                escolheu_defensor = true;
                            }
                        }
                    }
                }

                //Para o caso do atacante ter ganho
                if (atacante_ganhou && !escolheu_numero_de_infantaria_a_deslocar)
                {
                    add.Update(mouse, gameTime);
                    sub.Update(mouse, gameTime);
                    confirmar.Update(mouse, gameTime);
                    if (add.Foi_Clicado && infantaria_a_ser_deslocada < (território_atacante.Infantaria_Presente - 1))
                    {
                        infantaria_a_ser_deslocada++;
                    }
                    if (sub.Foi_Clicado && infantaria_a_ser_deslocada > 0)
                    {
                        infantaria_a_ser_deslocada--;
                    }
                    if (confirmar.Foi_Clicado)
                    {
                        território_atacante.Infantaria_Presente -= infantaria_a_ser_deslocada;
                        tabuleiro.Territorios[infantaria_a_ser_deslocada] = território_atacante;

                        território_defensor.Infantaria_Presente = 0;
                        território_defensor.Infantaria_Presente += infantaria_a_ser_deslocada;
                        Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Territórios_Possuídos[território_defensor.índice] = 0;

                        território_defensor.Identificação_do_Jogador_que_o_possui = jogador_actual;
                        Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Territórios_Possuídos[território_defensor.índice] = 1;
                        território_defensor.botão.Cor_Texto = Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Cor;
                        tabuleiro.Territorios[território_defensor.índice] = território_defensor;

                        escolheu_numero_de_infantaria_a_deslocar = true;
                        atacante_ganhou = false;
                    }
                }
                if (escolheu_atacante && escolheu_defensor)
                {
                    //Para o caso de todas as condições de ataque se reunirem
                    if (Pode_Atacar())
                    {
                        if (território_atacante.Infantaria_Presente > 2)
                        {
                            if (território_defensor.Infantaria_Presente >= 2)
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                                if (Jogadores[jogador_actual].Dados[1] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[1])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                            else
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria(para 0)
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                        }
                        else
                        {
                            if (território_defensor.Infantaria_Presente >= 2)
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                                if (Jogadores[jogador_actual].Dados[1] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[1])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                            else
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria(para 0)
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                        }
                        //Para o caso de todos os defensores terem sido destruídos aka o atacante ter ganho a batalha
                        if (território_defensor.Infantaria_Presente <= 0)
                        {
                            atacante_ganhou = true;
                            escolheu_numero_de_infantaria_a_deslocar = false;
                        }
                        escolheu_atacante = false;
                        escolheu_defensor = false;
                    }
                }
                proximo.Update(mouse,gameTime);
                if(proximo.Foi_Clicado)
                {
                    if (Há_Vencedor())
                        CurrentGameState = GameState.GameOver;
                    else
                    {
                        CurrentGameState = GameState.Reinforcing;
                        infantaria_a_ser_deslocada = 1;
                        escolheu_atacante = escolheu_defensor = escolheu_numero_de_infantaria_a_deslocar = atacante_ganhou = false;
                    }
                }
            }
            if (CurrentGameState == GameState.Reinforcing)
            {
                if(!escolheu_início || !escolheu_destino)
                {
                    for(int t=0;t<42;t++)
                    {
                        tabuleiro.Territorios[t].botão.Update(mouse,gameTime);
                        if(tabuleiro.Territorios[t].botão.Foi_Clicado)
                        {
                            if (!escolheu_início && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                            {
                                tInicial = tabuleiro.Territorios[t];
                                escolheu_início = true;
                            }
                            else
                            {
                                if (!escolheu_destino && escolheu_início && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                                {
                                    tDestino = tabuleiro.Territorios[t];
                                    escolheu_destino = true;
                                }
                            }
                        }
                    }
                }
                if(escolheu_início && escolheu_destino)
                {
                    add.Update(mouse,gameTime);
                    sub.Update(mouse,gameTime);
                    confirmar.Update(mouse,gameTime);
                    if(add.Foi_Clicado && infantaria_a_mover<=(tInicial.Infantaria_Presente-1))
                    {
                        infantaria_a_mover++;
                    }
                    if(sub.Foi_Clicado && infantaria_a_mover>0)
                    {
                        infantaria_a_mover--;
                    }
                    if(confirmar.Foi_Clicado)
                    {
                        tInicial.Infantaria_Presente -= infantaria_a_mover;
                        tabuleiro.Territorios[tInicial.índice] = tInicial;

                        tDestino.Infantaria_Presente += infantaria_a_mover;
                        tabuleiro.Territorios[tDestino.índice] = tDestino;

                        infantaria_a_mover = 0;
                        escolheu_início = false;
                        escolheu_destino = false;

                        if (jogador_actual == (Número_Inicial_de_Jogadores - 1))
                            jogador_actual = 0;
                        else
                            jogador_actual++;

                        CurrentGameState = GameState.Drafting;
                    }
                }
            }
            // Verificar a cada ciclo cada jogador para ver se algum perdeu(APENAS DEPOIS DE OS JOGADORES SEREM CRIADOS NO MAIN MENU)
            if (CurrentGameState != GameState.MainMenu)
            {
                for (int a = 0; a < Número_Inicial_de_Jogadores; a++)
                {
                   Jogadores[a].Verificar_se_Perdeu();
                    if (!Jogadores[a].Perdeu)
                        Jogadores[a].Lançar_Dados();
                }
            }
            base.Update(gameTime);
        }
        public Tabuleiro(GraphicsDevice graphics, Texture2D Textura_Botões) //Construtor do Tabuleiro, vai criar os territórios, definir os vizinhos destes e assinalar as cores do jogador que os possui (cinzento significa que não tem dono)
        {
            Valores_dos_Continentes = new int[6];
            Territorios             = new Territorio[42];
            //0-8 América do Norte
            Territorios[0] = new Territorio(graphics, Textura_Botões, "Alaska", "América do Norte");
            Territorios[0].botão.Posição = new Vector2(100, 100);
            Territorios[1] = new Territorio(graphics, Textura_Botões, "Territorio Noroeste", "América do Norte");
            Territorios[1].botão.Posição = new Vector2(204, 102);
            Territorios[2] = new Territorio(graphics, Textura_Botões, "Alberta", "América do Norte");
            Territorios[2].botão.Posição = new Vector2(209, 164);
            Territorios[3] = new Territorio(graphics, Textura_Botões, "Estados Unidos Oeste", "América do Norte");
            Territorios[3].botão.Posição = new Vector2(210, 244);
            Territorios[4] = new Territorio(graphics, Textura_Botões, "Ontario", "América do Norte");
            Territorios[4].botão.Posição = new Vector2(285, 175);
            Territorios[5] = new Territorio(graphics, Textura_Botões, "Canada Este", "América do Norte");
            Territorios[5].botão.Posição = new Vector2(383, 176);
            Territorios[6] = new Territorio(graphics, Textura_Botões, "Estados Unidos Este", "América do Norte");
            Territorios[6].botão.Posição = new Vector2(308, 270);
            Territorios[7] = new Territorio(graphics, Textura_Botões, "Mexico", "América do Norte");
            Territorios[7].botão.Posição = new Vector2(225, 329);
            Territorios[8] = new Territorio(graphics, Textura_Botões, "Gronelandia", "América do Norte");
            Territorios[8].botão.Posição = new Vector2(468, 65);
            //9-12 América do Sul
            Territorios[9] = new Territorio(graphics, Textura_Botões, "Venezuela", "América do Sul");
            Territorios[9].botão.Posição = new Vector2(313, 400);
            Territorios[10] = new Territorio(graphics, Textura_Botões, "Brasil", "América do Sul");
            Territorios[10].botão.Posição = new Vector2(410, 470);
            Territorios[11] = new Territorio(graphics, Textura_Botões, "Peru", "América do Sul");
            Territorios[11].botão.Posição = new Vector2(335, 495);
            Territorios[12] = new Territorio(graphics, Textura_Botões, "Argentina", "América do Sul");
            Territorios[12].botão.Posição = new Vector2(340, 570);
            //13-18 África
            Territorios[13] = new Territorio(graphics, Textura_Botões, "Norte de Africa", "África");
            Territorios[13].botão.Posição = new Vector2(620, 440);
            Territorios[14] = new Territorio(graphics, Textura_Botões, "Egipto", "África");
            Territorios[14].botão.Posição = new Vector2(720, 415);
            Territorios[15] = new Territorio(graphics, Textura_Botões, "Africa do Este", "África");
            Territorios[15].botão.Posição = new Vector2(805, 510);
            Territorios[16] = new Territorio(graphics, Textura_Botões, "Africa Central", "África");
            Territorios[16].botão.Posição = new Vector2(725, 535);
            Territorios[17] = new Territorio(graphics, Textura_Botões, "Africa do Sul", "África");
            Territorios[17].botão.Posição = new Vector2(735, 635);
            Territorios[18] = new Territorio(graphics, Textura_Botões, "Madagascar", "África");
            Territorios[18].botão.Posição = new Vector2(853, 630);
            //19-25 Europa
            Territorios[19] = new Territorio(graphics, Textura_Botões, "Europa Ocidental", "Europa");
            Territorios[19].botão.Posição = new Vector2(565, 335);
            Territorios[20] = new Territorio(graphics, Textura_Botões, "Gra-Bretanha", "Europa");
            Territorios[20].botão.Posição = new Vector2(567, 238);
            Territorios[21] = new Territorio(graphics, Textura_Botões, "Islandia", "Europa");
            Territorios[21].botão.Posição = new Vector2(568, 140);
            Territorios[22] = new Territorio(graphics, Textura_Botões, "Norte da Europa", "Europa");
            Territorios[22].botão.Posição = new Vector2(670, 240);
            Territorios[23] = new Territorio(graphics, Textura_Botões, "Sul da Europa", "Europa");
            Territorios[23].botão.Posição = new Vector2(683, 290);
            Territorios[24] = new Territorio(graphics, Textura_Botões, "Escandinavia", "Europa");
            Territorios[24].botão.Posição = new Vector2(658, 150);
            Territorios[25] = new Territorio(graphics, Textura_Botões, "Russia", "Europa");
            Territorios[25].botão.Posição = new Vector2(790, 195);
            //26-37 Ásia
            Territorios[26] = new Territorio(graphics, Textura_Botões, "Medio-Oriente", "Ásia");
            Territorios[26].botão.Posição = new Vector2(820, 380);
            Territorios[27] = new Territorio(graphics, Textura_Botões, "Afeganistao", "Ásia");
            Territorios[27].botão.Posição = new Vector2(900, 266);
            Territorios[28] = new Territorio(graphics, Textura_Botões, "Ural", "Ásia");
            Territorios[28].botão.Posição = new Vector2(920, 160);
            Territorios[29] = new Territorio(graphics, Textura_Botões, "Siberia", "Ásia");
            Territorios[29].botão.Posição = new Vector2(990, 130);
            Territorios[30] = new Territorio(graphics, Textura_Botões, "Yakutsk", "Ásia");
            Territorios[30].botão.Posição = new Vector2(1090, 94);
            Territorios[31] = new Territorio(graphics, Textura_Botões, "Irkutsk", "Ásia");
            Territorios[31].botão.Posição = new Vector2(1075, 176);
            Territorios[32] = new Territorio(graphics, Textura_Botões, "Mongolia", "Ásia");
            Territorios[32].botão.Posição = new Vector2(1080, 253);
            Territorios[33] = new Territorio(graphics, Textura_Botões, "China", "Ásia");
            Territorios[33].botão.Posição = new Vector2(1050, 320);
            Territorios[34] = new Territorio(graphics, Textura_Botões, "India", "Ásia");
            Territorios[34].botão.Posição = new Vector2(975, 375);
            Territorios[35] = new Territorio(graphics, Textura_Botões, "Sudeste Asiatico", "Ásia");
            Territorios[35].botão.Posição = new Vector2(1080, 404);
            Territorios[36] = new Territorio(graphics, Textura_Botões, "Kamchatka", "Ásia");
            Territorios[36].botão.Posição = new Vector2(1192, 89);
            Territorios[37] = new Territorio(graphics, Textura_Botões, "Coreia", "Ásia");
            Territorios[37].botão.Posição = new Vector2(1225, 260);
            //38-41 Oceânia
            Territorios[38] = new Territorio(graphics, Textura_Botões, "Indonesia", "Oceânia");
            Territorios[38].botão.Posição = new Vector2(1108, 520);
            Territorios[39] = new Territorio(graphics, Textura_Botões, "Nova Guine", "Oceânia");
            Territorios[39].botão.Posição = new Vector2(1220, 496);
            Territorios[40] = new Territorio(graphics, Textura_Botões, "Australia Oeste", "Oceânia");
            Territorios[40].botão.Posição = new Vector2(1155, 627);
            Territorios[41] = new Territorio(graphics, Textura_Botões, "Australia Este", "Oceânia");
            Territorios[41].botão.Posição = new Vector2(1271, 621);

            Territorios[0].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[0].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[0].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[1].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Gronelandia");

            Territorios[2].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");

            Territorios[3].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[3].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[3].Nomes_Territórios_Vizinhos.Add("Mexico");

            Territorios[4].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Canada Este");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Gronelandia");

            Territorios[5].Nomes_Territórios_Vizinhos.Add("Gronelandia");
            Territorios[5].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[5].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");

            Territorios[6].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Mexico");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Canada Este");

            Territorios[7].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[7].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[7].Nomes_Territórios_Vizinhos.Add("Venezuela");

            Territorios[8].Nomes_Territórios_Vizinhos.Add("Canada Este");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Islandia");

            Territorios[9].Nomes_Territórios_Vizinhos.Add("Mexico");
            Territorios[9].Nomes_Territórios_Vizinhos.Add("Brasil");
            Territorios[9].Nomes_Territórios_Vizinhos.Add("Peru");

            Territorios[10].Nomes_Territórios_Vizinhos.Add("Venezuela");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Peru");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Argentina");

            Territorios[11].Nomes_Territórios_Vizinhos.Add("Venezuela");
            Territorios[11].Nomes_Territórios_Vizinhos.Add("Brasil");
            Territorios[11].Nomes_Territórios_Vizinhos.Add("Argentina");

            Territorios[12].Nomes_Territórios_Vizinhos.Add("Peru");
            Territorios[12].Nomes_Territórios_Vizinhos.Add("Brasil");

            Territorios[13].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Africa Central");

            Territorios[14].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[15].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Africa Central");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Madagascar");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[16].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[16].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[16].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[17].Nomes_Territórios_Vizinhos.Add("Africa Central");
            Territorios[17].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[17].Nomes_Territórios_Vizinhos.Add("Madagascar");

            Territorios[18].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[18].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[19].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Norte de Africa");

            Territorios[20].Nomes_Territórios_Vizinhos.Add("Islandia");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");

            Territorios[21].Nomes_Territórios_Vizinhos.Add("Gronelandia");
            Territorios[21].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[21].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");

            Territorios[22].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");

            Territorios[23].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[24].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Islandia");

            Territorios[25].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Ural");

            Territorios[26].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("India");

            Territorios[27].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("India");

            Territorios[28].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("China");

            Territorios[29].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Yakutsk");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Mongolia");

            Territorios[30].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[30].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[30].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[31].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Yakutsk");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[32].Nomes_Territórios_Vizinhos.Add("Coreia");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[33].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("India");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Mongolia");

            Territorios[34].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[35].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[35].Nomes_Territórios_Vizinhos.Add("India");
            Territorios[35].Nomes_Territórios_Vizinhos.Add("China");

            Territorios[36].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Coreia");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Yakutsk");

            Territorios[37].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[37].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[38].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[38].Nomes_Territórios_Vizinhos.Add("Nova Guine");
            Territorios[38].Nomes_Territórios_Vizinhos.Add("Australia Oeste");

            Territorios[39].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[39].Nomes_Territórios_Vizinhos.Add("Australia Oeste");
            Territorios[39].Nomes_Territórios_Vizinhos.Add("Australia Este");

            Territorios[40].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[40].Nomes_Territórios_Vizinhos.Add("Australia Este");
            Territorios[40].Nomes_Territórios_Vizinhos.Add("Nova Guine");

            Territorios[41].Nomes_Territórios_Vizinhos.Add("Australia Oeste");
            Territorios[41].Nomes_Territórios_Vizinhos.Add("Nova Guine");

            //América do Norte
            Valores_dos_Continentes[0] = 5;
            //América do Sul
            Valores_dos_Continentes[1] = 2;
            //Europa
            Valores_dos_Continentes[2] = 5;
            //África
            Valores_dos_Continentes[3] = 3;
            //Ásia
            Valores_dos_Continentes[4] = 7;
            //Oceânia
            Valores_dos_Continentes[5] = 2;

            for (int ind = 0; ind < 42; ind++)
            {
                Territorios[ind].índice = ind;
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            MouseState mouse = Mouse.GetState();

            if (CurrentGameState == GameState.MainMenu)
            {
                if (btnPlay.isClicked == true)
                {
                    CurrentGameState = GameState.Setup;
                }
                btnPlay.Update(mouse);

                add.Update(mouse, gameTime);
                sub.Update(mouse, gameTime);

                if (add.Foi_Clicado && Número_Inicial_de_Jogadores < 6)
                {
                    Número_Inicial_de_Jogadores++;
                }
                if (sub.Foi_Clicado && Número_Inicial_de_Jogadores > 3)
                {
                    Número_Inicial_de_Jogadores--;
                }
            }
            if (CurrentGameState == GameState.Setup)
            {
                if (!já_foi_sorteado_o_primeiro)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (i <= Número_Inicial_de_Jogadores)
                        {
                            Jogadores[i] = new Jogador(i + 1, Número_Inicial_de_Jogadores);
                        }
                        else
                        {
                            Jogadores[i] = new Jogador();
                        }
                    }
                    for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                    {
                        Jogadores[i].sorteio_inicial = r.Next(1, 7);
                    }
                    Jogadores[0].Cor = Color.Red;
                    Jogadores[1].Cor = Color.Blue;
                    Jogadores[2].Cor = Color.Green;
                    Jogadores[3].Cor = Color.Orange;
                    Jogadores[4].Cor = Color.Black;
                    Jogadores[5].Cor = Color.Cyan;
                    //Vão ser rolados os dados para cada jogador para escolher o primeiro a colocar os soldados
                    int maior_numero_saido = 0, jogador_com_maior_numero = -1;
                    for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                    {
                        if (Jogadores[i].sorteio_inicial > maior_numero_saido)
                        {
                            jogador_com_maior_numero = i;
                            maior_numero_saido       = Jogadores[i].sorteio_inicial;
                        }
                    }
                    //Os Jogadores irão ocupar os vários continentes
                    jogador_actual             = jogador_com_maior_numero;
                    já_foi_sorteado_o_primeiro = true;
                }


                //Enquanto os territórios não estiverem ocupados e os jogadores ainda tiverem infantaria
                if (!tabuleiro.Os_Territórios_Estão_Todos_Ocupados() || !Todos_os_Jogadores_Estão_Sem_Infantaria())
                {
                    if (!o_jogador_actual_escolheu)
                    {
                        for (int t = 0; t < 42; t++)
                        {
                            tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                            if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                            {
                                //Se o território estiver desocupado
                                if (tabuleiro.Territorios[t].Está_Desocupado() && !Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                                {
                                    Jogadores[jogador_actual].Tomar_Posse_de_Território(tabuleiro.Territorios[t]);
                                }
                                else
                                {//Se não estiver mas se o jogador o possuir
                                    if (Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && !Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                                    {
                                        Jogadores[jogador_actual].Reforçar_Território(tabuleiro.Territorios[t]);
                                    }
                                }
                                o_jogador_actual_escolheu = true;
                            }
                        }
                    }
                    else
                    {
                        //Se o jogador que está a inserir já escolheu...
                        //...então se este é o "último jogador", o jogador 0 (jogador 1) é o seguinte
                        if (jogador_actual == (Número_Inicial_de_Jogadores - 1))
                        {
                            jogador_actual = 0;
                        }
                        else
                        {
                            jogador_actual++;
                        }
                        o_jogador_actual_escolheu = false;
                    }
                }
                else
                {
                    //Inseridos todas as unidades de infantaria e conquistados os continentes, começa-se o jogo com o primeiro jogador na fase de drafting
                    jogador_actual            = 0;
                    o_jogador_actual_escolheu = false;
                    CurrentGameState          = GameState.Drafting;
                }
                //CurrentGameState = GameState.Drafting;
            }
            if (CurrentGameState == GameState.Drafting)
            {
                //Para o caso do jogador actual já ter perdido
                while (Jogadores[jogador_actual].Perdeu)
                {
                    if (jogador_actual == Número_Inicial_de_Jogadores)
                    {
                        jogador_actual = 0;
                    }
                    else
                    {
                        jogador_actual++;
                    }
                }
                //Aqui vão-se gerar os números de infantaria de cada jogador com base no número de continentes possuídos
                if (!já_foi_dada_a_infantaria)
                {
                    Jogadores[jogador_actual].Número_de_Infantaria_Guardada += Jogadores[jogador_actual].Contar_Territórios() + r.Next(1, 10);
                    já_foi_dada_a_infantaria = true;
                }
                for (int t = 0; t < 42; t++)
                {
                    tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                    if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                    {
                        if (Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && Jogadores[jogador_actual].Número_de_Infantaria_Guardada > 0)
                        {
                            tabuleiro.Territorios[t].Infantaria_Presente++;
                            Jogadores[jogador_actual].Número_de_Infantaria_Guardada--;
                        }
                    }
                }
                if (Jogadores[jogador_actual].Ficou_Sem_Infantaria())
                {
                    já_foi_dada_a_infantaria = false;
                    CurrentGameState         = GameState.Attacking;
                }
            }
            if (CurrentGameState == GameState.Attacking)
            {
                //Os "dados" são "lançados"
                for (int i = 0; i < Número_Inicial_de_Jogadores; i++)
                {
                    Jogadores[i].Lançar_Dados();
                }
                if (!escolheu_atacante || !escolheu_defensor)
                {
                    //Neste "for" serve para ler os cliques do rato e saber se está a escolher o atacante e o que vai ser atacado
                    for (int t = 0; t < 42; t++)
                    {
                        tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                        if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                        {
                            if (!escolheu_atacante && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]) && tabuleiro.Territorios[t].Infantaria_Presente > 1)
                            {
                                território_atacante = tabuleiro.Territorios[t];
                                escolheu_atacante   = true;
                            }
                            if (escolheu_atacante && !escolheu_defensor && !Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                            {
                                território_defensor = tabuleiro.Territorios[t];
                                //Este método vai dar tempo para o jogador actual ler a informação.
                                Esperar(gameTime, 2000);
                                escolheu_defensor = true;
                            }
                        }
                    }
                }

                //Para o caso do atacante ter ganho
                if (atacante_ganhou && !escolheu_numero_de_infantaria_a_deslocar)
                {
                    add.Update(mouse, gameTime);
                    sub.Update(mouse, gameTime);
                    confirmar.Update(mouse, gameTime);
                    if (add.Foi_Clicado && infantaria_a_ser_deslocada < (território_atacante.Infantaria_Presente - 1))
                    {
                        infantaria_a_ser_deslocada++;
                    }
                    if (sub.Foi_Clicado && infantaria_a_ser_deslocada > 0)
                    {
                        infantaria_a_ser_deslocada--;
                    }
                    if (confirmar.Foi_Clicado)
                    {
                        território_atacante.Infantaria_Presente          -= infantaria_a_ser_deslocada;
                        tabuleiro.Territorios[infantaria_a_ser_deslocada] = território_atacante;

                        território_defensor.Infantaria_Presente  = 0;
                        território_defensor.Infantaria_Presente += infantaria_a_ser_deslocada;
                        Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Territórios_Possuídos[território_defensor.índice] = 0;

                        território_defensor.Identificação_do_Jogador_que_o_possui = jogador_actual;
                        Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Territórios_Possuídos[território_defensor.índice] = 1;
                        território_defensor.botão.Cor_Texto = Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Cor;
                        tabuleiro.Territorios[território_defensor.índice] = território_defensor;


                        escolheu_numero_de_infantaria_a_deslocar = true;
                        atacante_ganhou = false;
                    }
                }
                if (escolheu_atacante && escolheu_defensor)
                {
                    //Para o caso de todas as condições de ataque se reunirem
                    if (Pode_Atacar())
                    {
                        if (território_atacante.Infantaria_Presente > 2)
                        {
                            if (território_defensor.Infantaria_Presente >= 2)
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                                if (Jogadores[jogador_actual].Dados[1] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[1])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                            else
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria(para 0)
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                        }
                        else
                        {
                            if (território_defensor.Infantaria_Presente >= 2)
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                                if (Jogadores[jogador_actual].Dados[1] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[1])
                                {
                                    //O defensor perde infantaria
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                            else
                            {
                                //Se o primeiro dado do atacante for maior que o do defensor
                                if (Jogadores[jogador_actual].Dados[0] > Jogadores[território_defensor.Identificação_do_Jogador_que_o_possui].Dados[0])
                                {
                                    //O defensor perde infantaria(para 0)
                                    território_defensor.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_defensor.índice] = território_defensor;
                                }
                                else
                                {
                                    //Senão
                                    //O atacante perde infantaria
                                    território_atacante.Infantaria_Presente--;
                                    //O território no array original é actualizado
                                    tabuleiro.Territorios[território_atacante.índice] = território_atacante;
                                }
                            }
                        }
                        //Para o caso de todos os defensores terem sido destruídos aka o atacante ter ganho a batalha
                        if (território_defensor.Infantaria_Presente <= 0)
                        {
                            atacante_ganhou = true;
                            escolheu_numero_de_infantaria_a_deslocar = false;
                        }
                        escolheu_atacante = false;
                        escolheu_defensor = false;
                    }
                }
                proximo.Update(mouse, gameTime);
                if (proximo.Foi_Clicado)
                {
                    if (Há_Vencedor())
                    {
                        CurrentGameState = GameState.GameOver;
                    }
                    else
                    {
                        CurrentGameState           = GameState.Reinforcing;
                        infantaria_a_ser_deslocada = 1;
                        escolheu_atacante          = escolheu_defensor = escolheu_numero_de_infantaria_a_deslocar = atacante_ganhou = false;
                    }
                }
            }
            if (CurrentGameState == GameState.Reinforcing)
            {
                if (!escolheu_início || !escolheu_destino)
                {
                    for (int t = 0; t < 42; t++)
                    {
                        tabuleiro.Territorios[t].botão.Update(mouse, gameTime);
                        if (tabuleiro.Territorios[t].botão.Foi_Clicado)
                        {
                            if (!escolheu_início && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                            {
                                tInicial        = tabuleiro.Territorios[t];
                                escolheu_início = true;
                            }
                            else
                            {
                                if (!escolheu_destino && escolheu_início && Jogadores[jogador_actual].Verificar_se_o_Estado_lhe_Pertence(tabuleiro.Territorios[t]))
                                {
                                    tDestino         = tabuleiro.Territorios[t];
                                    escolheu_destino = true;
                                }
                            }
                        }
                    }
                }
                if (escolheu_início && escolheu_destino)
                {
                    add.Update(mouse, gameTime);
                    sub.Update(mouse, gameTime);
                    confirmar.Update(mouse, gameTime);
                    if (add.Foi_Clicado && infantaria_a_mover <= (tInicial.Infantaria_Presente - 1))
                    {
                        infantaria_a_mover++;
                    }
                    if (sub.Foi_Clicado && infantaria_a_mover > 0)
                    {
                        infantaria_a_mover--;
                    }
                    if (confirmar.Foi_Clicado)
                    {
                        tInicial.Infantaria_Presente          -= infantaria_a_mover;
                        tabuleiro.Territorios[tInicial.índice] = tInicial;

                        tDestino.Infantaria_Presente          += infantaria_a_mover;
                        tabuleiro.Territorios[tDestino.índice] = tDestino;

                        infantaria_a_mover = 0;
                        escolheu_início    = false;
                        escolheu_destino   = false;

                        if (jogador_actual == (Número_Inicial_de_Jogadores - 1))
                        {
                            jogador_actual = 0;
                        }
                        else
                        {
                            jogador_actual++;
                        }

                        CurrentGameState = GameState.Drafting;
                    }
                }
            }
            // Verificar a cada ciclo cada jogador para ver se algum perdeu(APENAS DEPOIS DE OS JOGADORES SEREM CRIADOS NO MAIN MENU)
            if (CurrentGameState != GameState.MainMenu)
            {
                for (int a = 0; a < Número_Inicial_de_Jogadores; a++)
                {
                    Jogadores[a].Verificar_se_Perdeu();
                    if (!Jogadores[a].Perdeu)
                    {
                        Jogadores[a].Lançar_Dados();
                    }
                }
            }
            base.Update(gameTime);
        }
 //Vai verificar se o território t2 está na vizinhança do t1
 public bool Está_Na_Vizinhança(Territorio atacante, Territorio defensor)
 {
     bool resultado = false;
     foreach (string vizinho in atacante.Nomes_Territórios_Vizinhos)
     {
         if (vizinho == defensor.Nome)
             resultado = true;
     }
     return resultado;
 }
        //Construtor do Tabuleiro, vai criar os territórios, definir os vizinhos destes e assinalar as cores do jogador que os possui (cinzento significa que não tem dono)
        public Tabuleiro(GraphicsDevice graphics,Texture2D Textura_Botões)
        {
            Valores_dos_Continentes = new int[6];
            Territorios = new Territorio[42];
            //0-8 América do Norte
            Territorios[0] = new Territorio(graphics,Textura_Botões, "Alaska", "América do Norte");
            Territorios[0].botão.Posição = new Vector2(100, 100);
            Territorios[1] = new Territorio(graphics, Textura_Botões, "Territorio Noroeste", "América do Norte");
            Territorios[1].botão.Posição = new Vector2(204, 102);
            Territorios[2] = new Territorio(graphics, Textura_Botões, "Alberta", "América do Norte");
            Territorios[2].botão.Posição = new Vector2(209, 164);
            Territorios[3] = new Territorio(graphics, Textura_Botões, "Estados Unidos Oeste", "América do Norte");
            Territorios[3].botão.Posição = new Vector2(210, 244);
            Territorios[4] = new Territorio(graphics, Textura_Botões, "Ontario", "América do Norte");
            Territorios[4].botão.Posição = new Vector2(285, 175);
            Territorios[5] = new Territorio(graphics, Textura_Botões, "Canada Este", "América do Norte");
            Territorios[5].botão.Posição = new Vector2(383, 176);
            Territorios[6] = new Territorio(graphics, Textura_Botões, "Estados Unidos Este", "América do Norte");
            Territorios[6].botão.Posição = new Vector2(308, 270);
            Territorios[7] = new Territorio(graphics, Textura_Botões, "Mexico", "América do Norte");
            Territorios[7].botão.Posição = new Vector2(225, 329);
            Territorios[8] = new Territorio(graphics, Textura_Botões, "Gronelandia", "América do Norte");
            Territorios[8].botão.Posição = new Vector2(468, 65);
            //9-12 América do Sul
            Territorios[9] = new Territorio(graphics, Textura_Botões, "Venezuela", "América do Sul");
            Territorios[9].botão.Posição = new Vector2(313, 400);
            Territorios[10] = new Territorio(graphics, Textura_Botões, "Brasil", "América do Sul");
            Territorios[10].botão.Posição = new Vector2(410,470);
            Territorios[11] = new Territorio(graphics, Textura_Botões, "Peru", "América do Sul");
            Territorios[11].botão.Posição = new Vector2(335,495);
            Territorios[12] = new Territorio(graphics, Textura_Botões, "Argentina", "América do Sul");
            Territorios[12].botão.Posição = new Vector2(340, 570);
            //13-18 África
            Territorios[13] = new Territorio(graphics, Textura_Botões, "Norte de Africa", "África");
            Territorios[13].botão.Posição = new Vector2(620,440);
            Territorios[14] = new Territorio(graphics, Textura_Botões, "Egipto", "África");
            Territorios[14].botão.Posição = new Vector2(720,415);
            Territorios[15] = new Territorio(graphics, Textura_Botões, "Africa do Este", "África");
            Territorios[15].botão.Posição = new Vector2(805,510);
            Territorios[16] = new Territorio(graphics, Textura_Botões, "Africa Central", "África");
            Territorios[16].botão.Posição = new Vector2(725,535);
            Territorios[17] = new Territorio(graphics, Textura_Botões, "Africa do Sul", "África");
            Territorios[17].botão.Posição = new Vector2(735,635);
            Territorios[18] = new Territorio(graphics, Textura_Botões, "Madagascar", "África");
            Territorios[18].botão.Posição = new Vector2(853,630);
            //19-25 Europa
            Territorios[19] = new Territorio(graphics, Textura_Botões, "Europa Ocidental", "Europa");
            Territorios[19].botão.Posição = new Vector2(565,335);
            Territorios[20] = new Territorio(graphics, Textura_Botões, "Gra-Bretanha", "Europa");
            Territorios[20].botão.Posição = new Vector2(567,238);
            Territorios[21] = new Territorio(graphics, Textura_Botões, "Islandia", "Europa");
            Territorios[21].botão.Posição = new Vector2(568,140);
            Territorios[22] = new Territorio(graphics, Textura_Botões, "Norte da Europa", "Europa");
            Territorios[22].botão.Posição = new Vector2(670,240);
            Territorios[23] = new Territorio(graphics, Textura_Botões, "Sul da Europa", "Europa");
            Territorios[23].botão.Posição = new Vector2(683,290);
            Territorios[24] = new Territorio(graphics, Textura_Botões, "Escandinavia", "Europa");
            Territorios[24].botão.Posição = new Vector2(658,150);
            Territorios[25] = new Territorio(graphics, Textura_Botões, "Russia", "Europa");
            Territorios[25].botão.Posição = new Vector2(790,195);
            //26-37 Ásia
            Territorios[26] = new Territorio(graphics, Textura_Botões, "Medio-Oriente", "Ásia");
            Territorios[26].botão.Posição = new Vector2(820,380);
            Territorios[27] = new Territorio(graphics, Textura_Botões, "Afeganistao", "Ásia");
            Territorios[27].botão.Posição = new Vector2(900,266);
            Territorios[28] = new Territorio(graphics, Textura_Botões, "Ural", "Ásia");
            Territorios[28].botão.Posição = new Vector2(920,160);
            Territorios[29] = new Territorio(graphics, Textura_Botões, "Siberia", "Ásia");
            Territorios[29].botão.Posição = new Vector2(990,130);
            Territorios[30] = new Territorio(graphics, Textura_Botões, "Yakutsk", "Ásia");
            Territorios[30].botão.Posição = new Vector2(1090,94);
            Territorios[31] = new Territorio(graphics, Textura_Botões, "Irkutsk", "Ásia");
            Territorios[31].botão.Posição = new Vector2(1075,176);
            Territorios[32] = new Territorio(graphics, Textura_Botões, "Mongolia", "Ásia");
            Territorios[32].botão.Posição = new Vector2(1080,253);
            Territorios[33] = new Territorio(graphics, Textura_Botões, "China", "Ásia");
            Territorios[33].botão.Posição = new Vector2(1050,320);
            Territorios[34] = new Territorio(graphics, Textura_Botões, "India", "Ásia");
            Territorios[34].botão.Posição = new Vector2(975,375);
            Territorios[35] = new Territorio(graphics, Textura_Botões, "Sudeste Asiatico", "Ásia");
            Territorios[35].botão.Posição = new Vector2(1080,404);
            Territorios[36] = new Territorio(graphics, Textura_Botões, "Kamchatka", "Ásia");
            Territorios[36].botão.Posição = new Vector2(1192,89);
            Territorios[37] = new Territorio(graphics, Textura_Botões, "Coreia", "Ásia");
            Territorios[37].botão.Posição = new Vector2(1225,260);
            //38-41 Oceânia
            Territorios[38] = new Territorio(graphics, Textura_Botões, "Indonesia", "Oceânia");
            Territorios[38].botão.Posição = new Vector2(1108,520);
            Territorios[39] = new Territorio(graphics, Textura_Botões, "Nova Guine", "Oceânia");
            Territorios[39].botão.Posição = new Vector2(1220,496);
            Territorios[40] = new Territorio(graphics, Textura_Botões, "Australia Oeste", "Oceânia");
            Territorios[40].botão.Posição = new Vector2(1155,627);
            Territorios[41] = new Territorio(graphics, Textura_Botões, "Australia Este", "Oceânia");
            Territorios[41].botão.Posição = new Vector2(1271,621);

            Territorios[0].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[0].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[0].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[1].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[1].Nomes_Territórios_Vizinhos.Add("Gronelandia");

            Territorios[2].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[2].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");

            Territorios[3].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[3].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[3].Nomes_Territórios_Vizinhos.Add("Mexico");

            Territorios[4].Nomes_Territórios_Vizinhos.Add("Alberta");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Canada Este");
            Territorios[4].Nomes_Territórios_Vizinhos.Add("Gronelandia");

            Territorios[5].Nomes_Territórios_Vizinhos.Add("Gronelandia");
            Territorios[5].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[5].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");

            Territorios[6].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Mexico");
            Territorios[6].Nomes_Territórios_Vizinhos.Add("Canada Este");

            Territorios[7].Nomes_Territórios_Vizinhos.Add("Estados Unidos Oeste");
            Territorios[7].Nomes_Territórios_Vizinhos.Add("Estados Unidos Este");
            Territorios[7].Nomes_Territórios_Vizinhos.Add("Venezuela");

            Territorios[8].Nomes_Territórios_Vizinhos.Add("Canada Este");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Ontario");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Territorio Noroeste");
            Territorios[8].Nomes_Territórios_Vizinhos.Add("Islandia");

            Territorios[9].Nomes_Territórios_Vizinhos.Add("Mexico");
            Territorios[9].Nomes_Territórios_Vizinhos.Add("Brasil");
            Territorios[9].Nomes_Territórios_Vizinhos.Add("Peru");

            Territorios[10].Nomes_Territórios_Vizinhos.Add("Venezuela");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Peru");
            Territorios[10].Nomes_Territórios_Vizinhos.Add("Argentina");

            Territorios[11].Nomes_Territórios_Vizinhos.Add("Venezuela");
            Territorios[11].Nomes_Territórios_Vizinhos.Add("Brasil");
            Territorios[11].Nomes_Territórios_Vizinhos.Add("Argentina");

            Territorios[12].Nomes_Territórios_Vizinhos.Add("Peru");
            Territorios[12].Nomes_Territórios_Vizinhos.Add("Brasil");

            Territorios[13].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[13].Nomes_Territórios_Vizinhos.Add("Africa Central");

            Territorios[14].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[14].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[15].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Africa Central");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Madagascar");
            Territorios[15].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[16].Nomes_Territórios_Vizinhos.Add("Norte de Africa");
            Territorios[16].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[16].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[17].Nomes_Territórios_Vizinhos.Add("Africa Central");
            Territorios[17].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[17].Nomes_Territórios_Vizinhos.Add("Madagascar");

            Territorios[18].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[18].Nomes_Territórios_Vizinhos.Add("Africa do Sul");

            Territorios[19].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[19].Nomes_Territórios_Vizinhos.Add("Norte de Africa");

            Territorios[20].Nomes_Territórios_Vizinhos.Add("Islandia");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[20].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");

            Territorios[21].Nomes_Territórios_Vizinhos.Add("Gronelandia");
            Territorios[21].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[21].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");

            Territorios[22].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[22].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");

            Territorios[23].Nomes_Territórios_Vizinhos.Add("Europa Ocidental");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[23].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[24].Nomes_Territórios_Vizinhos.Add("Gra-Bretanha");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[24].Nomes_Territórios_Vizinhos.Add("Islandia");

            Territorios[25].Nomes_Territórios_Vizinhos.Add("Escandinavia");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Norte da Europa");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[25].Nomes_Territórios_Vizinhos.Add("Ural");

            Territorios[26].Nomes_Territórios_Vizinhos.Add("Africa do Este");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Egipto");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Sul da Europa");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[26].Nomes_Territórios_Vizinhos.Add("India");

            Territorios[27].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[27].Nomes_Territórios_Vizinhos.Add("India");

            Territorios[28].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("Russia");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[28].Nomes_Territórios_Vizinhos.Add("China");

            Territorios[29].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Yakutsk");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[29].Nomes_Territórios_Vizinhos.Add("Mongolia");

            Territorios[30].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[30].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[30].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[31].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Yakutsk");
            Territorios[31].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[32].Nomes_Territórios_Vizinhos.Add("Coreia");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[32].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[33].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("India");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Ural");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Siberia");
            Territorios[33].Nomes_Territórios_Vizinhos.Add("Mongolia");

            Territorios[34].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("China");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("Afeganistao");
            Territorios[34].Nomes_Territórios_Vizinhos.Add("Medio-Oriente");

            Territorios[35].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[35].Nomes_Territórios_Vizinhos.Add("India");
            Territorios[35].Nomes_Territórios_Vizinhos.Add("China");

            Territorios[36].Nomes_Territórios_Vizinhos.Add("Alaska");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Coreia");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Irkutsk");
            Territorios[36].Nomes_Territórios_Vizinhos.Add("Yakutsk");

            Territorios[37].Nomes_Territórios_Vizinhos.Add("Mongolia");
            Territorios[37].Nomes_Territórios_Vizinhos.Add("Kamchatka");

            Territorios[38].Nomes_Territórios_Vizinhos.Add("Sudeste Asiatico");
            Territorios[38].Nomes_Territórios_Vizinhos.Add("Nova Guine");
            Territorios[38].Nomes_Territórios_Vizinhos.Add("Australia Oeste");

            Territorios[39].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[39].Nomes_Territórios_Vizinhos.Add("Australia Oeste");
            Territorios[39].Nomes_Territórios_Vizinhos.Add("Australia Este");

            Territorios[40].Nomes_Territórios_Vizinhos.Add("Indonesia");
            Territorios[40].Nomes_Territórios_Vizinhos.Add("Australia Este");
            Territorios[40].Nomes_Territórios_Vizinhos.Add("Nova Guine");

            Territorios[41].Nomes_Territórios_Vizinhos.Add("Australia Oeste");
            Territorios[41].Nomes_Territórios_Vizinhos.Add("Nova Guine");

            //América do Norte
            Valores_dos_Continentes[0] = 5;
            //América do Sul
            Valores_dos_Continentes[1] = 2;
            //Europa
            Valores_dos_Continentes[2] = 5;
            //África
            Valores_dos_Continentes[3] = 3;
            //Ásia
            Valores_dos_Continentes[4] = 7;
            //Oceânia
            Valores_dos_Continentes[5] = 2;

            for(int ind=0;ind<42;ind++)
            {
                Territorios[ind].índice = ind;
            }
        }