Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/06/2010, 15:57
Avatar de uriurifrank
uriurifrank
 
Fecha de Ingreso: abril-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 1
Respuesta: Aprendiendo PHP - Asi es como hice un ahorcado en PHP =P

Volví de nuevo con el ahorcado y aplicando los nuevos conocimientos optimice su código y lo hice de tal manera que ahora es personalizable y uno puede elegir con que palabra jugar puesto que viene del mismo codigo original, posteo de nuevo aquí, bueno, aqui les dejo el nuevo codigo:

Código PHP:
<?php
//Comparación con la versión anterior:
//$q1 = $letras[0]
//$p1 = $p[0]

//No confundir $letra con $letras

//Palabra y separación de sus letras:


$palabra $HTTP_COOKIE_VARS["palabra"];

if (
$_GET["palabra"] |= ""){
$palabra $_GET["palabra"];
setcookie("palabra","$palabra");
}

if (!(
$palabra == "")){

$letras str_split($palabra);

$contador count($letras);

$pf 0;
$pn 0;

$bor=0;
$borrar $_GET["borrar"];
$letra $_GET["letra"];

if (
$borrar=="si" || $letra=="") {
    while (
$pn $contador){        
            
setcookie("p$pn",0);
            
$pn++;
            }
    
$bo=1;
    
setcookie("L",0);
    }
    else {
    
$bo=0;
    }
    
    

//Acertado o no acertada

$pn 0;
while (
$pn $contador){
    
$pn++;
    
$p[] = 0;
}


 
//Intentos
if (!($bo==1)){
$L $HTTP_COOKIE_VARS["L"];
}
//Si la letra enviada es correcta se envia una cookie recordandolo
//y se activa la letra, sino, se le suma el intento a $L y se envia 
//una cookie recordandolo


$pn 0;
while (
$pn $contador){

if (
$letra == $letras[$pn]){
              
$p[$pn]++;
              
setcookie("p$pn","$p[$pn]");
              }
$pn++;

}

if (!(
$bo==1)){
    
    
$pn 0;
    while (
$pn $contador){
        if (!(
$letra==$letras[$pn])){
            
$pf++;
        }
    
$pn++;
    }

if (
$pf == $contador){
    
$L=$L+1;         
    
setcookie("L",$L);
}}

//Acertada o no acertada

$pn 0;
while (
$pn $contador){
    if (
$p[$pn] == 0){
        
$p[$pn] = $HTTP_COOKIE_VARS["p$pn"];
    }
    
$pn++;
}

?>


<html>
<head>
<title> .:Ahorcado:. </title>
</head>

<Body>

<?

$pf 
0;
$pn 0;
while (
$pn $contador){
    if (
$p[$pn] != 0){
        
$pf++;
    }
$pn++;
}

if (
$pf == $contador){
    echo 
"<b>ENORABUENA HAS GANADO; La palabra era: $palabra </b>";

    
?>
    <form action="ahorcado2.php" method="GET">
  <br><br><br>Volver a empezar ?: <input type="text" name="borrar" />
  <input type="submit">
  </form>
  <?
    
} else {
  
  
//Intentos
  
if (!($bo==1) && $L >= 8){
          echo 
"Perdiste, la palabra era: $palabra";
          
          
          
?>
  <form action="ahorcado2.php" method="GET">
  <br><br><br>¿Quieres volver a empezar?: <input type="text" name="borrar" />
  <input type="submit">
  </form>
  <?
          
          
          
          
} else {
          
          
  
?>
  
  
  
  <form action="ahorcado2.php" method="GET">
  ¿Que letra crees que contiene?(Pulsa enviar sin introducir nada para volver a empezar)
  <br>
  Letra: <input type="text" name="letra" />
  <input type="submit">
  </form>
  
  
  
  <?
          
  
  $in
=8;
  
$in=$in-$L;
  
  echo 
"<br>Escribiste la letra: $letra";
  echo 
"<br> La palabra tiene $contador letras";
  echo 
"<br>Te quedan $in intentos<br>";
  
  
  
  
//Letra o "_"
  
$pn 0;
while (
$pn $contador){
  
  if (
$p[$pn] |= 0){
    echo 
"$letras[$pn] ";
  }
  else {
    echo 
"_ ";
  }
  
$pn++;
  }
    
  
  }
  
  
  
  echo 
"<br><br>";
  
  
//imagenes
  
  
$pn 0;
  while (
$pn <= 8){
    if (
$L==$pn){
        echo(
'<img src="ar') . "$pn" . ('.JPG">');
    }
    
$pn++;
  }
  
}}
          
?>
          
          <br><br><br>
          
  <form action="ahorcado2.php" method="GET">
  Nueva palabra: <input type="text" name="palabra" />
  <input type="submit">
  </form>
Desde aquí pueden probarlo:
http://azache.com/p/ahorcado/ahorcado2.php

Explico aquí el cometido de cada función:
Código:
$HTTP_COOKIE_VARS - Coge los valores de las cookies enviadas
$L - Va almacenando los intentos
$_GET - Coge los valores de los formularios
$bor - no recuerdo para que era O_o
$bo - Tiene el cometido de indicar si se debe o no resetear todo
$borrar - Transmite a $bo el reseteo
$contador - numero de letras en la palabra
$in - Sirve para decir cuantos intentos quedan
$letra - La letra escrita
$letras - array con cada letra de la palabra
$p - array con el mismo numero de "0" que letras hay, el p[1] equivale a letras[1] si p[1] es "0" significa que no se adivino esa letra, si es uno, significa que se dio con ella.
$palabra - la palabra elegida
$pn - Tan solo lo utilizo para ponerlo a 0 y utilizarlo en los while
$pf - lo mismo que $pn solo que lo utilizo para cuando necesito más de uno.
Bueno, a ver que les parece !