public void executaMov(posicao origem, posicao destino) { Peca p = tab.retirarPeca(origem); p.incrementarQntdMov(); Peca pecaCapturada = tab.retirarPeca(destino); tab.colocarPeca(p, destino); }
public override bool[,] movimentosPosiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; posicao Pos = new posicao(0, 0); // acima Pos.definirValores(posicao.linha - 1, posicao.coluna); while (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor) { break; } Pos.linha = Pos.linha - 1; } // baixo Pos.definirValores(posicao.linha + 1, posicao.coluna); while (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor) { break; } Pos.linha = Pos.linha + 1; } // direita Pos.definirValores(posicao.linha, posicao.coluna + 1); while (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor) { break; } Pos.linha = Pos.coluna + 1; } // esquerda Pos.definirValores(posicao.linha, posicao.coluna - 1); while (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor) { break; } Pos.linha = Pos.coluna - 1; } return(mat); }
public object Desempilha() { if (primeiro == null) { throw new InvalidOperationException("A pilha esta vazia"); } object resultado = primeiro.item; primeiro = primeiro.proximo; return(resultado); }
static void Main(string[] args) { try { PartidaDeXadrez partida = new PartidaDeXadrez(); while (!partida.terminada) { Console.Clear(); Tela.imprimirTab(partida.tab); Console.WriteLine(); Console.Write("Posição de origem da peça: "); posicao origem = Tela.lerPosicaoXadrez().toPosicao(); Console.Write("Posição de destino da peça: "); posicao destino = Tela.lerPosicaoXadrez().toPosicao(); partida.executaMov(origem, destino); } } catch (TabuleiroExeption e) { Console.WriteLine(e.Message); } }
public void Empilha(object item) { primeiro = new posicao(primeiro, item); }
public posicao(posicao proximo, object item) { this.proximo = proximo; this.item = item; }
public override bool[,] movimentosPosiveis() { bool[,] mat = new bool[tab.linhas, tab.colunas]; posicao Pos = new posicao(0, 0); // acima Pos.definirValores(posicao.linha - 1, posicao.coluna); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // nordeste Pos.definirValores(posicao.linha - 1, posicao.coluna + 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // direita Pos.definirValores(posicao.linha, posicao.coluna + 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // sudeste Pos.definirValores(posicao.linha + 1, posicao.coluna + 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // baixo Pos.definirValores(posicao.linha + 1, posicao.coluna); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // sudoeste Pos.definirValores(posicao.linha + 1, posicao.coluna - 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // esquerda Pos.definirValores(posicao.linha, posicao.coluna - 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } // noroeste Pos.definirValores(posicao.linha - 1, posicao.coluna - 1); if (tab.posicaoValida(Pos) && podeMover(Pos)) { mat[Pos.linha, Pos.coluna] = true; } return(mat); }
private bool podeMover(posicao pos) { Peca p = tab.Peca(pos); return(p == null || p.cor != this.cor); }
public void colocarPeca(Peca p, posicao pos) { pecas[pos.linha, pos.coluna] = p; p.posicao = pos; }