Inheritance: MonoBehaviour
Example #1
0
 public Torre(Tabuleiro tab, Cor cor) : base(cor, tab)
 {
 }
Example #2
0
 public Rei(Tabuleiro tab, Cor cor, PartidaDeXadrez partida) : base(tab, cor)
 {
     this.partida = partida;
 }
Example #3
0
 public Peca(Tabuleiro tabuleiro, Cor cor)
 {
     this.tabuleiro = tabuleiro;
     this.cor       = cor;
     QtdMovimento   = 0;
 }
Example #4
0
 public Dama(Tabuleiro tab, Cor cor) : base(tab, cor)
 {
 }
Example #5
0
 public Rainha(Tabuleiro tab, Color cor) : base(tab, cor)
 {
 }
Example #6
0
 public Rei(Cor cor, Tabuleiro tab) : base(cor, tab)
 {
 }
Example #7
0
 private bool Livre(Posicao pos)
 {
     return(Tabuleiro.peca(pos) == null);
 }
Example #8
0
        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);
        }
Example #9
0
 public Peao(Tabuleiro tab, Cor cor, PartidaXadrez partida) : base(cor, tab)
 {
     Partida = partida;
 }
Example #10
0
        private bool ExisteInimigo(Posicao pos)
        {
            Peca p = Tabuleiro.peca(pos);

            return(p != null && p.Cor != Cor);
        }
Example #11
0
 public Peao(Tabuleiro tab, Cor cor) : base(tab, cor)
 {
 }
Example #12
0
 static void Main(string[] args)
 {
     Tabuleiro tabuleiro = new Tabuleiro(8, 8);
 }
Example #13
0
 public Cavalo(Tabuleiro tab, Cor cor) : base(cor, tab)
 {
 }
Example #14
0
 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();
     }
 }
Example #15
0
        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);
        }
Example #16
0
 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();
 }
Example #17
0
 public Dama(Cor cor, Tabuleiro tab) : base(cor, tab)
 {
 }
Example #18
0
 public Rei(Tabuleiro tabuleiro, Cor cor, PartidaDeXadrez partida) : base(cor, tabuleiro)
 {
     _partida = partida;
 }
Example #19
0
 public void ColocarNovaPeca(Peca peca, char coluna, int linha)
 {
     Tabuleiro.ColocarPeca(peca, new PosicaoTabuleiro(coluna, linha).ToPosicao());
     _pecasEmJogo.Add(peca);
 }
Example #20
0
 public Torre(Tabuleiro tab, Cor cor) : base(tab, cor)
 {
 }
Example #21
0
        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;
            }
        }
Example #22
0
 public Torre(Cor cor, Tabuleiro tab) : base(cor, tab)
 {
 }
Example #23
0
 private void NovaPeca(Peca peca, PosicaoXadrez posicao)
 {
     Tabuleiro.ColocarPeca(peca, posicao.ToPosicao());
     pecas.Add(peca);
 }
Example #24
0
 public Bispo(Tabuleiro tabuleiro, Cor cor) : base(tabuleiro, cor)
 {
 }
Example #25
0
    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
             *
             */
        }
    }
Example #26
0
        private bool PodeMover(Posicao pos)
        {
            Peca p = Tabuleiro.Peca(pos);

            return(p == null || p.Cor != Cor);
        }
Example #27
0
 public Torre(Tabuleiro tab, Cor cor) : base(tab, cor)
 {
     this.qteMovimentos = 7;
 }
Example #28
0
 public Cavalo(Tabuleiro tab, Cor cor) : base(tab, cor)
 {
 }
Example #29
0
        private bool TesteTorreRoque(Posicao posicaoTorre)
        {
            Peca torre = Tabuleiro.Peca(posicaoTorre);

            return(torre != null && torre is Torre && torre.Cor == Cor && torre.QuantidadeMovimentos == 0);
        }
Example #30
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;
         }
     }
 }
Example #31
0
        private bool PodeMover(Posicao posicaoDesejada)
        {
            Peca pecaMovida = Tabuleiro.Peca(posicaoDesejada);

            return(pecaMovida == null || pecaMovida.Cor != Cor);
        }
Example #32
0
        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");
        }
Example #33
0
        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;
 }
Example #35
0
 public PecaXadrez(Tabuleiro tab, Cor cor, PartidaDeXadrez partida) : base(tab, cor)
 {
     this.Partida = partida;
 }