public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis) { ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlterado = ConsoleColor.DarkGray; for (int i = 0; i < tab.Linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.Colunas; j++) { if (posicoesPossiveis[i, j]) { Console.BackgroundColor = fundoAlterado; } else { Console.BackgroundColor = fundoOriginal; } imprimePeca(tab.peca(i, j)); Console.BackgroundColor = fundoOriginal; } Console.WriteLine(); } Console.WriteLine(" A B C D E F G H"); Console.BackgroundColor = fundoOriginal; }
public static void imprimirTabu(Tabuleiro t, bool[,] possiveispos) { ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlter = ConsoleColor.DarkGray; for (int i = 0; i < t.linhas; i++) { Console.Write(t.linhas - i + " "); for (int j = 0; j < t.colunas; j++) { if (possiveispos[i, j]) { Console.BackgroundColor = fundoAlter; } else { Console.BackgroundColor = fundoOriginal; } imprimePeca(t.peca(i, j)); Console.BackgroundColor = fundoOriginal; } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h "); Console.BackgroundColor = fundoOriginal; }
public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis) { ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlterado = ConsoleColor.DarkGray; for (int i = 0; i < tab.linhas; i++) { ConsoleColor back = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Blue; Console.Write(8 - i + " "); Console.ForegroundColor = back; for (int 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.WriteLine(); } ConsoleColor aux = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" a b c d e f g h "); Console.ForegroundColor = aux; Console.BackgroundColor = fundoOriginal; }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna]; Posicao pos = new Posicao(0, 0); //no pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna - 1); } //so pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna - 1); } //ne pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha + 1, pos.Coluna + 1); } //se pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.DefinirValores(pos.Linha - 1, pos.Coluna + 1); } return(matriz); }
public void RealizaJogada(Posicao origem, Posicao destino) { Peca PecaCapturada = executaMovimento(origem, destino); if (EstaEmCheque(JogadorAtual)) { DesfazMovimento(origem, destino, PecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } Peca p = Tabuleiro.peca(destino); //#jogada especial promocao if (p is Peao) { if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7)) { p = Tabuleiro.RetirarPeca(destino); Pecas.Remove(p); Peca dama = new Dama(Tabuleiro, p.Cor); Tabuleiro.ColocarPeca(dama, destino); Pecas.Add(dama); } } if (EstaEmCheque(Adversaria(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (TestaXequeMate(Adversaria(JogadorAtual))) { Terminada = true; } else { Turno++; MudaJogador(); } //#jogada especial en passant if (p is Peao && (destino.Linha == origem.Linha - 2) || destino.Linha == origem.Linha + 2) { VulneravelEnPassant = p; } else { VulneravelEnPassant = null; } }
public void realizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = executaMovimento(origem, destino); if (estaEmXeque(JogadorAtual)) { desfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode ser por em Xeque!"); } Peca p = Tabuleiro.peca(destino); // #JogadaEspecial Promoção if (p is Peao) { if (p.Cor == Cor.Branca && destino.Linha == 0 || p.Cor == Cor.Preta && destino.Linha == 7) { p = Tabuleiro.retirarPeca(destino); Pecas.Remove(p); Peca dama = new Dama(Tabuleiro, p.Cor); Tabuleiro.colocarPeca(dama, destino); Pecas.Add(dama); } } if (estaEmXeque(adversaria(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (testeXequeMate(adversaria(JogadorAtual))) { Terminada = true; } else { Turno++; mudaJogador(); } // #Jogadaespecial en passant if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2)) { VulneravelEnPassant = p; } else { VulneravelEnPassant = null; } }
public static void mostrarTabuleiro(Tabuleiro tabuleiro) { for (int i = 0; i < tabuleiro.linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tabuleiro.colunas; j++) { if (tabuleiro.peca(i, j) != null) { imprimir(tabuleiro.peca(i, j)); Console.Write(" "); } else { Console.Write("- "); } } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h"); }
public static void imprimirTabuleiro(Tabuleiro tab) { for (int i = 0; i < tab.Linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.Colunas; j++) { imprimePeca(tab.peca(i, j)); } Console.WriteLine(); } Console.WriteLine(" A B C D E F G H"); }
public static void imprimirTabuleiro(Tabuleiro tab) { for (int i = 0; i < tab.linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.colunas; j++) { imprimirPeca(tab.peca(i, j)); } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h"); }
public static void ImprimirTabuleiro(Tabuleiro tab) // Estático para não ser instanciado. { for (int i = 0; i < tab.linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.colunas; j++) { imprimirPeca(tab.peca(i, j)); } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h"); }
public static void imrpimirTabuleiro(Tabuleiro tab) { for (int i = 0; i < tab.linhas; i++) { Console.Write($"{8 - i} "); for (int j = 0; j < tab.colunas; j++) { ImprimirPeca(tab.peca(i, j)); } Console.WriteLine(); } Console.WriteLine(" A B C D E F G H"); }
public override bool[,] movimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); //acima pos.definirValores(Posicao.Linha - 1, Posicao.Coluna); while (Tabuleiro.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha - 1; } //abaixo pos.definirValores(Posicao.Linha + 1, Posicao.Coluna); while (Tabuleiro.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.Linha = pos.Linha + 1; } //direita pos.definirValores(Posicao.Linha, Posicao.Coluna + 1); while (Tabuleiro.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna + 1; } //esquerda pos.definirValores(Posicao.Linha, Posicao.Coluna - 1); while (Tabuleiro.posicaoValida(pos) && podeMover(pos)) { mat[pos.Linha, pos.Coluna] = true; if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor) { break; } pos.Coluna = pos.Coluna - 1; } return(mat); }
public static void imprimirTabuleiro(Tabuleiro tab) { //print a matrix (chessboard) on the screen for (int i = 0; i < tab.linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.colunas; j++) { imprimirPeca(tab.peca(i, j)); } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h"); }
public void validarPosicaoDeOrigem(Posicao pos) { if (Tabuleiro.peca(pos) == null) { throw new TabuleiroException("Não existe peça na posição de origem escolhida!"); } if (JogadorAtual != Tabuleiro.peca(pos).Cor) { throw new TabuleiroException("A peça de origem escolhida não é sua!"); } if (!Tabuleiro.peca(pos).existeMovimentosPossiveis()) { throw new TabuleiroException("Não há movimentos possíveis para a peça de origem escolhida!"); } }
public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis) { ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlterado = ConsoleColor.DarkGray; for (int i = 0; i < tab.linhas; i++) { Console.Write(8 - i + " "); for (int j = 0; j < tab.colunas; j++) { Console.BackgroundColor = (posicoesPossiveis[i, j]) ? fundoAlterado : fundoOriginal; imprimirPeca(tab.peca(i, j)); Console.BackgroundColor = fundoOriginal; } Console.WriteLine(); } Console.WriteLine(" a b c d e f g h"); Console.BackgroundColor = fundoOriginal; }
public static void imprimirTabuleiro(Tabuleiro tab) { for (int i = 0; i < tab.linhas; i++) { ConsoleColor back = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Blue; Console.Write(8 - i + " "); Console.ForegroundColor = back; for (int j = 0; j < tab.colunas; j++) { imprimirPeca(tab.peca(i, j)); } Console.WriteLine(); } ConsoleColor aux = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" a b c d e f g h "); Console.ForegroundColor = aux; }
public static void exibirTabuleiro(Tabuleiro tabuleiro) { ConsoleColor aux; for (int i = 0; i < tabuleiro.linhas; i++) { aux = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.DarkCyan; Console.Write(8 - i + " "); Console.ForegroundColor = aux; for (int j = 0; j < tabuleiro.colunas; j++) { exibirPeca(tabuleiro.peca(i, j)); } Console.WriteLine(); } aux = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.DarkCyan; Console.Write(" A B C D E F G H"); Console.ForegroundColor = aux; }
public static void ImprimirTabuleiro(Tabuleiro tab, bool[,] possiveis) { ConsoleColor fundoOriginal = Console.BackgroundColor; ConsoleColor fundoAlterado = ConsoleColor.DarkBlue; int row = tab.Linhas; char col = 'A'; Console.WriteLine(); for (int i = 0; i < tab.Linhas; i++) { Console.Write($"{row} "); for (int j = 0; j < tab.Linhas; j++) { if (possiveis[i, j]) { Console.BackgroundColor = fundoAlterado; } else { Console.BackgroundColor = fundoOriginal; } ImprimePeca(tab.peca(i, j)); } Console.WriteLine(); row--; Console.BackgroundColor = fundoOriginal; } Console.Write("\n "); for (int i = 0; i < tab.Colunas; i++) { Console.Write(col + " "); col++; } }
private bool Livre(Posicao pos) { return(Tabuleiro.peca(pos) == null); }
//Imprimir tabuleiro cor dos movimentos possiveis public static void ImprimirTabuleiro(Tabuleiro tab, bool[,] posicosPossiveis) { ConsoleColor fundoOrig = Console.BackgroundColor; ConsoleColor fundoAlt = ConsoleColor.White; ConsoleColor fundoAtual = Console.BackgroundColor; ConsoleColor fundoNovo = ConsoleColor.Yellow; Console.WriteLine(); for (int i = 0; i < tab.Linhas; i++) { Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write(" "); Console.Write(8 - i + " "); for (int j = 0; j < tab.Colunas; j++) { if (i == j) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 0) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 1) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 2) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 3) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 4) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 5) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 6) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 7) { Console.BackgroundColor = fundoAlt; } else { Console.BackgroundColor = ConsoleColor.DarkGray; } if (posicosPossiveis[i, j]) { Console.BackgroundColor = fundoNovo; } ImprimirPecas(tab.peca(i, j)); Console.Write(" "); } Console.WriteLine(); Console.BackgroundColor = fundoOrig; } Console.WriteLine(" a b c d e f g h"); }
public static void ImprimirTabuleiro(Tabuleiro tab) { ConsoleColor fundoOrig = Console.BackgroundColor; ConsoleColor fundoAlt = ConsoleColor.White; Console.WriteLine(); for (int i = 0; i < tab.Linhas; i++) { Console.ForegroundColor = ConsoleColor.DarkGray; Console.Write(" "); Console.Write(8 - i + " "); for (int j = 0; j < tab.Colunas; j++) { Console.Write(""); if (i == j) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 0) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 1) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 2) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 3) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 4) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 5) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 0 && j == 6) { Console.BackgroundColor = fundoAlt; } else if (i % 2 == 1 && j == 7) { Console.BackgroundColor = fundoAlt; } else { Console.BackgroundColor = ConsoleColor.DarkGray; } //Console.BackgroundColor = fundoOrig; ImprimirPecas(tab.peca(i, j)); Console.Write(" "); } Console.WriteLine(); Console.BackgroundColor = fundoOrig; } Console.WriteLine(" a b c d e f g h"); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna]; Posicao pos = new Posicao(0, 0); //acima pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //ne pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //abaixo pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //se pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //direita pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //no pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //so pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //esquerda pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //#jogada especial roque if (QtdMovimento == 0 && !Partida.Xeque) { //#jogada especial roque pequeno Posicao PosT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreParaRoque(PosT1)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2); if (Tabuleiro.peca(p1) == null && Tabuleiro.peca(p2) == null) { matriz[Posicao.Linha, Posicao.Coluna + 2] = true; } } //#jogada especial roque grande Posicao PosT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreParaRoque(PosT2)) { Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna - 1); Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna - 2); Posicao p3 = new Posicao(Posicao.Linha, Posicao.Coluna - 3); if (Tabuleiro.peca(p1) == null && Tabuleiro.peca(p2) == null && Tabuleiro.peca(p3) == null) { matriz[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(matriz); }
private bool TesteTorreParaRoque(Posicao pos) { Peca p = Tabuleiro.peca(pos); return(p != null && p is Torre && p.Cor == Cor && p.QtdMovimento == 0); }
public bool PodeMover(Posicao posicao) { Peca p = Tabuleiro.peca(posicao); return(p == null || p.Cor != Cor); }
public override bool[,] MovimentosPossiveis() { bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna]; Posicao pos = new Posicao(0, 0); if (Cor == Cor.Branca) { pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna); Posicao p2 = new Posicao(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && Livre(p2) && QtdMovimento == 0) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //#jogada especial en passant if (Posicao.Linha == 3) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.peca(esquerda) == Partida.VulneravelEnPassant) { matriz[esquerda.Linha - 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.peca(direita) == Partida.VulneravelEnPassant) { matriz[direita.Linha - 1, direita.Coluna] = true; } } } else { pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna); Posicao p2 = new Posicao(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && QtdMovimento == 0 && Livre(p2)) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { matriz[pos.Linha, pos.Coluna] = true; } //#jogada especial en passant if (Posicao.Linha == 4) { Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.peca(esquerda) == Partida.VulneravelEnPassant) { matriz[esquerda.Linha + 1, esquerda.Coluna] = true; } Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.peca(direita) == Partida.VulneravelEnPassant) { matriz[direita.Linha + 1, direita.Coluna] = true; } } } //acima return(matriz); }
private bool podeMover(Posicao posicao) { Peca p = Tabuleiro.peca(posicao); return(p == null || p.Cor != this.Cor); }
public bool ExisteInimigo(Posicao pos) { Peca p = Tabuleiro.peca(pos); return(p != null && p.Cor != Cor); }