//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; }
/// <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; } }
/// <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; } }