Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jrotta

Atacando e mostrando ataques anteriores.

Recommended Posts

Bom, to fazendo um jogo web based mas empaquei na parte maais importante. é luta contra monstros.

 

O código atual faz o seguinte:

você ataca o monstro e tira 2 de vida.

ATUALIZA A PÁGINA E APAGA TUDO, SÓ APARECE:

você ataca o monstro e tira 2 de vida.

ATUALIZA A PÁGINA E APAGA TUDO, SÓ APARECE:

você ataca o monstro e tira 2 de vida.

ATUALIZA A PÁGINA E APAGA TUDO, SÓ APARECE:

você ataca o monstro e tira 2 de vida.

ATUALIZA A PÁGINA E APAGA TUDO, SÓ APARECE:

Matou o monstro

OBS: A cada ataque ele remove 2 de vida da db.

 

Agora você deve estar se perguntando, oq que tem de errado com isso, se o monstro perde vida e morre?

 

é que eu queria fazer assim:

você ataca o monstro e tira 2 de vida.

você ataca o monstro e tira 2 de vida.

você ataca o monstro e tira 2 de vida.

você ataca o monstro e tira 2 de vida.

você ataca o monstro e tira 2 de vida.

Matou o monstro

Mostra o ataque que você deu agora, e tb mostra os ataques anteriores.

 

Ai é o código que eu tenho, tentei, tentei mas n consigo modificar pra fazer oq eu quero:

<?php
include("lib.php");
define("PAGENAME", "Batalhar");
$player = check_user($secret_key, $db);

switch($_GET['act'])
{
	case "attack":
		if (!$_GET['id']) //No username entered
		{
			header("Location: monster.php");
			break;
		}


		//Otherwise, get player data:
		$query = $db->execute("select * from `monsters` where `id`=?", array($_GET['id']));
		if ($query->recordcount() == 0) //Player doesn't exist
		{
			include("templates/private_header.php");
			echo "Este monstro não existe! <a href=\"monster.php\">Voltar</a>.";
			include("templates/private_footer.php");
			break;
		}
		
		$enemy1 = $query->fetchrow(); //Get monster info
		foreach($enemy1 as $key=>$value)
		{
			$enemy->$key = $value;
		}
			if (!$_GET["ataca"]){
			$query = $db->execute("update `players` set `monsterhp`=? where `id`=?", array($enemy->hp, $player->id));
			header("Location: teste.php?act=attack&id=" . $_GET['id'] . "&ataca=yes");
			}else if ($player->monsterhp > 0){
 			$output .= "Você tirou 2 de vida!";
			$query = $db->execute("update `players` set `monsterhp`=? where `id`=?", array($player->monsterhp - 2, $player->id));
			}else if ($player->monsterhp < 1){
			$output .= "derrotado";
			$query = $db->execute("update `players` set `monsterhp`=? where `id`=?", array($enemy->hp, $player->id));
			}
			echo $output;
			}

		echo "<br/><a href=\"teste.php?act=attack&id=" . $_GET['id'] . "&ataca=yes\">Atacar</a>";
?>

LEMBRE-SE: Tem que ser 1 ataque de cada vez, e tem que mostrar os ataques anteriores na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que a maneira mais simples de fazer é usando Ajax e adicionando a mensagem com o innerHtml (acho que é assim).

 

Se quiser, posso mover para o fórum de Javascript.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

se eu fosse fazer, também usuaria Ajax, pois nem precisaria atualizar a página. O usuário clicaria em atacar e depois, já escreveria que ele atacou o monstro e tirou dois de vida, sem atualizar a página!

 

Eu imaginei que teria que usar ajax ou javascript, mas é que não sei criar códigos desta plataforma, só dar uma editada ^^

 

Se vcs me dessem uma forcinha no código ficaria muito agradecido =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo.

 

Estou com um pouco de pressa e não li com atenção o tópico, porém, ao que entendi, você quer exibir um texto após a confirmação do servidor, em JS.

Se for isso, com jQuery é MUITO fácil; porém, você também pode fazer com o próprio PHP. Depende apenas de sua real necessidade.

 

Com o php, por exemplo, você pode utilizar funções de limpeza de buffer, por exemplo:

www.php.net/ob_flush

www.php.net/sleep

www.php.net/flush

Entre outras... Daí a página vai exibindo aos poucos conforme os sleeps q você dá.

 

Mas isso eu acharia mais a título de gambiarra do que solução definitiva.

 

Para fazer com jQuery, é simples. Você precisa fazer um link, algo que possa ser clicado para poder acionar o script, e uma div, onde apresentará o conteudo (Esses dois não sao obrigatórios se você souber lidar com seletores, mas facilitam). Por exemplo:

<a href="pagina.php" id="meulink">ATACAR</a><div id="div_alvo"></div>

$(document).ready(function() {
  $('#meulink').click(function() {
    var variavel_exemplo = 'Variavel de exemplo para enviar ao servidor'; //Apenas para exemplificar
    $('#div_alvo').html('<strong>Carregando</strong>'); // Apenas para mostrar que, ao inserir tags html, modificamos o nome da função ;)
    $.get('pagina.php',{variavel:'Aqui voce pode inserir variaveis, caso precise :)', variavelx: variavel_exemplo},function(dados){
      $('#div_alvo').text('Dados recebidos do servidor: '+dados);
    });
    return false;
  });
});

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo.

 

Estou com um pouco de pressa e não li com atenção o tópico, porém, ao que entendi, você quer exibir um texto após a confirmação do servidor, em JS.

Se for isso, com jQuery é MUITO fácil; porém, você também pode fazer com o próprio PHP. Depende apenas de sua real necessidade.

 

Com o php, por exemplo, você pode utilizar funções de limpeza de buffer, por exemplo:

www.php.net/ob_flush

www.php.net/sleep

www.php.net/flush

Entre outras... Daí a página vai exibindo aos poucos conforme os sleeps q você dá.

 

Mas isso eu acharia mais a título de gambiarra do que solução definitiva.

 

Para fazer com jQuery, é simples. Você precisa fazer um link, algo que possa ser clicado para poder acionar o script, e uma div, onde apresentará o conteudo (Esses dois não sao obrigatórios se você souber lidar com seletores, mas facilitam). Por exemplo:

<a href="pagina.php" id="meulink">ATACAR</a><div id="div_alvo"></div>

$(document).ready(function() {
  $('#meulink').click(function() {
    var variavel_exemplo = 'Variavel de exemplo para enviar ao servidor'; //Apenas para exemplificar
    $('#div_alvo').html('<strong>Carregando</strong>'); // Apenas para mostrar que, ao inserir tags html, modificamos o nome da função ;) 
    $.get('pagina.php',{variavel:'Aqui voce pode inserir variaveis, caso precise :) ', variavelx: variavel_exemplo},function(dados){
      $('#div_alvo').text('Dados recebidos do servidor: '+dados);
    });
    return false;
  });
});

Abraço!

 

 

Olha, meu código ficou assim:

<html>
<head>
<script language="javascript">
$(document).ready(function() {
  $('#meulink').click(function() {
    var variavel_exemplo = 'Variavel de exemplo para enviar ao servidor'; //Apenas para exemplificar
    $('#div_alvo').html('<strong>Carregando</strong>'); // Apenas para mostrar que, ao inserir tags html, modificamos o nome da função ;) 
    $.get('pagina.php',{variavel:'Aqui voce pode inserir variaveis, caso precise :) ', variavelx: variavel_exemplo},function(dados){
      $('#div_alvo').text('Dados recebidos do servidor: '+dados);
    });
    return false;
  });
});
</script>
</head>
<body>
<a href="pagina.php" id="meulink">ATACAR</a>
<div id="div_alvo"></div>
</body>
</html>

Salvei como pagina.php mas n consegui ver o script funcionando, quando clico em atacar nada acontece.

 

E outra, n faço idéia de como fazer esse código atualizar o sql.

tem que rodar esse código:

$query = $db->execute("update `players` set `hp`=? where `id`=?", array($player->hp - 2, $player->id));
e imprimir na div: você perdeu 2 de vida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, para o código funcionar você precisa ter a lib do jQuery na página.

Para pegá-la, vá aqui: www.jquery.com

 

Faça o download e insira no seu <head>

 

Abraços

 

PS: Quanto ao seu SQL, você está utilizando programação orientada a objetos, o que me impede de constatar possiveis problemas da página, já que tudo é orientado às classes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, para o código funcionar você precisa ter a lib do jQuery na página.

Para pegá-la, vá aqui: www.jquery.com

 

Faça o download e insira no seu <head>

 

Abraços

 

PS: Quanto ao seu SQL, você está utilizando programação orientada a objetos, o que me impede de constatar possiveis problemas da página, já que tudo é orientado às classes.

 

Não deu pra fazer oque eu queria, que é atualizar a db.

Acho q você n entendeu a minha duvida: http://www.phpfreaks.com/forums/index.php/board,51.0.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rs.. Acho que você que não entendeu o propósito do script.

A "página.php" é requisitada, e nela você faz o que quiser, muda tabela, destrói o site, baixa ---ografia... E depois retorna algo ao jQuery.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.