SHARE
TWEET

Untitled

a guest Jun 19th, 2019 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /******************************************
  3. *Completar:
  4. * NOMBRE Y APELLIDOS - LEGAJOS
  5. * NOMBRE: Maximiliano
  6. * APELLIDO: Gordillo
  7. * LEGAJO: FAI - 2439
  8. ******************************************/
  9.  
  10.  
  11.  
  12. //PUNTO A
  13. /**
  14. * genera un arreglo de palabras para jugar
  15. * @return array
  16. */
  17. function cargarPalabras(){
  18.   $coleccionPalabras = array();
  19.   $coleccionPalabras[0]= array("palabra"=> "papa" , "pista" => " se cultiva bajo tierra  \n", "puntosPalabra"=>7);
  20.   $coleccionPalabras[1]= array("palabra"=> "hepatitis" , "pista" => " enfermedad que inflama el higado  \n", "puntosPalabra"=>7);
  21.   $coleccionPalabras[2]= array("palabra"=> "volkswagen" , "pista" => " marca de vehiculo  \n", "puntosPalabra"=>10);
  22.   $coleccionPalabras[3]= array("palabra"=> "memoria" , "pista" => " componente fisico de la computadora  \n" , "puntosPalabra"=>5);
  23.   $coleccionPalabras[4]= array("palabra"=> "cabeza" , "pista" => " parte del cuerpo humano  \n" , "puntosPalabra"=>6);
  24.   $coleccionPalabras[5]= array("palabra"=> "remera" , "pista" => " es una prenda de ropa  \n" , "puntosPalabra"=>8);
  25.   $coleccionPalabras[6]= array("palabra"=> "tirabuzon" , "pista"=> " tipo de pasta  \n" , "puntosPalabra"=>10);
  26.   $coleccionPalabras[7]= array("palabra"=> "mouse" , "pista"=> "periferico de la computadora  \n" , "puntosPalabra"=>6);
  27.  
  28.  
  29.   return $coleccionPalabras;
  30. }
  31.  
  32. //PUNTO C
  33. /**
  34.  * genera un arreglo con la informacion de los intentos de los juegos
  35.  * @return array
  36.  */
  37.  
  38.   function cargarJuegos(){
  39.     $coleccionJuegos = array();
  40.     $coleccionJuegos[0] = array("puntos"=> 0, "indicePalabra" => 1);
  41.     $coleccionJuegos[1] = array("puntos"=> 10,"indicePalabra" => 2);
  42.     $coleccionJuegos[2] = array("puntos"=> 0, "indicePalabra" => 1);
  43.     $coleccionJuegos[3] = array("puntos"=> 8, "indicePalabra" => 0);
  44.     $coleccionJuegos[4] = array("puntos"=> 10, "indicePalabra" => 6);
  45.     $coleccionJuegos[5] = array("puntos"=> 0, "indicePalabra" => 4);
  46.     $coleccionJuegos[6] = array("puntos"=> 5, "indicePalabra" => 3);
  47.  
  48.     return $coleccionJuegos;
  49. }
  50.  
  51.  //PUNTO B
  52. /**
  53. * a partir de la palabra genera un arreglo para determinar si sus letras fueron o no descubiertas
  54. * @param string $palabra
  55. * @return array
  56. */
  57. function dividirPalabraEnLetras($palabra){
  58.     //array $coleccionLetras
  59.     //int $i
  60.     $coleccionLetras = array();
  61.     for($i=0;$i<strlen($palabra);$i++){
  62.         $coleccionLetras[$i] = array("letra"=> $palabra[$i], "descubierta"=> false);
  63. }
  64. //print_r($coleccionLetras);
  65. return $coleccionLetras;
  66. }
  67.  
  68. //INTERFAZ DEL MENU
  69. /**
  70. * muestra y obtiene una opcion de menú válida
  71. * @return int
  72. */
  73. function seleccionarOpcion(){
  74.     echo "--------------------------------------------------------------  \n";
  75.     echo "( 1 ) Jugar con una palabra aleatoria  \n";
  76.     echo "( 2 ) Jugar con una palabra elegida  \n";
  77.     echo "( 3 ) Agregar una palabra al listado  \n";
  78.     echo "( 4 ) Mostrar la información completa de un número de juego  \n";
  79.     echo "( 5 ) Mostrar la información completa del primer juego con más puntaje  \n";
  80.     echo "( 6 ) Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario  \n";
  81.     echo "( 7 ) Mostrar la lista de palabras ordenada por orden alfabético  \n";
  82.     echo "( 8 ) Salir  \n";
  83.  
  84.     do{
  85.         echo "Ingrese una opcion valida:  \n";
  86.         $opcion=trim(fgets(STDIN));
  87.         }while(($opcion<1) || ($opcion>8));
  88.   echo "--------------------------------------------------------------  \n";
  89.     return $opcion;
  90. }
  91.  
  92. /**
  93. * Determina si una palabra existe en el arreglo de palabras
  94. * @param array $coleccionPalabras
  95. * @param string $palabra
  96. * @return boolean
  97. */
  98. function existePalabra($coleccionPalabras,$palabra){
  99.     $i=0;
  100.     $cantPal = count($coleccionPalabras);
  101.     $existe = false;
  102.     while($i<$cantPal && !$existe){
  103.         $existe = $coleccionPalabras[$i]["palabra"] == $palabra;
  104.         $i++;
  105.     }
  106.  
  107.     return $existe;
  108. }
  109.  
  110.  
  111. /**
  112. * Determina si una letra existe en el arreglo de letras
  113. * @param array $coleccionLetras
  114. * @param string $letra
  115. * @return boolean
  116. */
  117. function existeLetra($coleccionLetras,$letra){
  118.     //boolean $encontro
  119.     //int $i
  120.     $i=0;
  121.     $encontro = false;
  122.     do{
  123.         If($coleccionLetras[$i]["letra"] == $letra){
  124.             $encontro=true;
  125.             }
  126.             $i++;
  127.         }while($encontro ==false  &&  $i<count($coleccionLetras));
  128.          return $encontro;
  129.        }
  130.        
  131.  
  132.  
  133. /**
  134. * Solicita los datos correspondientes a un elemento de la coleccion de palabras: palabra, pista y puntaje.
  135. * Verifica que la palabra ingresada por el usuario no exista en la colección de palabras.
  136. * @param array $coleccionPalabras
  137. * @return array
  138. */
  139. /*>>> Completar la interfaz y cuerpo de la función. Debe respetar la documentación <<<*/
  140.  function noExiste($coleccionPalabras){
  141.       //string $indice, $palabra, $pista
  142.       //int $cont, $i, $puntos
  143.       //boolean $noExiste
  144.       $i= count($coleccionPalabras);
  145.       $existe = false;
  146.       echo "Ingrese una palabra:  \n";
  147.       $palabra=trim(fgets(STDIN));
  148.       $existe= existePalabra($coleccionPalabras,$palabra);
  149.           If($existe){
  150.             echo "La palabra ingresada ya existe  \n";
  151.       }else{
  152.       echo "Ingrese pista:  \n";
  153.       $pista=trim(fgets(STDIN));
  154.       echo "Ingrese los puntos:  \n";
  155.       $puntos=trim(fgets(STDIN));
  156.       $coleccionPalabras[$i]= array ("palabra"=> $palabra , "pista"=> $pista, "puntosPalabra"=> $puntos);
  157.  }
  158.   return $coleccionPalabras;
  159. }
  160.  
  161. /**
  162. * Obtener indice aleatorio
  163. *@param int $min
  164. *@param int $max
  165. *@return int
  166. */
  167.  
  168. function indiceAleatorioEntre($min,$max){
  169.     //array $coleccionPalabras
  170.     //int $cantPal, $i
  171.     $i=rand($min,$max); //la funcion "rand" se encarga de dar un numero entero aleatorio.
  172.     return $i;
  173. }
  174.  
  175. /**
  176. * solicitar un valor entre min y max
  177. * @param int $min
  178. * @param int $max
  179. * @return int
  180. */
  181. function solicitarIndiceEntre($min,$max){
  182.     do{
  183.         echo "Seleccione un valor entre $min y $max: ";
  184.         $i = trim(fgets(STDIN));
  185.     }while(!($i>=$min && $i<=$max));
  186.  
  187.     return $i;
  188. }
  189.  
  190.  
  191.  
  192. /**
  193. * Determinar si la palabra fue descubierta, es decir, todas las letras fueron descubiertas
  194. * @param array $coleccionLetras
  195. * @return boolean
  196. */
  197. function palabraDescubierta($coleccionLetras){
  198.   //int $num1, $num
  199.   //boolean $val
  200.   $val=false;
  201.   $num1 = count($coleccionLetras);
  202.   $num2 = 0;
  203.   foreach($coleccionLetras as $indice => $valor){
  204.     if($valor["descubierta"] == !($val)){
  205.       $num2=$num2+1;  //incremento el valor del contador en caso de que "descubierta" sea true!
  206.     }
  207.   }
  208.     if($num2==$num1){ //como al iniciar asigne a $num1 el valor de la funcion count en el arreglo $coleccionLetras..
  209.                         // ..en caso de que sean iguales significa que se a descubierto la palabra
  210.       $val=true;
  211.   }
  212.   return $val;
  213. }
  214.  
  215. /**
  216. *Solicitar letra para completar la palabra
  217. *@return $letra
  218. */
  219. function solicitarLetra(){
  220.     $letraCorrecta = false;
  221.     do{
  222.         echo "Ingrese una letra:  \n";
  223.         $letra = strtolower(trim(fgets(STDIN)));
  224.         if(strlen($letra)!=1){
  225.             echo "Debe ingresar 1 letra!\n";
  226.         }else{
  227.             $letraCorrecta = true;
  228.         }
  229.  
  230.     }while(!$letraCorrecta);
  231.  
  232.     return $letra;
  233. }
  234.  
  235. /**
  236. * Descubre todas las letras de la colección de letras iguales a la letra ingresada.
  237. * Devuelve la coleccionLetras modificada, con las letras descubiertas
  238. * @param array $coleccionLetras
  239. * @param string $letra
  240. * @return array
  241. */
  242. function destaparLetra($coleccionLetras,$letra){
  243.         for($i=0;$i<count($coleccionLetras);$i++){
  244.           if($coleccionLetras[$i]["letra"]==$letra){
  245.              $coleccionLetras[$i]= array("letra"=> $letra , "descubierta"=> true);
  246.             // print_r($coleccionLetras);
  247.           }
  248.         }
  249.     return $coleccionLetras;
  250.   }
  251.  
  252.  
  253. /**
  254. * obtiene la palabra con las letras descubiertas y * en las letras no descubiertas. Ejemplo: he**t*t*s
  255. * @param array $coleccionLetras
  256. * @return string
  257. */
  258. function stringLetrasDescubiertas($coleccionLetras){
  259.     //string $pal  
  260.     $pal= "";
  261.     $val=false;
  262.     foreach($coleccionLetras as $indice => $valor){
  263.             if($valor["descubierta"] == (!$val)){
  264.             $pal=$pal.($valor["letra"]);
  265.         }else{
  266.             $pal= $pal.("*");
  267.     }
  268.  }
  269.  
  270.     return $pal;
  271.  
  272. }
  273.  
  274. /**
  275. * Desarrolla el juego y retorna el puntaje obtenido
  276. * Si descubre la palabra se suma el puntaje de la palabra más la cantidad de intentos que quedaron
  277. * Si no descubre la palabra el puntaje es 0.
  278. * @param array $coleccionPalabras
  279. * @param int $indicePalabra
  280. * @param int $cantIntentos
  281. * @return int
  282. */
  283.  
  284. function jugar($coleccionPalabras,$indicePalabra, $cantIntentos){
  285.     //string $letra, $letra1
  286.     //boolean $existe
  287.     //array $descubiertas
  288.     //int $puntaje
  289.     $pal = $coleccionPalabras[$indicePalabra]["palabra"];
  290.     $coleccionLetras = dividirPalabraEnLetras($pal);
  291.     $pal1 = stringLetrasDescubiertas($coleccionLetras);
  292.     //print_r($coleccionLetras);
  293.     $puntaje = 0;
  294.     $palabraFueDescubierta=false;
  295.     /*>>> Completar el cuerpo de la función, respetando lo indicado en la documentacion <<<*/
  296.     echo "pista:" . $coleccionPalabras[$indicePalabra]["pista"] ."\n"; //mostrar pista al usuario
  297.     //solicitar letras mientras haya intentos y la palabra no haya sido descubierta:
  298.     $descubiertas = array();
  299.        
  300.     do{
  301.     $letra= solicitarLetra();
  302.     $existe= existeLetra($coleccionLetras,$letra);
  303.     If($existe){
  304.       echo "La letra ". $letra ." descubierta  \n";
  305.         $coleccionLetras= destaparLetra($coleccionLetras,$letra);
  306.      //print_r($letra1);
  307.     }else{
  308.         $cantIntentos--;   
  309.       echo "la letra: " . $letra  ." no pertenece a la palabra. QUEDAN "  . $cantIntentos . " INTENTOS  \n";
  310.     }
  311.     $letra1= stringLetrasDescubiertas($coleccionLetras);
  312.       echo $letra1. "\n";
  313.     $palabraFueDescubierta= palabraDescubierta($coleccionLetras);
  314.     }while(0<$cantIntentos && !$palabraFueDescubierta);
  315.    
  316.     If($palabraFueDescubierta){
  317.         $puntaje=$coleccionPalabras[$indicePalabra]["puntosPalabra"]+$cantIntentos;
  318.          echo "\n¡¡¡¡¡¡GANASTE ".$puntaje." puntos!!!!!!\n";
  319.     }else{
  320.         echo "\n¡¡¡¡¡¡AHORCADO AHORCADO!!!!!!\n";
  321.         }
  322.    
  323.     return $puntaje;
  324. }
  325.  
  326. /**
  327. * Agrega un nuevo juego al arreglo de juegos
  328. * @param array $coleccionJuegos
  329. * @param int $puntos
  330. * @param int $indicePalabra
  331. * @return array
  332. */
  333. function agregarJuego($coleccionJuegos,$puntos,$indicePalabra){
  334.     $i=count($coleccionJuegos);
  335.     $coleccionJuegos[$i] = array("puntos"=> $puntos, "indicePalabra" => $indicePalabra);
  336.     return $coleccionJuegos;
  337. }
  338.  
  339. /**
  340. * Muestra los datos completos de una palabra
  341. * @param array $coleccionPalabras
  342. * @param int $indicePalabra
  343. */
  344. function mostrarPalabra($coleccionPalabras,$indicePalabra){
  345.     //$coleccionPalabras[0]= array("palabra"=> "papa" , "pista" => "se cultiva bajo tierra", "puntosPalabra"=>7);
  346.  
  347.     echo "Palabra: ".$coleccionPalabras[$indicePalabra]["palabra"]."\n";
  348.    // echo "Pista: ".$coleccionPalabras[$indicePalabra]["pista"];
  349.     echo "Puntos: " .$coleccionPalabras[$indicePalabra]["puntosPalabra"]."\n";
  350. }
  351.  
  352.  
  353. /**
  354. * Muestra los datos completos de un juego
  355. * @param array $coleccionJuegos
  356. * @param array $coleccionPalabras
  357. * @param int $indiceJuego
  358. */
  359. function mostrarJuego($coleccionJuegos,$coleccionPalabras,$indiceJuego){
  360.     //array("puntos"=> 8, "indicePalabra" => 1)
  361.     echo "\n\n";
  362.     echo "<-<-< Juego ".$indiceJuego." >->->\n";
  363.     echo "  Puntos ganados: ".$coleccionJuegos[$indiceJuego]["puntos"]."\n";
  364.     echo "  Información de la palabra:\n";
  365.     mostrarPalabra($coleccionPalabras,$coleccionJuegos[$indiceJuego]["indicePalabra"]);
  366.     echo "\n";
  367. }
  368.  
  369.  
  370.  
  371.  
  372. /*>>> Implementar las funciones necesarias para la opcion 5 del menú <<<*/
  373. /**
  374.  * muestra el mayor puntaje obtenido en los juegos
  375.  * @param array $coleccionJuegos
  376.  * @return int
  377.  */
  378.  function mostrarMayorPuntaje($coleccionJuegos){
  379.      $n1=-1;
  380.      $n2=0;
  381.      $cont=count($coleccionJuegos);
  382.      for($i=0;$i<$cont;$i++){
  383.          if($n1<$coleccionJuegos[$i]["puntos"]){
  384.              $n1=$coleccionJuegos[$i]["puntos"];
  385.              $n2=$i;
  386.              }
  387.          }
  388.    return $n2;
  389.      
  390.     }
  391.    
  392. /*>>> Implementar las funciones necesarias para la opcion 6 del menú <<<*/
  393. /**
  394.  * Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario
  395.  * @param array $coleccioJuegos
  396.  */
  397.  function mostrarPrimerPuntaje($coleccionJuegos){
  398.      //boolean $primerP
  399.      //int $info1, $info2, $puntajeUsuario
  400.     $j=0;
  401.     $primerP=false;
  402.     $cont=count($coleccionJuegos);
  403.     echo "Ingrese un puntaje a comparar: \n";
  404.     $puntajeUsuario=trim(fgets(STDIN));
  405.     do{
  406.         if($coleccionJuegos[$j]["puntos"]>$puntajeUsuario){
  407.             $info1=$coleccionJuegos[$j]["puntos"];
  408.             $info2=$j;
  409.             $primerP=true;
  410.             }else{
  411.                 $j=$j+1;
  412.             }
  413.    }while(!$primerP && $j<$cont);
  414.    If(!$primerP){
  415.        $info2=-1;
  416.    }
  417.  return $info2;
  418.       }
  419.  
  420.  
  421. /*>>> Implementar las funciones necesarias para la opcion 7 del menú <<<*/
  422. /**
  423.  * Mostrar la lista de palabras ordenada por orden alfabético
  424.  * @param array $coleccionPalabras
  425.  */
  426.  function mostrarPorOrden($coleccionPalabras){
  427.      asort($coleccionPalabras);
  428.      print_r($coleccionPalabras);
  429.      
  430.      }
  431.  
  432.  
  433. /******************************************/
  434. /************** PROGRAMA PRINCIAL *********/
  435. /******************************************/
  436. // int $cantDeIntentos, $n1, $n2, $m1, $m2
  437. $cantDeIntentos = 6; //cantidad de intentos que tendrá el jugador para adivinar la palabra.
  438. $coleccionJuegos=cargarJuegos();
  439. $coleccionPalabras=cargarPalabras();
  440. do{
  441.     $n1=0;
  442.     $n2=count($coleccionPalabras);
  443.     $m1=0;
  444.     $m2=count($coleccionJuegos);
  445.     $contJ=count($coleccionJuegos);
  446.     $opcion = seleccionarOpcion();
  447.     switch ($opcion) {
  448.     case 1: //Jugar con una palabra aleatoria
  449.             //int $puntos
  450.             $indicePalabra=indiceAleatorioEntre($n1,$n2-1);
  451.             $puntos= jugar($coleccionPalabras,$indicePalabra,$cantDeIntentos);
  452.             $coleccionJuegos=agregarJuego($coleccionJuegos,$puntos,$indicePalabra);
  453.            
  454.            
  455.         break;
  456.     case 2: //Jugar con una palabra elegida
  457.             //int $eligeI, $cont
  458.             $elijeI=0;
  459.             $elijeI=solicitarIndiceEntre($n1,$n2-1);
  460.             $puntos = jugar($coleccionPalabras,$elijeI,$cantDeIntentos);
  461.             $coleccionJuegos=agregarJuego($coleccionJuegos,$puntos,$elijeI);
  462.        
  463.         break;
  464.     case 3: //Agregar una palabra al listado
  465.             $coleccionPalabras= noExiste($coleccionPalabras);
  466.            
  467.         break;
  468.     case 4: //Mostrar la información completa de un número de juego
  469.             //int $obteniendoIndice
  470.             //string $mostrandoJuego
  471.             $obteniendoIndice=0;
  472.             $obteniendoIndice=solicitarIndiceEntre($m1,$m2-1);
  473.             mostrarJuego($coleccionJuegos,$coleccionPalabras,$obteniendoIndice);
  474.            
  475.         break;
  476.     case 5: //Mostrar la información completa del primer juego con más puntaje
  477.             //string $mostrarElmasAlto
  478.             //int $numeroInd
  479.             $numeroInd=mostrarMayorPuntaje($coleccionJuegos); //cambiar retorno de funcion y al 6
  480.             mostrarJuego($coleccionJuegos,$coleccionPalabras,$numeroInd);
  481.         break;
  482.     case 6: //Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario
  483.             //string mostrarPrimerP
  484.             //int $indiceT
  485.             $indiceT=mostrarPrimerPuntaje($coleccionJuegos);
  486.             If($indiceT == -1){
  487.                 echo "el valor ingresado no es superado por ningun juego  \n";
  488.                 }else{
  489.             mostrarJuego($coleccionJuegos,$coleccionPalabras,$indiceT);
  490.         }
  491.            
  492.         break;
  493.     case 7: //Mostrar la lista de palabras ordenada por orden alfabetico
  494.             //string $enOrdenAlfabetico
  495.             mostrarPorOrden($coleccionPalabras);
  496.         break;
  497.     }
  498. }while($opcion != 8); //salir del juego!!
  499.  
  500. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top