Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Pedro Guilherme

Efeito substuição

Recommended Posts

Bom, voltando ao jogo, como sou leigo ainda nesse tipo de assunto ainda tenho muitas dúvidas.

Primeiramente eu ainda não sei como faço para um jogador usar a carta ao clicar nela com o javascript, sem interromper o jogo que vai ser online.

Outra coisa, eu queria fazer um efeito na hora de substituir a carta com javascript, eu já tenho o efeito aqui, só não sei como inserir quando o jogador clicar na carta, seria tipo um animate ( jquery).

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Pesquise sobre o uso da função $.ajax() e como implementar a função animate. no próprio site do jQuery tem explicações!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não tenho ideia de como fazer o sistema de batalha =S teria alguma ideia resumida de como eu faria?só na teoria mesmo.
Teria que usar  objetos do php?
abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não tenho um conhecimento sobre jogos onlines.. mas pela lógica podemos pensar da seguinte forma:

 

você tem os atributos das cartas cadastradas, com as imagens das cartas. quando um usuário fazer uma requisição( usar uma carta), você faz uma busca no banco de dados dos atributos dela..... então fazer algum tipo de comparação com a carta do adversário, se a sua carta for menor( em questão de  valores dos atributos),  você perde, e sua carta é eliminada( jogando para o fim do deck). 

 

Pondo isso em prática basicamente, você usará uma função jQuery chamada $.ajax() para fazer essas requisições de forma assíncrona.

Quanto ao efeito, você pode chamar o efeito no callback da função $.ajax() no parametro: success, que consiste em executar alguma coisa se a requisição for bem sucedida.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou estudando baseado em uma videoaulas sobre chats php.Acho que é uma boa pra aprender já como usar a função que atualiza os dados sem refresh.O sistema de batalha era exatamente assim que eu iria fazer, a minha duvida mesmo era como eu iria formular a batalha, tipo como eu pegaria os jogadores e botaria em uma batalha. seria por get?
Outra dúvida minha é quanto á videoaula que eu estou vendo é: por que eles usam classes para se conectar ao banco de dados?

Agradeço desde já.

[ ]'s


PS: No caso a videoaula é essa 

Editado por Pedro Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

então, eles utilizam classes pois é o conceito de orientação a objetos. 

Sobre a mecânica do jogo.. infelizmente não sei dizer como funciona. eu não vi as outras video aulas. 

Só acho o seguinte,  tentar pensar de forma mais simples, antes de entrar no conceito de orientada a  objetos.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pretendo fazer de forma mais simples possível, estou vendo as video aula apenas pelo $.ajax() para ver como funciona na prática.

o que eu estava me referindo mesmo, é como pego o dado dos jogadores para formular uma batalha.

Outra coisa, só pra saber mesmo rsrrs, teria como fazer um chat sem orientação a objetos, certo?

Abraços!

PS: devo usar sessões para fazer o sistema do combate?

Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, dá para fazer um chat sem "orientação a objetos" no caso você apenas usaria o php de forma procedural.(como você já vem fazendo)

 

No sistema de combate, acredito que não seja necessário, a menos que querias guardar as informações na sessão para usar posterior. isso é geralmente usado em sistemas de login, onde é armazenado o ID do usuario e nome de login, para poder apresentar o " bom dia fulano de tal" click aqui para deslogar.

 

Quanto a batalha.. você pode criar um arquivo chamado batalha.php,  e lá, fazer as consultas dos jogadores e das cartas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui fazer com que executa a função usar carta pelo php, pelo menos, não sei como faz isso porque ele vai alterar o array do usa.php e não do jogo. php '-'
atualmente deixei assim

Jogo.php

  <?php  $name = $_SESSION["nome"];  $query=mysql_query("SELECT * FROM users WHERE nome='$name'"); //Seleciona todos os usúarios cujo o nome for o nome de quem está logado  $x=mysql_fetch_array($query); // Tranforma o nome do usuário em texto baseados em arrays  $xo =  $x["id"]; //Pega o id do usuário que está logado  $query2=mysql_query("SELECT * FROM deck WHERE idjogador='$xo' ORDER BY RAND()"); // Seleciona todas as cartas do deck que pertence ao jogador logado, por ordem aleatória   echo "<div id='cards'>"; //div$max = mysql_num_rows($query2); for($i = 0; $i < $max; $i++):$row = mysql_fetch_object($query2);$qur=mysql_query("SELECT * FROM cartas  WHERE id='$row->idcarta'"); $x2=mysql_fetch_array($qur);   $cartaimagem[$i]= $x2["imagem"];   $cartaid[$i]= $x2["id"];endfor;$i = 0;for($i=0;$i<5;$i++){$mao[$i]=$cartaid[$i];$maoimagem[$i]=$cartaimagem[$i];  }  unset($cartaid[0],$cartaid[1],$cartaid[2],$cartaid[3],$cartaid[4]);foreach($mao as $image => $coc){$k1 = mysql_query("SELECT * FROM cartas WHERE id='$coc'");$xd = mysql_fetch_array($k1);$image = $xd["imagem"];echo "<a href='usa.php' class='carta'><img src='".$image."' width='110' height='190'/></a>";}echo "<img src='images/cartas/default.png' width='110' height='190'><div class='cont'>".count($cartaid)."</div>";  ?>

Usa.php

<?php$host = "localhost";$bd="cadastro";$user="root";$pass="";$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());mysql_select_db($bd) or die(mysql_error());?><?phpsession_start();  $name = $_SESSION["nome"];  $query=mysql_query("SELECT * FROM users WHERE nome='$name'"); //Seleciona todos os usúarios cujo o nome for o nome de quem está logado  $x=mysql_fetch_array($query); // Tranforma o nome do usuário em texto baseados em arrays  $xo =  $x["id"]; //Pega o id do usuário que está logado  $query2=mysql_query("SELECT * FROM deck WHERE idjogador='$xo' ORDER BY RAND()"); // Seleciona todas as cartas do deck que pertence ao jogador logado, por ordem aleatória   echo "<div id='cards'>"; //div$max = mysql_num_rows($query2); for($i = 0; $i < $max; $i++):$row = mysql_fetch_object($query2);$qur=mysql_query("SELECT * FROM cartas  WHERE id='$row->idcarta'"); $x2=mysql_fetch_array($qur);   $cartaimagem[$i]= $x2["imagem"];   $cartaid[$i]= $x2["id"];endfor;$i = 0;for($i=0;$i<5;$i++){$mao[$i]=$cartaid[$i];$maoimagem[$i]=$cartaimagem[$i];  }  unset($cartaid[0],$cartaid[1],$cartaid[2],$cartaid[3],$cartaid[4]);  function usarCarta($carta) {	global $mao;	global $i;	global $cartaid; 	foreach ($mao as $cartas =>$valor):	if($valor == $carta):		unset($mao[$cartas]);		array_push($mao,$cartaid[$i]);	unset($cartaid[$i]);		$i++;	endif;		endforeach;}usarCarta ("7");?>

intermed.js
 


$(document).ready(function(){
    $(".carta").click(function(event) {
            event.preventDefault();
 var idCarta = $(".hidden").val($("img",this).attr("id"));
 
        $.ajax({
                       //pegando a url a partir do href do link
            url: $(this).attr("href"),
data: "id="+idCarta,
            type: 'GET',
            context: jQuery('#content'),
            success: function(data){
                this.append(data);
            }
        });     
    });
    });
Editado por Pedro Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim,

 

retire a função dali e jogue para dentro de um arquivo por exemplo functions.php 

Então no usa.php você chama a função.

A ideia da função é você passar um parâmetro. este parâmetro deve ser o ID da carta registrada. Mas para isso você precisa do ID da carta. 

 

Como você precisa passar um ID para o usa.php, a partir da carta clicada, você precisa de algum modo ter este id para enviar. então você pode usar um campo input do tipo hidden,  Neste campo hidden, vai receber o id da carta clicada, e já envia ao php :D

 

Um exemplo simples de requisição

Primeiro você faz uma consulta na tabela das cartas para pegar o ID, depois você passa para o jQuery

$(document).ready(function(){    $(".carta").click(function(event) {            event.preventDefault();                  var idCarta = $(".hidden").val(<?php echo $id ?>);           $.ajax({                       url: 'usa.php',            type: 'GET',            dataType: 'html',            data: idCarta,             context: jQuery('#content'),            success: function(data){                $('alguma div').html(data);            }        });         });    });

então no seu usa.php você recebe por GET o id passado:

<?php$host = "localhost";$bd="cadastro";$user="root";$pass="";$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());mysql_select_db($bd) or die(mysql_error());?><?phpsession_start();$idCartausada = $_GET=["id"]  $name = $_SESSION["nome"];  $query=mysql_query("SELECT * FROM users WHERE nome='$name'"); //Seleciona todos os usúarios cujo o nome for o nome de quem está logado  $x=mysql_fetch_array($query); // Tranforma o nome do usuário em texto baseados em arrays  $xo =  $x["id"]; //Pega o id do usuário que está logado  $query2=mysql_query("SELECT * FROM deck WHERE idjogador='$xo' ORDER BY RAND()"); // Seleciona todas as cartas do deck que pertence ao jogador logado, por ordem aleatória   echo "<div id='cards'>"; //div$max = mysql_num_rows($query2); for($i = 0; $i < $max; $i++):$row = mysql_fetch_object($query2);$qur=mysql_query("SELECT * FROM cartas  WHERE id='$row->idcarta'"); $x2=mysql_fetch_array($qur);   $cartaimagem[$i]= $x2["imagem"];   $cartaid[$i]= $x2["id"];endfor;$i = 0;for($i=0;$i<5;$i++){$mao[$i]=$cartaid[$i];$maoimagem[$i]=$cartaimagem[$i];  }  unset($cartaid[0],$cartaid[1],$cartaid[2],$cartaid[3],$cartaid[4]);  function usarCarta($carta) {	global $mao;	global $i;	global $cartaid; 	foreach ($mao as $cartas =>$valor):	if($valor == $carta):		unset($mao[$cartas]);		array_push($mao,$cartaid[$i]);	unset($cartaid[$i]);		$i++;	endif;		endforeach;}usarCarta ($idCartaUsada);?>

A ideia é essa. agora é so implementar

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi muito bem o negocio da função, eu teria que atualizar o array que estivesse no jogo.php.

quanto a pegar o id da carta e enviar via GET eu tambem não entendi direito o que fez, porém acho que entendi o objetivo e então fiz a minha, e consegui pegar o valor da carta no usa.php. O problema é ele atualiza o array do usa.php e não do jogo.php.

segue:
JS

	$(document).ready(function(){    $(".carta").click(function(event) {            event.preventDefault();			  var idCarta = $(".hidden").val($("img",this).attr("id"));var aCarta = $('.hidden').val();        $.ajax({                       //pegando a url apartir do href do link            url: 'usa.php',            type: 'GET',			data: "id="+aCarta,            context: jQuery('#content'),            success: function(data){                this.append(data);            }        });         });    }); 

A parte do Jogo.PHP que eu mudei
 

$image = $xd["imagem"];$id = $xd["id"];echo "<a href='usa.php' class='carta'><img id='$id' src='".$image."' width='110' height='190'/></a>";}echo "<img src='images/cartas/default.png' width='110' height='190'><div class='cont'>".count($cartaid)."</div>";  ?> 

E o usa.php deixei como você postou.

Editado por Pedro Guilherme

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parando para analisar seu código, fica um pouco redundante você ter o usa.php e jogo.php

 

você pode mesclar esses dois arquivos... 

 

Como mencionei anteriormente, evite de usar funções soltas como no caso ali. crie um arquivo functions.php e jogue a função para dentro. e chame ela no seu usa.php

 

Sugestão: elimine o jogo.php  deixe apenas o usa.php. nele você coloca os códigos do jogo,php.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi como fazer esse negócio das funções.

Seria criar um arquivo php com as funções e chamar ele ao invés do usa.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre as funções, o que quis dizer é que você pode colocar ela separada, chamar o arquivo da função, e depois usar a função.

Sobre a ideia que eu dei esquece, vamos voltar um pouco na história e repensar na estrutura antiga( a que você estava fazendo) mas com algumas mudanças:

 

Resumidamente seria esta estrutura:

conexao.php(fazer a conexão com o banco)

Functions.php (conterá as funções criadas por você)

duelo.php (faz a consulta para listar as cartas.. montar o layout do duelo)

action.php( recebe os dados de duelo.php, processa os dados e retorna a resposta para duelo.php).

 

O action.php só servirá para receber os dados(id1da carta usada)... e executar a função de usar a carta.

 

Em duelo.php entra o uso da função jQuery que você criou para fazer a requisição ao action.php e retornar os dados para duelo.php

 

 

1. Campo auto increment da sua tabela cartas

Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro exemplo.

Imagine o jogo Naruto online. Quando você entra em uma batalha, aparece em tela os dados(atributos) do seu personagem.. tais como:  chakra, força, destresa, inteligencia.. e suas habilidades de combate.  São estes dados que são utilizados na batalha.

 

Voltando para sua dúvida, os dados que serão usados na batalha serão: ID da carta e seus atributos específicos de cada carta.

 

Quando você inicia um duelo, você e o adversário seriam redirecionados a uma pagina chamada duelo.php, neste arquivo conterá a estrutura do duelo.. tais como:  seu deck de cartas, cartas da mão(juntamente com os dados de cada carta).

 

Quando você clica em uma carta, você fará uma requisição ao arquivo action.php. nesse arquivo, é recebido o ID da carta para que você possa buscar no banco os dados referente aquela carta usada... ainda neste arquivo você chama a função usarCarta() para de fato usar a carta.

 

Agora a mecânica do duelo,  tem N maneiras de fazer,  a primeira que penso é usar o mesmo sistema dos RPG de mesa com dados D10(dados de dez lados). para fazer uma comparação.

 

Para exemplificar vou dizer q o "dado" terá só 6 lados,

 

Quando você usa a carta, podes atribuir um valor aleatório para esta carta(em uma nova variável) e guardar na sessão, e esperar que o adversário faça a  jogada.

 

O mesmo acontecerá com ele.. ele vai escolher a carta, e esta carta irá assumir um valor aleatório.. e guardar na sessão. 

Assim que os valores dos " dados" estiverem atribuidos a estas variáveis.. você faz uma comparação de maior ou menor para definir quem venceu.

 

Outro exemplo:

 

Selecionei a carta "Pônei maldito". o sistema atribuiu  um valor randômico, 5

Aí vai você, escolhe a carta "Chuck Norris", o sistema atribuiu um valor randômico, 6

Logo 6 > 5, significa que sua carta ganhou da minha. .. então as duas cartas(minha e sua) voltam para o fim do deck e joga uma outra na sua mão(o que faz a função usarCarta()).

 

Lembrando, que provavelmente você teria que criar mais algumas funções para poder fazer uma verificação e etc.. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que não consigo entender mesmo é a parte de usar cara, o resto eu tenho tudo em mente já.

Quando eu uso a função usarCarta no action.php, eu vou precisar de um array e no caso eu teria que criar um array no própio arquivo, certo? Então no caso ele substituiria a carta no array do action.php e não do duelo.php. deixei assim
action.php

<?phpinclude "connect.php";include "functions.php";session_start();  $name = $_SESSION["nome"];  $query=mysql_query("SELECT * FROM users WHERE nome='$name'"); //Seleciona todos os usúarios cujo o nome for o nome de quem está logado  $x=mysql_fetch_array($query); // Tranforma o nome do usuário em texto baseados em arrays  $xo =  $x["id"]; //Pega o id do usuário que está logado  $query2=mysql_query("SELECT * FROM deck WHERE idjogador='$xo' ORDER BY RAND()"); // Seleciona todas as cartas do deck que pertence ao jogador logado, por ordem aleatória   echo "<div id='cards'>"; //div$max = mysql_num_rows($query2);for($i = 0; $i < $max; $i++):$row = mysql_fetch_object($query2);$qur=mysql_query("SELECT * FROM cartas  WHERE id='$row->idcarta'"); $x2=mysql_fetch_array($qur);   $cartaimagem[$i]= $x2["imagem"];   $cartaid[$i]= $x2["id"];endfor;$i = 0;for($i=0;$i<5;$i++){$mao[$i]=$cartaid[$i];$maoimagem[$i]=$cartaimagem[$i];  }  unset($cartaid[0],$cartaid[1],$cartaid[2],$cartaid[3],$cartaid[4]);$idCartausada = $_GET["id"];echo $idCartausada;$query = mysql_query ("SELECT * FROM cartas WHERE id=$idCartausada");$atributo = mysql_fetch_array($query);$ataque = $atributo["ataque"];$nome = $atributo["nome"];echo $nome."<Br>";usarCarta($idCartausada);?>

duelo

  $name = $_SESSION["nome"];  $query=mysql_query("SELECT * FROM users WHERE nome='$name'"); //Seleciona todos os usúarios cujo o nome for o nome de quem está logado  $x=mysql_fetch_array($query); // Tranforma o nome do usuário em texto baseados em arrays  $xo =  $x["id"]; //Pega o id do usuário que está logado  $query2=mysql_query("SELECT * FROM deck WHERE idjogador='$xo' ORDER BY RAND()"); // Seleciona todas as cartas do deck que pertence ao jogador logado, por ordem aleatória   echo "<div id='cards'>"; //div$max = mysql_num_rows($query2); for($i = 0; $i < $max; $i++):$row = mysql_fetch_object($query2);$qur=mysql_query("SELECT * FROM cartas  WHERE id='$row->idcarta'"); $x2=mysql_fetch_array($qur);   $cartaimagem[$i]= $x2["imagem"];   $cartaid[$i]= $x2["id"];endfor;$i = 0;for($i=0;$i<5;$i++){$mao[$i]=$cartaid[$i];$maoimagem[$i]=$cartaimagem[$i];  }  unset($cartaid[0],$cartaid[1],$cartaid[2],$cartaid[3],$cartaid[4]);foreach($mao as $image => $coc){$k1 = mysql_query("SELECT * FROM cartas WHERE id='$coc'");$xd = mysql_fetch_array($k1);$image = $xd["imagem"];$id = $xd["id"];echo "<a href='usa.php' class='carta'><img id='$id' src='".$image."' width='110' height='190'/></a>";}echo "<img src='images/cartas/default.png' width='110' height='190'><div class='cont'>".count($cartaid)."</div>";  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Irmão, o jeito que você está fazendo, é redundante, você faz as mesmas requisições e consultas nos dois arquivos.. isso tá tirando seus cabelos cabeça.

 

Partindo de que, obrigatoriamente você terá dois arrays, um para seu deck completo e outro para sua mão.

os arrays ficarão no duelo.php.. e você manipula eles no action.

 

Resumidamente, o action.php só servirá para chamar a função e executar a lógica do duelo, e os resultados devem retornar ao duelo.php

Agora para que não apareça esse action.php, é ai que entra o ajax.

 

Portanto, não tem necessidade de fazer duas vezes a mesma coisa, você estaria dando uma carga a mais no banco de dados.. imagine 150 pessoas jogando simultaneamente ... onde cada uma faz 2 requisições como você está fazendo... sua largura de banda(bandwidth) do servidor ultrapassará o limite caso não tenhas um servidor dedicado( extremamente caro)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra pegar os dados da tabela carta segundo o deck do jogador, com relacionamento seria assim?
 

<?php$z = mysql_query("SELECT cartas.* FROM cartas INNER JOIN deck ON cartas.id = deck.idcarta WHERE deck.idjogador='1' ");while ($produto2 = mysql_fetch_assoc($z)) {echo $produto2["imagem"].'<Br>';}?>

O problema é que quando eu coloco jogar 2 ao invés de 1, ele pega os dados tanto do jogador 1 quanto do 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece, talvez por que você colocou como string tente desta forma:

<?php$idjogador = 2;$z = mysql_query("SELECT cartas.* FROM cartas INNER JOIN deck ON cartas.id = deck.idcarta WHERE deck.idjogador= $idjogador");while ($produto2 = mysql_fetch_assoc($z)) {echo $produto2["imagem"].'<Br>';}?>

Ps: partindo da premissa de que você já resgatou o ID do jogador. geralmente feito isso no login,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dúvida aqui, se eu tenho 2 abas aberta no jogo.php quando eu uso carta pelo ajax em uma aba,aparece um echo(botei um echo para testar) só na própia aba porém na outra aberta não, por que?

Creio que nãos seja pelo ajax, certo?

Editado por dif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não é do ajax.

Isso acontece, porque esse evento não foi iniciado no dom..

 

Você pode ler mais sobre isso aqui: http://blog.dmatoso.com/2012/11/jquery-bind-live-delegate-on/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem.. ¬¬'  talvez eu não tenha entendido muito bem o problema agora.

 

Eu recomendei aquele artigo para você ler, que explica quando precisamos registrar eventos para os elementos na página. por gentileza poderias explicar de uma outra forma? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria tipo para atualizar a página, quando um jogador usasse uma carta por exemplo, o outro poderia ver a ação estando em outro computador

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×