public Torre(Tabuleiro tab, Cor cor) : base(cor, tab) { }
public Rei(Tabuleiro tab, Cor cor, PartidaDeXadrez partida) : base(tab, cor) { this.partida = partida; }
public Peca(Tabuleiro tabuleiro, Cor cor) { this.tabuleiro = tabuleiro; this.cor = cor; QtdMovimento = 0; }
public Dama(Tabuleiro tab, Cor cor) : base(tab, cor) { }
public Rainha(Tabuleiro tab, Color cor) : base(tab, cor) { }
public Rei(Cor cor, Tabuleiro tab) : base(cor, tab) { }
private bool Livre(Posicao pos) { return(Tabuleiro.peca(pos) == null); }
protected List <Posicao> Diagonais() { List <Posicao> posicoesPossiveis = new List <Posicao>(); Posicao pLinha; int i = 0; for (int linha = Posicao.Linha - 1; linha >= 0; linha--) { i++; pLinha = new Posicao(linha, Posicao.Coluna - i); if (Tabuleiro.PosicaoValida(pLinha)) { posicoesPossiveis.Add(pLinha); } else { break; } if (CheckPararMovimento(pLinha)) { break; } } i = 0; for (int linha = Posicao.Linha - 1; linha >= 0; linha--) { i++; pLinha = new Posicao(linha, Posicao.Coluna + i); if (Tabuleiro.PosicaoValida(pLinha)) { posicoesPossiveis.Add(pLinha); } else { break; } if (CheckPararMovimento(pLinha)) { break; } } i = 0; for (int linha = Posicao.Linha + 1; linha < Tabuleiro.Linhas; linha++) { i++; pLinha = new Posicao(linha, Posicao.Coluna - i); if (Tabuleiro.PosicaoValida(pLinha)) { posicoesPossiveis.Add(pLinha); } else { break; } if (CheckPararMovimento(pLinha)) { break; } } i = 0; for (int linha = Posicao.Linha + 1; linha < Tabuleiro.Linhas; linha++) { i++; pLinha = new Posicao(linha, Posicao.Coluna + i); if (Tabuleiro.PosicaoValida(pLinha)) { posicoesPossiveis.Add(pLinha); } else { break; } if (CheckPararMovimento(pLinha)) { break; } } return(posicoesPossiveis); }
public Peao(Tabuleiro tab, Cor cor, PartidaXadrez partida) : base(cor, tab) { Partida = partida; }
private bool ExisteInimigo(Posicao pos) { Peca p = Tabuleiro.peca(pos); return(p != null && p.Cor != Cor); }
public Peao(Tabuleiro tab, Cor cor) : base(tab, cor) { }
static void Main(string[] args) { Tabuleiro tabuleiro = new Tabuleiro(8, 8); }
public Cavalo(Tabuleiro tab, Cor cor) : base(cor, tab) { }
private void botaoOKEscolhaCor_Click(object sender, System.EventArgs e) { //Modo de jogo clássico if(this.radioButtonModo1.Checked) { Algoritmos alg = new Algoritmos(); if(alg.ehValido(codigo.getCodigo())) { painelPB = new PainelPB(0,252); SolidBrush[] sbrs = codigo.getCodigo(); codigo = new CodigoCores(30,9,Color.Black); codigo.setCodigo(sbrs); tabuleiro = new Tabuleiro(); tabScore = new TabuleiroScore(0,0); this.panelCifradorCodSecreto.Visible = true; this.panelEscolhaCor.Visible = false; this.panelCifrador.Visible = true; this.panelCifradorTabScore.Visible = true; this.panelCifrador.Invalidate(); contadorBolas = 1; comClassica.enviarUsername(this.textBoxUsername.Text); } else { MessageBox.Show("Código inválido!"); contadorBolas = 1; codigo = new CodigoCores(70,56,Color.Black); this.panelEscolhaCor.Invalidate(); } contadorBolas = 1; } //Modo de jogo simultâneo if(this.radioButtonModo2.Checked) { Algoritmos alg = new Algoritmos(); if(alg.ehValido(codigo.getCodigo())) { com.enviarUsername(this.textBoxUsername.Text); com.enviarCodigo(codigo.getCodigo()); while(true) { if(com.getCodRecebido()) { painel = new PainelCores(0,252); codigo = new CodigoCores(30,9,Color.Black); tabuleiro = new Tabuleiro(); tabScore = new TabuleiroScore(); this.panelEscolhaCor.Visible = false; this.panelDecifrador.Visible = true; break; } } } else MessageBox.Show("Código inválido!"); contadorBolas = 1; codigo = new CodigoCores(30,9,Color.Black); this.panelEscolhaCor.Invalidate(); } }
public override bool[,] MovimentosPossiveis() { bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao pos = new Posicao(0, 0); if (Cor == Cor.Branca) { pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && QuantidadeMovimento == 0) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[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) { mat[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) { mat[direita.Linha - 1, direita.Coluna] = true; } } } else { pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna); if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && QuantidadeMovimento == 0) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[pos.Linha, pos.Coluna] = true; } pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos)) { mat[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) { mat[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) { mat[direita.Linha + 1, direita.Coluna] = true; } } } return(mat); }
private void buttonSairClassico_Click(object sender, System.EventArgs e) { this.radioButtonClient.Checked = false; this.radioButtonServer.Checked = false; this.radioButtonModo1.Checked = false; this.radioButtonModo2.Checked = false; this.panelEndIp.Visible = false; this.panelResultadosClassico.Visible = false; this.labelResultadosAdversario.Text = ""; this.labelResultadosJogador.Text = ""; this.panelInicial.Visible = true; correUmaVez = false; contadorBolas = 1; nJogada = 0; jogosJogados = 0; codigoSecreto = new SolidBrush[4]; tabuleiro = new Tabuleiro(); tabScore = new TabuleiroScore(); comClassica.fechaLigacao(); }
public Dama(Cor cor, Tabuleiro tab) : base(cor, tab) { }
public Rei(Tabuleiro tabuleiro, Cor cor, PartidaDeXadrez partida) : base(cor, tabuleiro) { _partida = partida; }
public void ColocarNovaPeca(Peca peca, char coluna, int linha) { Tabuleiro.ColocarPeca(peca, new PosicaoTabuleiro(coluna, linha).ToPosicao()); _pecasEmJogo.Add(peca); }
public Torre(Tabuleiro tab, Cor cor) : base(tab, cor) { }
public void Jogada(Posicao origem, Posicao destino) { Peca captura = MoverPeca(origem, destino); if (EmXeque(JogadorAtual)) { ReverterJogada(origem, destino, captura); throw new TabuleiroException("Impossível se colocar em cheque!"); } Peca p = Tabuleiro.Peca(destino); //PROMOÇÃO DE PEÇA if (p is Peao) { if (p.Cor == Cor.Branco && destino.Linha == 0 || p.Cor == Cor.Preto && destino.Linha == 7) { Console.WriteLine(); Console.WriteLine("Possível promoção!"); Console.Write("Escolha [T]Torre, [B]Bispo, [C]Cavalo ou [D]Dama: "); string promo = Console.ReadLine().ToLower(); switch (promo) { case "t": Peca T = new Torre(Tabuleiro, p.Cor); Tabuleiro.RetirarPeca(destino); pecas.Remove(p); Tabuleiro.ColocarPeca(T, destino); pecas.Add(T); break; case "b": Peca B = new Bispo(Tabuleiro, p.Cor); Tabuleiro.RetirarPeca(destino); pecas.Remove(p); Tabuleiro.ColocarPeca(B, destino); pecas.Add(B); break; case "c": Peca C = new Cavalo(Tabuleiro, p.Cor); Tabuleiro.RetirarPeca(destino); pecas.Remove(p); Tabuleiro.ColocarPeca(C, destino); pecas.Add(C); break; case "d": Peca D = new Dama(Tabuleiro, p.Cor); Tabuleiro.RetirarPeca(destino); pecas.Remove(p); Tabuleiro.ColocarPeca(D, destino); pecas.Add(D); break; } } } if (EmXeque(GetCorAdversaria(JogadorAtual))) { JogadorEmXeque = true; } else { JogadorEmXeque = false; } if (XequeMate(GetCorAdversaria(JogadorAtual))) { Finalizada = true; } else { Turno++; MudarJogador(); } //EN PASSANT if (p is Peao && (destino.Linha == origem.Linha + 2 || destino.Linha == origem.Linha - 2)) { EnPassant = p; } else { EnPassant = null; } }
public Torre(Cor cor, Tabuleiro tab) : base(cor, tab) { }
private void NovaPeca(Peca peca, PosicaoXadrez posicao) { Tabuleiro.ColocarPeca(peca, posicao.ToPosicao()); pecas.Add(peca); }
public Bispo(Tabuleiro tabuleiro, Cor cor) : base(tabuleiro, cor) { }
public void TesteRoque(int i, int f, bool moveu, int jogador, int codtorre, bool xeq, int x, int y) { Partida p = new Partida(); Tabuleiro t = p.Tabuleiro; int linha = t.Tamanho - 1; Movimento mteste; // OBS :assert's comentados são os de quando os testes verficavam movimentações no tabuleiro! // agora os testes verficam movimentos possiveis retornados pela função // eu não apaguei esses casos para caso seja necessário utilizar como referencia depois. if (jogador == 1) { Debug.Log("Jogador de baixo!"); linha = 0; } Torre torre; Rei rtemp; if (xeq) { removeIntervalo(p, jogador, 1, 4); // deixa somente o rei e as torres nas peças especiais do aliado removeIntervalo(p, jogador, 5, 7); criasituacao(p, x, y, linha); // após isso realizar o roque para esse caso de testes já que o esperado é que as peças se mantenham no mesmo lugar! // NOTE QUE ESSES CASOS ASSIM COMO OS OUTROS NÃO CONSIDERAM QUE AS TORRES FORAM CAPTURADAS(ATÉ PORQUE O METODO NÃO PODERIA SER EXECUTADO POIS ELAS ESTARIAM FORA DO JOGO) if (codtorre != 0) { codtorre = codtorre - 1; } torre = (Torre)t.tabuleiro[codtorre, linha].PecaAtual; mteste = torre.Roque(p.Tabuleiro); /* * Assert.IsNotNull(t.tabuleiro[0,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[7,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[4,linha].PecaAtual); * * Assert.IsInstanceOf<Torre>(t.tabuleiro[0,linha].PecaAtual); * Assert.IsInstanceOf<Torre>(t.tabuleiro[7,linha].PecaAtual); * Assert.IsInstanceOf<Rei>(t.tabuleiro[4,linha].PecaAtual); */ Assert.IsNull(mteste); return; } if ((Math.Abs(i - f) == 3 && codtorre == 0) || (Math.Abs(i - f) == 2 && codtorre != 0)) // note que tabuleiros que podem ocorrer roque tem que ter esse espaçamento pelo menos entre torre e rei { removeIntervalo(p, jogador, i, f); // cria o tabuleiro "ideal" para o teste // criar tabuleiro resposta //Torre ttemp; // copia = (Casa[,]) t.tabuleiro.Clone(); // tabuleiro copia sofrerá alterações para ser a "resposta" // rtemp = (Rei) copia[linha,4].PopPeca(); if (codtorre == 0 && !moveu) { Debug.Log("talvez possa fazer roque"); torre = (Torre)t.tabuleiro[codtorre, linha].PecaAtual; mteste = torre.Roque(p.Tabuleiro); /* * Assert.IsNull(t.tabuleiro[codtorre,linha].PecaAtual); * Assert.IsNull(t.tabuleiro[4,linha].PecaAtual); * * Assert.IsInstanceOf<Torre>(t.tabuleiro[codtorre+3,linha].PecaAtual); * Assert.IsInstanceOf<Rei>(t.tabuleiro[4-2,linha].PecaAtual); */ Assert.IsNotNull(mteste); // movimento do rei Assert.AreEqual(mteste.origem.PosX, 4); Assert.AreEqual(mteste.origem.PosY, linha); Assert.AreEqual(mteste.destino.PosX, 4 - 2); Assert.AreEqual(mteste.destino.PosY, linha); // movimento da torre Assert.AreEqual(mteste.movimentoExtra.origem.PosX, codtorre); Assert.AreEqual(mteste.movimentoExtra.origem.PosY, linha); Assert.AreEqual(mteste.movimentoExtra.destino.PosX, codtorre + 3); Assert.AreEqual(mteste.movimentoExtra.destino.PosY, linha); } else if (codtorre != 0 && !moveu) { codtorre = codtorre - 1; Debug.Log("talvez possa fazer roque"); torre = (Torre)t.tabuleiro[codtorre, linha].PecaAtual; mteste = torre.Roque(p.Tabuleiro); //torre.RealizaMovimento(m); /* * Assert.IsNull(t.tabuleiro[codtorre,linha].PecaAtual); * Assert.IsNull(t.tabuleiro[4,linha].PecaAtual); * * Assert.IsInstanceOf<Torre>(t.tabuleiro[codtorre-2,linha].PecaAtual); * Assert.IsInstanceOf<Rei>(t.tabuleiro[4+2,linha].PecaAtual); */ Assert.IsNotNull(mteste); // movimento do rei Assert.AreEqual(mteste.origem.PosX, 4); Assert.AreEqual(mteste.origem.PosY, linha); Assert.AreEqual(mteste.destino.PosX, 4 + 2); Assert.AreEqual(mteste.destino.PosY, linha); // movimento da torre Assert.AreEqual(mteste.movimentoExtra.origem.PosX, codtorre); Assert.AreEqual(mteste.movimentoExtra.origem.PosY, linha); Assert.AreEqual(mteste.movimentoExtra.destino.PosX, codtorre - 2); Assert.AreEqual(mteste.movimentoExtra.destino.PosY, linha); } else if (moveu) { Debug.Log("Não pode fazer roque"); if (codtorre != 0) { codtorre = codtorre - 1; } torre = (Torre)t.tabuleiro[codtorre, linha].PecaAtual; p.Tabuleiro.tabuleiro[0, linha].PecaAtual.primeiraJogada = false; p.Tabuleiro.tabuleiro[7, linha].PecaAtual.primeiraJogada = false; p.Tabuleiro.tabuleiro[4, linha].PecaAtual.primeiraJogada = false; mteste = torre.Roque(p.Tabuleiro); /* * Assert.IsNotNull(t.tabuleiro[0,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[7,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[4,linha].PecaAtual); * * Assert.IsInstanceOf<Torre>(t.tabuleiro[0,linha].PecaAtual); * Assert.IsInstanceOf<Torre>(t.tabuleiro[7,linha].PecaAtual); * Assert.IsInstanceOf<Rei>(t.tabuleiro[4,linha].PecaAtual); */ Assert.IsNull(mteste); } } else // caso em que não pode fazer roque. { Debug.Log("nao pode fazer roque"); torre = (Torre)t.tabuleiro[0, linha].PecaAtual; if (codtorre != 0) { torre = (Torre)t.tabuleiro[7, linha].PecaAtual; } if (moveu) { p.Tabuleiro.tabuleiro[0, linha].PecaAtual.primeiraJogada = false; p.Tabuleiro.tabuleiro[7, linha].PecaAtual.primeiraJogada = false; p.Tabuleiro.tabuleiro[4, linha].PecaAtual.primeiraJogada = false; } mteste = torre.Roque(p.Tabuleiro); Assert.IsNull(mteste); /* * // casas ainda estão ocupadas * Assert.IsNotNull(t.tabuleiro[0,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[7,linha].PecaAtual); * Assert.IsNotNull(t.tabuleiro[4,linha].PecaAtual); * * // e são estão ocupadas por torre e rei * Assert.IsInstanceOf<Torre>(t.tabuleiro[0,linha].PecaAtual); // torre * Assert.IsInstanceOf<Torre>(t.tabuleiro[7,linha].PecaAtual); // torre * Assert.IsInstanceOf<Rei>(t.tabuleiro[4,linha].PecaAtual); // rei * */ } }
private bool PodeMover(Posicao pos) { Peca p = Tabuleiro.Peca(pos); return(p == null || p.Cor != Cor); }
public Torre(Tabuleiro tab, Cor cor) : base(tab, cor) { this.qteMovimentos = 7; }
public Cavalo(Tabuleiro tab, Cor cor) : base(tab, cor) { }
private bool TesteTorreRoque(Posicao posicaoTorre) { Peca torre = Tabuleiro.Peca(posicaoTorre); return(torre != null && torre is Torre && torre.Cor == Cor && torre.QuantidadeMovimentos == 0); }
//Método que reinicia o jogo quando um dos jogadores acaba private void reiniciaJogo() { if(nJogos==0) { if(this.radioButtonServer.Checked) { acumuladorJogador = 0; acumuladorAdversario = 0; for(int i = 0; i<nJogosInicial;i++) { if( i % 2 == 0) { int j = i + 1; this.labelResultadosAdversario.Text += "Jogo " + j.ToString() + ": " + pontuacoes[i].ToString() + " pontos\n"; acumuladorAdversario += pontuacoes[i]; } else { int j = i + 1; this.labelResultadosJogador.Text += "Jogo " + j.ToString() + ": " + pontuacoes[i].ToString()+ " pontos\n"; acumuladorJogador += pontuacoes[i]; } } this.labelJogadorClassico.Text = this.textBoxUsername.Text; this.labelAdversarioClassico.Text = comClassica.getUsername(); this.labelTotalJogador.Text = "Total: " + acumuladorJogador.ToString(); this.labelTotalAdversario.Text = "Total: " + acumuladorAdversario.ToString(); this.panelCifrador.Visible = false; this.panelResultadosClassico.Visible = true; } else { acumuladorJogador = 0; acumuladorAdversario = 0; for(int i = 0; i<nJogosInicial;i++) { if( i % 2 == 0) { int j = i + 1; this.labelResultadosJogador.Text += "Jogo " + j.ToString() + ": " + pontuacoes[i].ToString()+ " pontos\n"; acumuladorJogador += pontuacoes[i]; } else { int j = i + 1; this.labelResultadosAdversario.Text += "Jogo " + j.ToString() + ": " + pontuacoes[i].ToString()+ " pontos\n"; acumuladorAdversario += pontuacoes[i]; } } this.labelJogadorClassico.Text = this.textBoxUsername.Text; this.labelAdversarioClassico.Text = comClassica.getUsername(); this.labelTotalJogador.Text = "Total: " + acumuladorJogador.ToString(); this.labelTotalAdversario.Text = "Total: " + acumuladorAdversario.ToString(); this.panelDecifrador.Visible = false; this.panelResultadosClassico.Visible = true; } } else { nJogos--; jogosJogados++; correUmaVez = false; comClassica.reiniciar(); contadorBolas = 1; nJogada = 0; codigoSecreto = new SolidBrush[4]; tabuleiro = new Tabuleiro(); tabScore = new TabuleiroScore(); if(this.radioButtonServer.Checked) { this.radioButtonClient.Checked = true; painel = new PainelCores(0,252); codigo = new CodigoCores(30,9,Color.Black); this.radioButtonServer.Checked = false; this.panelConeccao.Visible = false; this.panelCifrador.Visible = false; this.panelDecifrador.Visible = true; } else { this.radioButtonServer.Checked = true; codigo = new CodigoCores(70,56,Color.Black); painel = new PainelCores(0,140); this.radioButtonClient.Checked = false; this.panelConeccao.Visible = false; this.panelDecifrador.Visible = false; this.panelEscolhaCor.Visible = true; } } }
private bool PodeMover(Posicao posicaoDesejada) { Peca pecaMovida = Tabuleiro.Peca(posicaoDesejada); return(pecaMovida == null || pecaMovida.Cor != Cor); }
private void buttonFazConeccao_Click(object sender, System.EventArgs e) { //Modo de jogo clássico if(this.radioButtonModo1.Checked) { tabuleiro = new Tabuleiro(); tabScore = new TabuleiroScore(); if(this.radioButtonServer.Checked) { if(this.comboBox1.SelectedIndex != -1) { codigo = new CodigoCores(70,56,Color.Black); painel = new PainelCores(0,140); this.panelConeccao.Visible = false; this.panelEscolhaCor.Visible = true; nJogos = Convert.ToInt32(this.comboBox1.SelectedItem.ToString())-1; nJogosInicial = nJogos + 1; pontuacoes = new int[16]; comClassica = new ComunicacaoClassica(); comClassica.servidorClassico(); comClassica.enviarNJogos(nJogos); } else MessageBox.Show("Escolha o número de jogos"); } else if(this.radioButtonClient.Checked) { painel = new PainelCores(0,252); codigo = new CodigoCores(30,9,Color.Black); pontuacoes = new int[16]; this.panelConeccao.Visible = false; this.panelDecifrador.Visible = true; this.panelDecifradorCodigoCor.Visible = true; comClassica = new ComunicacaoClassica(); comClassica.clienteClassico(this.textBoxEndIp.Text,8758); while(!comClassica.getJogosRecebidos()){} nJogos = comClassica.getNJogos(); nJogosInicial = nJogos + 1; } else { MessageBox.Show("Campos por preencher"); } } //Modo de jogo simultâneo else if(this.radioButtonModo2.Checked) { this.panelConeccao.Visible = false; this.panelEscolhaCor.Visible = true; painel = new PainelCores(0,140); codigo = new CodigoCores(70,56,Color.Black); if(this.radioButtonServer.Checked) { com = new Comunicacao(); com.servidorSimultaneo(); } else if(this.radioButtonClient.Checked) { com = new Comunicacao(); com.clienteSimultaneo(this.textBoxEndIp.Text,8758); } else { MessageBox.Show("Campos por preencher"); } } else MessageBox.Show("Preencha os campos necessários"); }
public override bool[,] MovimentosPossiveis() { bool[,] movimentosPossiveis = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas]; Posicao p = new Posicao(0, 0); //Norte p.DefinirValores(Posicao.Linha - 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Nordeste p.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Leste p.DefinirValores(Posicao.Linha, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Sudeste p.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Sul p.DefinirValores(Posicao.Linha + 1, Posicao.Coluna); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Sudoeste p.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Oeste p.DefinirValores(Posicao.Linha, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //Noroeste p.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1); if (Tabuleiro.PosicaoValida(p) && PodeMover(p)) { movimentosPossiveis[p.Linha, p.Coluna] = true; } //#Jogada Especial Roque if (QuantidadeMovimentos == 0 && _partida.Xeque == false) { //Pequeno Posicao posicaoTorreCurta = new Posicao(Posicao.Linha, Posicao.Coluna + 3); if (TesteTorreRoque(posicaoTorreCurta)) { 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) { movimentosPossiveis[Posicao.Linha, Posicao.Coluna + 2] = true; } } //Grande Posicao posicaoTorreLonga = new Posicao(Posicao.Linha, Posicao.Coluna - 4); if (TesteTorreRoque(posicaoTorreLonga)) { 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) { movimentosPossiveis[Posicao.Linha, Posicao.Coluna - 2] = true; } } } return(movimentosPossiveis); }
public void reiniciar() { Tabuleiro tab = new Tabuleiro(); TabuleiroScore ts = new TabuleiroScore(); codigo = new SolidBrush[4]; tabuleiro = tab.getTabuleiro(); tabScore = ts.getTabScore(); codRecebido = false; recebeuUsername = false; }
public PecaXadrez(Tabuleiro tab, Cor cor, PartidaDeXadrez partida) : base(tab, cor) { this.Partida = partida; }