static void Main(string[] args) { var cores = Enum.GetValues(typeof(Cor)).Cast <Cor>(); int menu = 100; Cor jogador1; Cor jogador2; Console.WriteLine("--- Seja bem vindo ao XADREZ ONLINE ---"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("| Iniciar partida |"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("| Sair |"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("-------------------------------------------------"); Console.WriteLine("| Digite 0 para sair e 1 para iniciar a partida |"); Console.WriteLine("-------------------------------------------------"); Console.Write("> "); menu = int.Parse(Console.ReadLine()); while (menu != 0) { try { Console.WriteLine(); if (menu == 1) { Console.WriteLine("Selecione uma das cores abaixo:"); Console.WriteLine(); foreach (Cor c in cores) { Console.WriteLine("------------------------"); Console.WriteLine($"| Cor: {c}"); Console.WriteLine("------------------------"); } Console.WriteLine(); Console.Write("Digite a cor para o primeiro jogador: "); jogador1 = Enum.Parse <Cor>(Console.ReadLine()); foreach (Cor c in cores) { if (c != jogador1) { Console.WriteLine("------------------------"); Console.WriteLine($"| Cor: {c}"); Console.WriteLine("------------------------"); } } Console.WriteLine(); Console.Write("Digite a cor para o segundo jogador: "); jogador2 = Enum.Parse <Cor>(Console.ReadLine()); try { PartidaDeXadrez partida = new PartidaDeXadrez(jogador1, jogador2); while (!partida.terminada) { try { Console.Clear(); Tela.imprimirPartida(partida, jogador1, jogador2); Console.WriteLine(); Console.Write("Origem: "); Posicao origem = Tela.lerPosicaoXadrez().toPosicao(); partida.validarPosicaoDeOrigem(origem); bool[,] posicoesPossiveis = partida.tab.peca(origem).movimentosPossiveis(); Console.Clear(); Tela.imprimirTabuleiro(partida.tab, posicoesPossiveis); Console.WriteLine(); Console.Write("Destino: "); Posicao destino = Tela.lerPosicaoXadrez().toPosicao(); partida.validarPosicaoDeDestino(origem, destino); partida.realizaJogada(origem, destino); } catch (TabuleiroException e) { Console.WriteLine(e.Message); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Erro inexperado: " + e.Message); Console.WriteLine("Pressione enter para continuar..."); Console.ReadLine(); } } Console.Clear(); Tela.imprimirPartida(partida, jogador1, jogador2); } catch (TabuleiroException e) { Console.WriteLine(e.Message); } } } catch (Exception e) { Console.WriteLine("Erro inexperado: " + e.Message); } Console.ReadLine(); } }
public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis, PartidaDeXadrez partida) { Console.Clear(); ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlterado = ConsoleColor.DarkGray; Console.WriteLine(" a b c d e f g h"); Console.WriteLine(" =================="); for (var i = 0; i < tab.linhas; i++) { Console.Write(8 - i + " | "); for (var j = 0; j < tab.colunas; j++) { if (posicoesPossiveis[i, j]) { Console.BackgroundColor = fundoAlterado; } else { Console.BackgroundColor = fundoOriginal; } ImprimirPeca(tab.peca(i, j)); Console.BackgroundColor = fundoOriginal; } Console.Write(" | " + (8 - i)); Console.WriteLine(); } Console.WriteLine(" =================="); Console.WriteLine(" a b c d e f g h"); Console.BackgroundColor = fundoOriginal; mostrarPosicao = true; MostrarTipoEntrada(partida); }
public Peao(Tabuleiro tab, Cor cor, PartidaDeXadrez partida) : base(tab, cor) { this.partida = partida; }
static void Main(string[] args) { PartidaDeXadrez partida = new PartidaDeXadrez(); while (!partida.terminada) { try { Tela.ImprimirPartida(partida); Console.Write("Digite a posição de origem: "); Posicao origem = Tela.lerPosicaoXadrez().toPosicao(); partida.validarPosicaoDeOrigem(origem); Peca peca = partida.tab.peca(origem); bool[,] posicoesPossiveis = peca.movimentosPossiveis(); Console.Clear(); Tela.ImprimirTabuleiro(partida.tab, posicoesPossiveis); Console.WriteLine($"\nPeça selecionada: {peca} ({new PosicaoXadrez(origem)})"); if (peca is Rei) { Rei rei = (Rei)peca; if (rei.roquePequenoDisponivel()) { Tela.Imprimir("Roque pequeno disponível!\n", ConsoleColor.Green); } if (rei.roqueGrandeDisponivel()) { Tela.Imprimir("Roque grande disponível!\n", ConsoleColor.Green); } } else if (peca is Peao) { Peao peao = (Peao)peca; if (peao.enPassantEsquerdaDisponivel()) { Tela.Imprimir("En passant à esquerda disponível!\n", ConsoleColor.Green); } if (peao.enPassantDireitaDisponivel()) { Tela.Imprimir("En passant à direita disponível!\n", ConsoleColor.Green); } } Console.Write("Digite a posição de destino: "); Posicao destino = Tela.lerPosicaoXadrez().toPosicao(); partida.validarPosicaoDeDestino(origem, destino); partida.realizarJogada(origem, destino); } catch (TabuleiroException e) { Console.Clear(); Tela.ImprimirTabuleiro(partida.tab); Tela.ImprimirErro(e); } catch (Exception) { Console.Clear(); Tela.ImprimirTabuleiro(partida.tab); Tela.ImprimirErro("Erro."); } } Tela.ImprimirVitoria(partida); Console.ReadKey(); }