コード例 #1
0
ファイル: Torre.cs プロジェクト: Betotal/CursoCSharp
        public override bool[,] movimentosPossiveis()
        {
            bool[,] auxMatriz = new bool[tab.linhas, tab.colunas];

            //teste de movimento
            Posicao pos = new Posicao(0, 0);

            //acima
            pos.definirValor(posicao.linha - 1, posicao.coluna);
            while (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
                if (tab.peca(pos) != null && tab.peca(pos).cor != cor)
                {
                    break;
                }
                pos.linha = pos.linha - 1;
            }

            //abaixo
            pos.definirValor(posicao.linha + 1, posicao.coluna);
            while (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
                if (tab.peca(pos) != null && tab.peca(pos).cor != cor)
                {
                    break;
                }
                pos.linha = pos.linha + 1;
            }

            //direita
            pos.definirValor(posicao.linha, posicao.coluna + 1);
            while (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
                if (tab.peca(pos) != null && tab.peca(pos).cor != cor)
                {
                    break;
                }
                pos.coluna = pos.coluna + 1;
            }

            //esquerda
            pos.definirValor(posicao.linha, posicao.coluna - 1);
            while (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
                if (tab.peca(pos) != null && tab.peca(pos).cor != cor)
                {
                    break;
                }
                pos.coluna = pos.coluna - 1;
            }

            return(auxMatriz);
        }
コード例 #2
0
ファイル: Cavalo.cs プロジェクト: Betotal/CursoCSharp
        public override bool[,] movimentosPossiveis()
        {
            bool[,] auxMatriz = new bool[tab.linhas, tab.colunas];

            //teste de movimento
            Posicao pos = new Posicao(0, 0);

            pos.definirValor(posicao.linha - 1, posicao.coluna - 2);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha - 1, posicao.coluna + 2);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha + 1, posicao.coluna - 2);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha + 1, posicao.coluna + 2);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha - 2, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha - 2, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha + 2, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            pos.definirValor(posicao.linha + 2, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }
            return(auxMatriz);
        }
コード例 #3
0
ファイル: Peao.cs プロジェクト: Betotal/CursoCSharp
        public override bool[,] movimentosPossiveis()
        {
            bool[,] auxMatriz = new bool[tab.linhas, tab.colunas];

            //teste de movimento
            Posicao pos = new Posicao(0, 0);

            if (cor == Cor.Branco)
            {
                pos.definirValor(posicao.linha - 1, posicao.coluna);
                if (tab.posicaoValida(pos) && livre(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha - 2, posicao.coluna);
                if (tab.posicaoValida(pos) && livre(pos) && qtdMovto == 0)
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha - 1, posicao.coluna - 1);
                if (tab.posicaoValida(pos) && existeAdversario(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha - 1, posicao.coluna + 1);
                if (tab.posicaoValida(pos) && existeAdversario(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }

                // jogada especial EnPassant
                if (posicao.linha == 3)
                {
                    Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1);
                    if (tab.posicaoValida(esquerda) && existeAdversario(esquerda) && tab.peca(esquerda) == partida.enPassant)
                    {
                        auxMatriz[esquerda.linha - 1, esquerda.coluna] = true;
                    }

                    Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1);
                    if (tab.posicaoValida(direita) && existeAdversario(direita) && tab.peca(direita) == partida.enPassant)
                    {
                        auxMatriz[direita.linha - 1, direita.coluna] = true;
                    }
                }
            }
            else
            {
                pos.definirValor(posicao.linha + 1, posicao.coluna);
                if (tab.posicaoValida(pos) && livre(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha + 2, posicao.coluna);
                if (tab.posicaoValida(pos) && livre(pos) && qtdMovto == 0)
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha + 1, posicao.coluna - 1);
                if (tab.posicaoValida(pos) && existeAdversario(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                pos.definirValor(posicao.linha + 1, posicao.coluna + 1);
                if (tab.posicaoValida(pos) && existeAdversario(pos))
                {
                    auxMatriz[pos.linha, pos.coluna] = true;
                }
                // jogada especial EnPassant
                if (posicao.linha == 4)
                {
                    Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1);
                    if (tab.posicaoValida(esquerda) && existeAdversario(esquerda) && tab.peca(esquerda) == partida.enPassant)
                    {
                        auxMatriz[esquerda.linha + 1, esquerda.coluna] = true;
                    }

                    Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1);
                    if (tab.posicaoValida(direita) && existeAdversario(direita) && tab.peca(direita) == partida.enPassant)
                    {
                        auxMatriz[direita.linha + 1, direita.coluna] = true;
                    }
                }
            }
            return(auxMatriz);
        }
コード例 #4
0
ファイル: Rei.cs プロジェクト: Betotal/CursoCSharp
        public override bool [,] movimentosPossiveis()
        {
            bool[,] auxMatriz = new bool[tab.linhas, tab.colunas];

            //teste de movimento
            Posicao pos = new Posicao(0, 0);


            // acima
            pos.definirValor(posicao.linha - 1, posicao.coluna);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // acima a direita
            pos.definirValor(posicao.linha - 1, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // direita
            pos.definirValor(posicao.linha, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // abaixo a direita
            pos.definirValor(posicao.linha + 1, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // abaixo
            pos.definirValor(posicao.linha + 1, posicao.coluna);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // abaixo a esquerda
            pos.definirValor(posicao.linha + 1, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // esquerda
            pos.definirValor(posicao.linha, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            // acima a esqeurda
            pos.definirValor(posicao.linha - 1, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                auxMatriz[pos.linha, pos.coluna] = true;
            }

            //  JogadaEspecial Roque
            if (qtdMovto == 0 && !partida.xeque)
            {
                // Roque Pequeno
                Posicao posTorre1 = new Posicao(posicao.linha, posicao.coluna + 3);
                if (testeTorreRoque(posTorre1))
                {
                    Posicao P1 = new Posicao(posicao.linha, posicao.coluna + 1);
                    Posicao P2 = new Posicao(posicao.linha, posicao.coluna + 2);
                    if (tab.peca(P1) == null && tab.peca(P2) == null)
                    {
                        auxMatriz[posicao.linha, posicao.coluna + 2] = true;
                    }
                }

                // Roque Grande
                Posicao posTorre2 = new Posicao(posicao.linha, posicao.coluna - 4);
                if (testeTorreRoque(posTorre2))
                {
                    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 (tab.peca(P1) == null && tab.peca(P2) == null && tab.peca(P3) == null)
                    {
                        auxMatriz[posicao.linha, posicao.coluna - 2] = true;
                    }
                }
            }
            return(auxMatriz);
        }