public void PosicionaBombasNoCampo(Posicao[] posicoes)
 {
     foreach (var posicao in posicoes)
     {
         _campoMinado.AdicionarBomba(posicao);
     }
 }
Exemplo n.º 2
0
        public void DeletaPosicao(Posicao posicao)
        {
            try
            {

                string sql = "delete from posicoes_infopae where id_posicao = @idPosicao";

                SqlConnection conexao = DBConnection.Conexao.ConectaSql;
                if (conexao.State != ConnectionState.Open)
                    conexao.Open();
                SqlCommand command = new SqlCommand(sql, conexao);

                SqlParameter[] parametro = new SqlParameter[1];
                parametro[0] = new SqlParameter("idPosicao", SqlDbType.Int);
                parametro[0].Value = posicao.IdPosicao;

                foreach (SqlParameter p in parametro)
                {
                    command.Parameters.Add(p);
                }

                command.ExecuteNonQuery();
                conexao.Close();

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível deletar a posição. Erro: " + ex.Message);
            }
        }
        public void Posicionador_bombas_posiciona_uma_lista_de_bombas_no_campo_minado()
        {
            var posicoes = new Posicao[] { new Posicao(0, 0), new Posicao(2, 1) };

            Mock<ICampoMinado> campo = new Mock<ICampoMinado>();
            var posicionador = new PosicionadorDeBombas(campo.Object);

            posicionador.PosicionaBombasNoCampo(posicoes);

            campo.Verify(x => x.AdicionarBomba(posicoes[0]), Times.Once);
            campo.Verify(x => x.AdicionarBomba(posicoes[1]), Times.Once);
        }
        public override void Colidir(Cenario cenario, GameObject obj, Posicao posicaoObj)
        {
            if (obj is Fruta)
            {
                cenario.RemoveGameObject(obj);
            }
            if (obj is Plataforma)
            {
                Plataforma plat = (Plataforma)obj;
                if (posicaoObj == Posicao.BAIXO)
                {
                    caindo = false;
                    obj.retornarAnterior();
                }
                if (posicaoObj == Posicao.CIMA)
                {
                    caindo = true;
                    pulando = false;

                }

            }
        }
Exemplo n.º 5
0
 public bool movimentoPossivel(Posicao pos)
 {
     return(movimentosPossiveis()[pos.linha, pos.coluna]);
 }
Exemplo n.º 6
0
 public bool existePeca(Posicao pos)
 {
     validarPosicao(pos);
     return(peca(pos) != null);
 }
Exemplo n.º 7
0
        private bool podeMover(Posicao pos)
        {
            Peca p = tab.peca(pos);

            return(p == null || p.cor != cor);
        }
Exemplo n.º 8
0
 public void Empilha(object item)
 {
     primeiro = new Posicao(primeiro, item);
 }
Exemplo n.º 9
0
        public override bool[,] movimentosPossiveis()
        {
            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;
            }

            // acima
            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;
            }

            // se
            pos.definirValores(posicao.linha + 1, posicao.coluna + 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }

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

            // so
            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;
            }

            // no
            pos.definirValores(posicao.linha - 1, posicao.coluna - 1);
            if (tab.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }

            // #jogadaespecial roque
            if (qteMovimentos == 0 && !partida.xeque)
            {
                // #jogadaespecial roque pequeno
                Posicao posT1 = new Posicao(posicao.linha, posicao.coluna + 3);
                if (testeTorreParaRoque(posT1))
                {
                    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)
                    {
                        mat[posicao.linha, posicao.coluna + 2] = true;
                    }
                }

                // #jogadaespecial roque grande
                Posicao posT2 = new Posicao(posicao.linha, posicao.coluna - 4);
                if (testeTorreParaRoque(posT2))
                {
                    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)
                    {
                        mat[posicao.linha, posicao.coluna - 2] = true;
                    }
                }
            }



            return(mat);
        }
Exemplo n.º 10
0
        public void realizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = executaMovimento(origem, destino);

            if (estaEmXeque(jogadorAtual))
            {
                desfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você não pode se colocar em xeque!");
            }

            Peca p = tab.peca(destino);

            // #jogadaespecial promocao
            if (p is Peao)
            {
                if (p.cor == Cor.Branca && destino.linha == 0 || (p.cor == Cor.Preta && destino.linha == 7))
                {
                    p = tab.retirarPeca(destino);
                    pecas.Remove(p);
                    Peca pecaPromovida = new Dama(tab, p.cor);
                    Console.Write("Escolha uma classe para promover seu peão: ");
                    string classe = Console.ReadLine();
                    if (classe == "C")
                    {
                        pecaPromovida = new Cavalo(tab, p.cor);
                    }
                    else if (classe == "B")
                    {
                        pecaPromovida = new Bispo(tab, p.cor);
                    }
                    else if (classe == "T")
                    {
                        pecaPromovida = new Torre(tab, p.cor);
                    }
                    else if (classe == "D")
                    {
                        pecaPromovida = new Dama(tab, p.cor);
                    }


                    tab.colocarPeca(pecaPromovida, destino);
                    pecas.Add(pecaPromovida);
                }
            }

            if (estaEmXeque(adversaria(jogadorAtual)))
            {
                xeque = true;
            }
            else
            {
                xeque = false;
            }
            if (testeXequemate(adversaria(jogadorAtual)))
            {
                terminada = true;
            }
            else
            {
                turno++;
                mudaJogador();
            }



            //#jogadaespecial en passant
            if (p is Peao && (destino.linha == origem.linha - 2 || destino.linha == destino.linha + 2))
            {
                vulneravelEnPassant = p;
            }
            else
            {
                vulneravelEnPassant = null;
            }
            //#jogadaespecial promocao
            if (p is Peao && destino.linha == 0 && p.cor == Cor.Branca)
            {
            }
        }
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[Tab.Linhas, Tab.Colunas];
            Posicao pos = new Posicao(0, 0);

            //Norte
            pos.DefinirValores(posicao.Linha - 1, posicao.Coluna);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //NE
            pos.DefinirValores(posicao.Linha - 1, posicao.Coluna + 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }


            //E
            pos.DefinirValores(posicao.Linha, posicao.Coluna + 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //SE
            pos.DefinirValores(posicao.Linha + 1, posicao.Coluna + 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //Sul
            pos.DefinirValores(posicao.Linha + 1, posicao.Coluna);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //SO
            pos.DefinirValores(posicao.Linha + 1, posicao.Coluna - 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //O
            pos.DefinirValores(posicao.Linha, posicao.Coluna - 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //NO
            pos.DefinirValores(posicao.Linha + 1, posicao.Coluna - 1);
            if (Tab.PosicaoValida(pos) && _PodeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
            }

            //#Jogada espacial Roque
            if (Movimentos == 0 && !_Partida.Xeque)
            {
                //Roque Pequeno
                Posicao posT1 = new Posicao(posicao.Linha, posicao.Coluna + 3);
                if (testeTorreParaRoque(posT1))
                {
                    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)
                    {
                        mat[pos.Linha, pos.Coluna + 2] = true;
                    }
                }

                //Roque Grande
                Posicao posT2 = new Posicao(posicao.Linha, posicao.Coluna - 4);
                if (testeTorreParaRoque(posT2))
                {
                    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)
                    {
                        mat[pos.Linha, pos.Coluna - 2] = true;
                    }
                }
            }

            return(mat);
        }
        public bool testeTorreParaRoque(Posicao pos)
        {
            Peca p = Tab.peca(pos);

            return(p != null && p is Torre && p.cor == cor && p.Movimentos == 0);
        }
        private bool _PodeMover(Posicao pos)
        {
            Peca p = Tab.peca(pos);

            return(p == null || p.cor != this.cor);
        }
Exemplo n.º 14
0
 public Peca Peca(Posicao posicao)
 {
     return(Pecas[posicao.Linha, posicao.Coluna]);
 }
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[Tab.Linhas, Tab.Colunas];
            Posicao pos = new Posicao(0, 0);

            if (cor == Cor.Branca)
            {
                pos.DefinirValores(posicao.Linha - 1, posicao.Coluna);
                if (Tab.PosicaoValida(pos) && _Livre(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha - 2, posicao.Coluna);
                if (Tab.PosicaoValida(pos) && _Livre(pos) && Movimentos == 0)
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha - 1, posicao.Coluna - 1);
                if (Tab.PosicaoValida(pos) && _ExisteInimigo(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha - 1, posicao.Coluna + 1);
                if (Tab.PosicaoValida(pos) && _ExisteInimigo(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                //jogada en Passant
                if (posicao.Linha == 3)
                {
                    Posicao esquerda = new Posicao(posicao.Linha, posicao.Coluna - 1);
                    if (Tab.PosicaoValida(esquerda) && _ExisteInimigo(esquerda) && Tab.peca(esquerda) == _Partida.VulneravelEnPassant)
                    {
                        mat[esquerda.Linha - 1, esquerda.Coluna] = true;
                    }

                    Posicao diretia = new Posicao(posicao.Linha, posicao.Coluna + 1);
                    if (Tab.PosicaoValida(diretia) && _ExisteInimigo(diretia) && Tab.peca(diretia) == _Partida.VulneravelEnPassant)
                    {
                        mat[diretia.Linha - 1, diretia.Coluna] = true;
                    }
                }
            }
            else
            {
                pos.DefinirValores(posicao.Linha + 1, posicao.Coluna);
                if (Tab.PosicaoValida(pos) && _Livre(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha + 2, posicao.Coluna);
                if (Tab.PosicaoValida(pos) && _Livre(pos) && Movimentos == 0)
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha + 1, posicao.Coluna - 1);
                if (Tab.PosicaoValida(pos) && _ExisteInimigo(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(posicao.Linha + 1, posicao.Coluna + 1);
                if (Tab.PosicaoValida(pos) && _ExisteInimigo(pos))
                {
                    mat[pos.Linha, pos.Coluna] = true;
                }

                //jogada en Passant
                if (posicao.Linha == 4)
                {
                    Posicao esquerda = new Posicao(posicao.Linha, posicao.Coluna - 1);
                    if (Tab.PosicaoValida(esquerda) && _ExisteInimigo(esquerda) && Tab.peca(esquerda) == _Partida.VulneravelEnPassant)
                    {
                        mat[esquerda.Linha + 1, esquerda.Coluna] = true;
                    }

                    Posicao diretia = new Posicao(posicao.Linha, posicao.Coluna + 1);
                    if (Tab.PosicaoValida(diretia) && _ExisteInimigo(diretia) && Tab.peca(diretia) == _Partida.VulneravelEnPassant)
                    {
                        mat[diretia.Linha + 1, diretia.Coluna] = true;
                    }
                }
            }
            return(mat);
        }
 private bool _Livre(Posicao pos)
 {
     return(Tab.peca(pos) == null);
 }
 public virtual void Colidir(Cenario cenario, GameObject obj, Posicao posicao)
 {
 }
Exemplo n.º 18
0
        private bool movimentoLivre(Posicao pos)
        {
            Peca p = tab.peca(pos);

            return(p == null || p.cor != this.cor);
        }
        private bool _ExisteInimigo(Posicao pos)
        {
            Peca p = Tab.peca(pos);

            return(p != null && p.cor != cor);
        }
Exemplo n.º 20
0
        private bool testeTorreRoque(Posicao pos)
        {
            Peca p = tabu.peca(pos);

            return(p != null && p is Torre && p.cor == cor && p.qteMovimentos == 0);  // use o is para checar se uma superclasse (p que é peça) é da subclasse correspondente (torre no caso)
        }
Exemplo n.º 21
0
        private bool testeTorreParaRoque(Posicao pos)
        {
            Peca p = tab.peca(pos);

            return(p != null && p is Torre && p.cor == cor && p.qteMovimentos == 0);
        }
Exemplo n.º 22
0
        public override bool[,] movimentosPossiveis()
        {
            bool[,] mat = new bool[tabu.linhas, tabu.colunas];

            Posicao pos = new Posicao(0, 0);

            pos.definirPosicao(posicao.linha - 1, posicao.coluna); // checando posicao norte do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha - 1, posicao.coluna + 1); // checando posicao nordeste
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha, posicao.coluna + 1); // checando posicao direita do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha + 1, posicao.coluna + 1); // checando posicao sudeste do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha + 1, posicao.coluna); // checando posicao sul do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha + 1, posicao.coluna - 1); // checando posicao sudoeste do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha, posicao.coluna - 1); // checando posicao oeste do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.definirPosicao(posicao.linha - 1, posicao.coluna - 1); // checando posicao noroeste do rei
            if (tabu.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }

            // #jogada especial - ROQUE

            if (qteMovimentos == 0 && !partida.xeque)
            {
                Posicao posT1 = new Posicao(posicao.linha, posicao.coluna + 3);  // Roque Pequeno
                if (testeTorreRoque(posT1))
                {
                    Posicao p1 = new Posicao(posicao.linha, posicao.coluna + 1);
                    Posicao p2 = new Posicao(posicao.linha, posicao.coluna + 2);
                    if (tabu.peca(p1) == null && tabu.peca(p2) == null)
                    {
                        mat[posicao.linha, posicao.coluna + 2] = true;
                    }
                }
                Posicao posT2 = new Posicao(posicao.linha, posicao.coluna - 4);  // Roque Grande
                if (testeTorreRoque(posT2))
                {
                    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 (tabu.peca(p1) == null && tabu.peca(p2) == null && tabu.peca(p3) == null)
                    {
                        mat[posicao.linha, posicao.coluna - 2] = true;
                    }
                }
            }

            return(mat);
        }
Exemplo n.º 23
0
 public Posicao(Posicao proximo, object item)
 {
     this.proximo = proximo;
     this.item    = item;
 }
Exemplo n.º 24
0
 public Peca Peca(Posicao pos)//sobrecarga no metodo peca.
 {
     return(pecas[pos.Linha, pos.Coluna]);
 }
Exemplo n.º 25
0
 public bool ExistePeca(Posicao pos)
 {
     ValidarPosicao(pos);
     return(Peca(pos) != null);
 }
Exemplo n.º 26
0
 public bool existePeca(Posicao pos)
 {
     validarPosicao(pos);
     return(Peca(pos) != null);
 }//verifica se a peça existe em determinada posição.
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[Tab.Linhas, Tab.Colunas];
            Posicao pos = new Posicao(0, 0);

            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.DefinirValores(pos.Linha, pos.Coluna - 1);
            }
            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.DefinirValores(pos.Linha, pos.Coluna + 1);
            }
            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.DefinirValores(pos.Linha - 1, pos.Coluna);
            }
            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.DefinirValores(pos.Linha + 1, pos.Coluna);
            }
            pos.DefinirValores(Posicao.Linha - 1, 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.DefinirValores(pos.Linha - 1, pos.Coluna - 1);
            }
            pos.DefinirValores(Posicao.Linha - 1, 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.DefinirValores(pos.Linha - 1, pos.Coluna + 1);
            }
            pos.DefinirValores(Posicao.Linha + 1, 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.DefinirValores(pos.Linha + 1, pos.Coluna + 1);
            }
            pos.DefinirValores(Posicao.Linha + 1, 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.DefinirValores(pos.Linha + 1, pos.Coluna - 1);
            }
            return(mat);
        }
Exemplo n.º 28
0
 public Agente()
 {
     posicao = new Posicao();
 }
Exemplo n.º 29
0
 public Peca peca(Posicao pos)
 {
     return(pecas[pos.Linha, pos.Coluna]);
 }
Exemplo n.º 30
0
 public bool MovimentoPossivel(Posicao posicao)
 {
     return(MovimentosPossiveis()[posicao.Linha, posicao.Coluna]);
 }
Exemplo n.º 31
0
        private bool PodeMover(Posicao pos)
        {
            Peca p = Tab.peca(pos);

            return(p == null || p.Cor != Cor);
        }
Exemplo n.º 32
0
        public ListaPosicoes getListaPosicoes()
        {
            ListaPosicoes lista = new ListaPosicoes();
            FusoHorario.FusoHorario fusoHorario;

            try
            {
                string sql = "select top 60 id_posicao, modulo, tipo, latitude, longitude, cast(velocidade as int) as velocidade, data from posicoes_infopae order by modulo, data";

                SqlConnection conexao = DBConnection.Conexao.ConectaSql;
                if (conexao.State != ConnectionState.Open)
                    conexao.Open();
                SqlCommand command = new SqlCommand(sql, conexao);
                SqlDataReader reader = command.ExecuteReader();

                fusoHorario = FusoHorario.FusoHorario.ObterInstancia();

                while(reader.Read())
                {

                    Posicao posicao = new Posicao();
                    posicao.IdPosicao = Convert.ToInt32(reader["id_posicao"]);
                    posicao.CodigoModulo = Convert.ToString(reader["modulo"]);
                    posicao.Tipo = Convert.ToChar(reader["tipo"]);
                    posicao.Latitude = Convert.ToDouble(reader["latitude"]);
                    posicao.Longitude = Convert.ToDouble(reader["longitude"]);
                    posicao.Velocidade = Convert.ToDouble(reader["velocidade"]);
                    posicao.Data = Convert.ToDateTime(reader["data"]);

                    posicao.Data = MetodosAuxiliares.MetodosAuxiliares.ArrumarFusoHorario(posicao.Data, fusoHorario);

                    lista.Add(posicao);

                }

                conexao.Close();

            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível carregar a lista de posições. Erro: " + ex.Message);
            }

            return lista;
        }
Exemplo n.º 33
0
        private bool PodeMover(Posicao pos)
        {
            Peca p = tab.peca(pos);

            return(p == null || p.cor != cor);   //checa se é uma peça adversária
        }
Exemplo n.º 34
0
        private bool PodeMover(Posicao posicao)
        {
            Peca p = tabuleiro.Peca(posicao);

            return(p == null || p.cor != cor);
        }
Exemplo n.º 35
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] matriz = new bool[tabuleiro.linhas, tabuleiro.colunas];

            Posicao posicao = new Posicao(0, 0);

            // acima
            posicao.DefinirValores(posicao.linha - 1, posicao.coluna);
            while (tabuleiro.PosicaoValida(posicao) && PodeMover(posicao))
            {
                matriz[posicao.linha, posicao.coluna] = true;
                if (tabuleiro.Peca(posicao) != null && tabuleiro.Peca(posicao).cor != cor)
                {
                    break;
                }
                posicao.linha = posicao.linha - 1;
            }
            // abaixo
            posicao.DefinirValores(posicao.linha + 1, posicao.coluna);
            while (tabuleiro.PosicaoValida(posicao) && PodeMover(posicao))
            {
                matriz[posicao.linha, posicao.coluna] = true;
                if (tabuleiro.Peca(posicao) != null && tabuleiro.Peca(posicao).cor != cor)
                {
                    break;
                }
                posicao.linha = posicao.linha + 1;
            }
            // abaixo
            posicao.DefinirValores(posicao.linha + 1, posicao.coluna);
            while (tabuleiro.PosicaoValida(posicao) && PodeMover(posicao))
            {
                matriz[posicao.linha, posicao.coluna] = true;
                if (tabuleiro.Peca(posicao) != null && tabuleiro.Peca(posicao).cor != cor)
                {
                    break;
                }
                posicao.linha = posicao.linha + 1;
            }
            // direita
            posicao.DefinirValores(posicao.linha, posicao.coluna + 1);
            while (tabuleiro.PosicaoValida(posicao) && PodeMover(posicao))
            {
                matriz[posicao.linha, posicao.coluna] = true;
                if (tabuleiro.Peca(posicao) != null && tabuleiro.Peca(posicao).cor != cor)
                {
                    break;
                }
                posicao.coluna = posicao.coluna + 1;
            }
            // direita
            posicao.DefinirValores(posicao.linha, posicao.coluna - 1);
            while (tabuleiro.PosicaoValida(posicao) && PodeMover(posicao))
            {
                matriz[posicao.linha, posicao.coluna] = true;
                if (tabuleiro.Peca(posicao) != null && tabuleiro.Peca(posicao).cor != cor)
                {
                    break;
                }
                posicao.coluna = posicao.coluna - 1;
            }

            return(matriz);
        }
Exemplo n.º 36
0
        public override bool[,] MovimentosPossieis()
        {
            bool[,] mat = new bool[tab.linhas, tab.colunas];
            Posicao pos = new Posicao(0, 0);

            if (cor == Cor.Branca) // peao branco só anda para o norte
            {
                pos.definirValores(posicao.linha - 1, posicao.coluna);
                if (tab.posicaoValida(pos) && Livre(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha - 2, posicao.coluna);
                Posicao p2 = new Posicao(posicao.linha - 1, posicao.coluna);
                if (tab.posicaoValida(p2) && Livre(p2) && tab.posicaoValida(pos) && Livre(pos) && qteMovimentos == 0)
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha - 1, posicao.coluna - 1);
                if (tab.posicaoValida(pos) && ExisteInimigo(pos)) // se existe inimigo nas diagonais logo a frente, ele pode andar para lá
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha - 1, posicao.coluna + 1);
                if (tab.posicaoValida(pos) && ExisteInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }

                // #jogadaespecial en passant
                if (posicao.linha == 3) // valido em uma unica coluna em especial
                {
                    Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1);
                    if (tab.posicaoValida(esquerda) && ExisteInimigo(esquerda) && tab.peca(esquerda) == partida.VulneravelEnPassant)
                    {
                        mat[esquerda.linha - 1, esquerda.coluna] = true;
                    }
                    Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1);
                    if (tab.posicaoValida(direita) && ExisteInimigo(direita) && tab.peca(direita) == partida.VulneravelEnPassant)
                    {
                        mat[direita.linha - 1, direita.coluna] = true;
                    }
                }
            }
            else //peao preto só anda para o sul
            {
                pos.definirValores(posicao.linha + 1, posicao.coluna);
                if (tab.posicaoValida(pos) && Livre(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha + 2, posicao.coluna);
                Posicao p2 = new Posicao(posicao.linha + 1, posicao.coluna);
                if (tab.posicaoValida(p2) && Livre(p2) && tab.posicaoValida(pos) && Livre(pos) && qteMovimentos == 0)
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha + 1, posicao.coluna - 1);
                if (tab.posicaoValida(pos) && ExisteInimigo(pos)) // se existe inimigo na posicao das diagonais a frente, ele pode mover pra la
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.definirValores(posicao.linha + 1, posicao.coluna + 1);
                if (tab.posicaoValida(pos) && ExisteInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
            }
            if (posicao.linha == 4) //passant, valido em uma linha especifica
            {
                Posicao esquerda = new Posicao(posicao.linha, posicao.coluna - 1);
                if (tab.posicaoValida(esquerda) && ExisteInimigo(esquerda) && tab.peca(esquerda) == partida.VulneravelEnPassant)
                {
                    mat[esquerda.linha + 1, esquerda.coluna] = true;
                }
                Posicao direita = new Posicao(posicao.linha, posicao.coluna + 1);
                if (tab.posicaoValida(direita) && ExisteInimigo(direita) && tab.peca(direita) == partida.VulneravelEnPassant)
                {
                    mat[direita.linha + 1, direita.coluna] = true;
                }
            }
            return(mat);
        }