public void RealizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = this.ExecutaMovimento(origem, destino); if (EstaEmXeque(JogadorAtual)) { DesfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } CorEnum adversario = Adversario(JogadorAtual); if (EstaEmXeque(adversario)) { this.PartidaEmXeque = true; } else { this.PartidaEmXeque = false; } if (this.VerificaXequeMate(adversario)) { this._terminada = true; } else { this._turno++; this.MudaJogador(); } }
public Peca(Tabuleiro tabuleiro, CorEnum cor) { this.Posicao = null; this.Tabuleiro = tabuleiro; this.Cor = cor; this.QuantidadeMovimentos = 0; }
public bool VerificaXequeMate(CorEnum cor) { if (!this.EstaEmXeque(cor)) { return(false); } foreach (Peca x in this.PecasEmJogo(cor)) { bool[,] mat = x.MovimentosPossiveis(); for (int i = 0; i < this._tabuleiro.Linhas; i++) { for (int j = 0; j < this._tabuleiro.Colunas; j++) { if (mat[i, j]) { Posicao origem = x.Posicao; Posicao destino = new Posicao(i, j); Peca pecaCapturada = this.ExecutaMovimento(origem, destino); bool testeXeque = this.EstaEmXeque(cor); this.DesfazMovimento(origem, destino, pecaCapturada); if (!testeXeque) { return(false); } } } } } return(true); }
public PartidaDeXadrez() { this._tabuleiro = new Tabuleiro(8, 8); this._turno = 1; this._jogadorAtual = CorEnum.Branca; this._terminada = false; PartidaEmXeque = false; Pecas = new HashSet <Peca>(); Capturadas = new HashSet <Peca>(); ColocarPecas(); }
private Peca GetRei(CorEnum cor) { foreach (Peca x in PecasEmJogo(cor)) { if (x is Rei) { return(x); } } return(null); }
private void MudaJogador() { if (this._jogadorAtual == CorEnum.Branca) { this._jogadorAtual = CorEnum.Preta; } else { this._jogadorAtual = CorEnum.Branca; } }
public HashSet <Peca> PecasEmJogo(CorEnum cor) { HashSet <Peca> aux = new HashSet <Peca>(); foreach (Peca x in this.Pecas) { if (x.Cor == cor) { aux.Add(x); } } aux.ExceptWith(this.PecasCapturadas(cor)); return(aux); }
public HashSet <Peca> PecasCapturadas(CorEnum cor) { HashSet <Peca> aux = new HashSet <Peca>(); foreach (Peca x in this.Capturadas) { if (x.Cor == cor) { aux.Add(x); } } return(aux); }
public bool EstaEmXeque(CorEnum cor) { Peca rei = GetRei(cor); if (rei == null) { throw new TabuleiroException($"Não tem rei da cor {cor} no tabuleiro!"); } foreach (Peca x in PecasEmJogo(Adversario(cor))) { bool[,] matriz = x.MovimentosPossiveis(); if (matriz[rei.Posicao.Linha, rei.Posicao.Coluna]) { return(true); } } return(false); }
private CorEnum Adversario(CorEnum cor) { return(cor == CorEnum.Branca ? CorEnum.Preta : CorEnum.Branca); }
public Rei(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }
public Dama(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }
public Cavalo(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }
public Torre(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }
public Peao(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }
public Bispo(Tabuleiro.Tabuleiro tabuleiro, CorEnum cor) : base(tabuleiro, cor) { }