예제 #1
0
파일: Peca.cs 프로젝트: t1sbita/Xadrez
        public bool PodeMover(Posicao posicao)
        {
            Peca peca = Mesa.PosicaoPeca(posicao);

            return(peca == null || peca.Cor != Cor);
        }
예제 #2
0
파일: Torre.cs 프로젝트: t1sbita/Xadrez
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] possibilidades = new bool[Mesa.Linhas, Mesa.Colunas];

            Posicao posicao = new Posicao(0, 0);

            //acima
            posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Linha--;
            }

            //abaixo
            posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Linha++;
            }

            //direita
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna + 1);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Coluna++;
            }

            //esquerda
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna - 1);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Coluna--;
            }

            return(possibilidades);
        }