// retorna os possíveis movimentos de apenas uma peça public static List <Jogada> PossiveisMovimentosUmaPeca(int[,] tabuleiro, int x, int y) { int jogador = Tipos.pegaJogador(tabuleiro[x, y]); int[] valoresPecas = GetValoresPecas(jogador); // se for dama if (tabuleiro[x, y] == valoresPecas[0]) { return(MovimentosDama(tabuleiro, x, y, valoresPecas[1], valoresPecas[2])); } List <Jogada> jogadas = new List <Jogada>(); List <Jogada> captura = LeiDaMaioria(tabuleiro, x, y, valoresPecas[1], valoresPecas[2], null); // se teve alguma jogada com captura / peças comida if (captura != null) { foreach (Jogada jogada in captura) { // verifica se a peça vira dama ao final do movimento int [] ultimoMovimento = jogada.movimentos[jogada.movimentos.Count() - 1]; if (jogador == 1) { if (ultimoMovimento[0] == 7) { jogada.virouDama = true; } } else if (ultimoMovimento[0] == 0) { jogada.virouDama = true; } // adiciona a jogada de captura como jogada possível jogadas.Add(jogada); } return(jogadas); } Jogada novaJogada; int[] posPeca = new int[2] { x, y }; if (jogador == 1) { if ((x + 1 < 8 && y + 1 < 8) && Tipos.isVazio(tabuleiro[x + 1, y + 1])) { novaJogada = new Jogada(posPeca); novaJogada.movimentos.Add(new int[2] { x + 1, y + 1 }); jogadas.Add(novaJogada); // verifica se virou dama if (jogador == 1) { if (x + 1 == 7) { novaJogada.virouDama = true; } } } if ((x + 1 < 8 && y - 1 >= 0) && Tipos.isVazio(tabuleiro[x + 1, y - 1])) { novaJogada = new Jogada(posPeca); novaJogada.movimentos.Add(new int[2] { x + 1, y - 1 }); jogadas.Add(novaJogada); if (jogador == 1) { if (x + 1 == 7) { novaJogada.virouDama = true; } } } } else { if ((x - 1 >= 0 && y + 1 < 8) && Tipos.isVazio(tabuleiro[x - 1, y + 1])) { novaJogada = new Jogada(posPeca); novaJogada.movimentos.Add(new int[2] { x - 1, y + 1 }); jogadas.Add(novaJogada); // verifica se virou dama if (jogador == 2) { if (x - 1 == 0) { novaJogada.virouDama = true; } } } if ((x - 1 >= 0 && y - 1 >= 0) && Tipos.isVazio(tabuleiro[x - 1, y - 1])) { novaJogada = new Jogada(posPeca); novaJogada.movimentos.Add(new int[2] { x - 1, y - 1 }); jogadas.Add(novaJogada); if (jogador == 2) { if (x - 1 == 0) { novaJogada.virouDama = true; } } } } return(jogadas); }