18 de agosto de 2013
Quem disse que não dá pra criar Jogos PHP?
É possível sim, claro que não serão jogos de aventura onde seu personagem passeia pela tela na caça de inimigos, mas existem muitos Jogos PHP espalhados pela internet como o Travian, The Crims e Gladiatus.
Neste tutorial PHP vou mostrar o desenvolvimento de um jogo simples chamado Adivinhe o Número. Nele usei apenas um único arquivo PHP por questões didáticas.
O jogo funciona assim: O computador escolhe um número entre 1 e 100 e você tem que acertá-lo com o menor número de tentativas, depois de adivinhado, o número é exibido assim como o número de tentativas e é possível reiniciar o jogo.
Pode parecer muito difícil acertar 1 número entre 100, mas pra isso também existe uma técnica de lógica onde é possível acertar com um número aproximado de 7 tentativas e sem contar com a sorte, mas a lógica para isso eu vou deixar por conta de vocês (pesquise por: busca binária) ;)
Segue o código:
<?php
//inicia a sessão para guardar o número escolhido pelo PC
session_start();
//cria o formulário para interação
echo "
<p>Adivinhe o Número que eu estou pensando entre 1 e 100.</p>
<form action='#' method='post'>
<input type='text' name='entrada'>
<input type='submit' value='Tentar'>
</form><br/>
";
//se o jogo não foi iniciado ainda, inicia a contagem de tentativas e sorteia o número
if (!isset($_SESSION['tentativa'])) {
$_SESSION['tentativa'] = 1;
$_SESSION['numero'] = rand(1,100);
}
//se o usuário digitou algo e não foi a letra s
if (isset($_POST['entrada']) && $_POST['entrada'] != "s") {
//lê a entrada do usuário
$entrada = $_POST['entrada'];
//se o número digitado for o mesmo que o sorteado exibe mensagem para reinício
if ($_SESSION['numero'] == $entrada) {
echo "
Parabéns, você acertou! O número era <strong>".$_SESSION['numero']."</strong>.<br/>
Você usou <strong>".$_SESSION['tentativa']."</strong> tentativas.<br/>
Para jogar novamente digite <strong>s</strong>.
";
//se o número digitado for menor... }
} elseif ($_SESSION['numero'] > $entrada) {
echo "O número é maior que ".$entrada."!";
//se o número digitado for maior...
} else {
echo "O número é menor que ".$entrada."!";
}
//incrementa a tentativa
$_SESSION['tentativa']++;
//se o usuário digitou a letra s para começar de novo, destroi a variável de sessão com o número sorteado
} elseif (isset($_POST['entrada']) && $_POST['entrada'] == "s") {
unset($_SESSION['numero']); session_destroy();
}
?>
Visualizações: 25.152