Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /******************************************
- *Completar:
- * NOMBRE Y APELLIDOS - LEGAJOS
- * NOMBRE: Maximiliano
- * APELLIDO: Gordillo
- * LEGAJO: FAI - 2439
- ******************************************/
- //PUNTO A
- /**
- * genera un arreglo de palabras para jugar
- * @return array
- */
- function cargarPalabras(){
- $coleccionPalabras = array();
- $coleccionPalabras[0]= array("palabra"=> "papa" , "pista" => " se cultiva bajo tierra \n", "puntosPalabra"=>7);
- $coleccionPalabras[1]= array("palabra"=> "hepatitis" , "pista" => " enfermedad que inflama el higado \n", "puntosPalabra"=>7);
- $coleccionPalabras[2]= array("palabra"=> "volkswagen" , "pista" => " marca de vehiculo \n", "puntosPalabra"=>10);
- $coleccionPalabras[3]= array("palabra"=> "memoria" , "pista" => " componente fisico de la computadora \n" , "puntosPalabra"=>5);
- $coleccionPalabras[4]= array("palabra"=> "cabeza" , "pista" => " parte del cuerpo humano \n" , "puntosPalabra"=>6);
- $coleccionPalabras[5]= array("palabra"=> "remera" , "pista" => " es una prenda de ropa \n" , "puntosPalabra"=>8);
- $coleccionPalabras[6]= array("palabra"=> "tirabuzon" , "pista"=> " tipo de pasta \n" , "puntosPalabra"=>10);
- $coleccionPalabras[7]= array("palabra"=> "mouse" , "pista"=> "periferico de la computadora \n" , "puntosPalabra"=>6);
- return $coleccionPalabras;
- }
- //PUNTO C
- /**
- * genera un arreglo con la informacion de los intentos de los juegos
- * @return array
- */
- function cargarJuegos(){
- $coleccionJuegos = array();
- $coleccionJuegos[0] = array("puntos"=> 0, "indicePalabra" => 1);
- $coleccionJuegos[1] = array("puntos"=> 10,"indicePalabra" => 2);
- $coleccionJuegos[2] = array("puntos"=> 0, "indicePalabra" => 1);
- $coleccionJuegos[3] = array("puntos"=> 8, "indicePalabra" => 0);
- $coleccionJuegos[4] = array("puntos"=> 10, "indicePalabra" => 6);
- $coleccionJuegos[5] = array("puntos"=> 0, "indicePalabra" => 4);
- $coleccionJuegos[6] = array("puntos"=> 5, "indicePalabra" => 3);
- return $coleccionJuegos;
- }
- //PUNTO B
- /**
- * a partir de la palabra genera un arreglo para determinar si sus letras fueron o no descubiertas
- * @param string $palabra
- * @return array
- */
- function dividirPalabraEnLetras($palabra){
- //array $coleccionLetras
- //int $i
- $coleccionLetras = array();
- for($i=0;$i<strlen($palabra);$i++){
- $coleccionLetras[$i] = array("letra"=> $palabra[$i], "descubierta"=> false);
- }
- //print_r($coleccionLetras);
- return $coleccionLetras;
- }
- //INTERFAZ DEL MENU
- /**
- * muestra y obtiene una opcion de menú válida
- * @return int
- */
- function seleccionarOpcion(){
- echo "-------------------------------------------------------------- \n";
- echo "( 1 ) Jugar con una palabra aleatoria \n";
- echo "( 2 ) Jugar con una palabra elegida \n";
- echo "( 3 ) Agregar una palabra al listado \n";
- echo "( 4 ) Mostrar la información completa de un número de juego \n";
- echo "( 5 ) Mostrar la información completa del primer juego con más puntaje \n";
- echo "( 6 ) Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario \n";
- echo "( 7 ) Mostrar la lista de palabras ordenada por orden alfabético \n";
- echo "( 8 ) Salir \n";
- do{
- echo "Ingrese una opcion valida: \n";
- $opcion=trim(fgets(STDIN));
- }while(($opcion<1) || ($opcion>8));
- echo "-------------------------------------------------------------- \n";
- return $opcion;
- }
- /**
- * Determina si una palabra existe en el arreglo de palabras
- * @param array $coleccionPalabras
- * @param string $palabra
- * @return boolean
- */
- function existePalabra($coleccionPalabras,$palabra){
- $i=0;
- $cantPal = count($coleccionPalabras);
- $existe = false;
- while($i<$cantPal && !$existe){
- $existe = $coleccionPalabras[$i]["palabra"] == $palabra;
- $i++;
- }
- return $existe;
- }
- /**
- * Determina si una letra existe en el arreglo de letras
- * @param array $coleccionLetras
- * @param string $letra
- * @return boolean
- */
- function existeLetra($coleccionLetras,$letra){
- //boolean $encontro
- //int $i
- $i=0;
- $encontro = false;
- do{
- If($coleccionLetras[$i]["letra"] == $letra){
- $encontro=true;
- }
- $i++;
- }while($encontro ==false && $i<count($coleccionLetras));
- return $encontro;
- }
- /**
- * Solicita los datos correspondientes a un elemento de la coleccion de palabras: palabra, pista y puntaje.
- * Verifica que la palabra ingresada por el usuario no exista en la colección de palabras.
- * @param array $coleccionPalabras
- * @return array
- */
- /*>>> Completar la interfaz y cuerpo de la función. Debe respetar la documentación <<<*/
- function noExiste($coleccionPalabras){
- //string $indice, $palabra, $pista
- //int $cont, $i, $puntos
- //boolean $noExiste
- $i= count($coleccionPalabras);
- $existe = false;
- echo "Ingrese una palabra: \n";
- $palabra=trim(fgets(STDIN));
- $existe= existePalabra($coleccionPalabras,$palabra);
- If($existe){
- echo "La palabra ingresada ya existe \n";
- }else{
- echo "Ingrese pista: \n";
- $pista=trim(fgets(STDIN));
- echo "Ingrese los puntos: \n";
- $puntos=trim(fgets(STDIN));
- $coleccionPalabras[$i]= array ("palabra"=> $palabra , "pista"=> $pista, "puntosPalabra"=> $puntos);
- }
- return $coleccionPalabras;
- }
- /**
- * Obtener indice aleatorio
- *@param int $min
- *@param int $max
- *@return int
- */
- function indiceAleatorioEntre($min,$max){
- //array $coleccionPalabras
- //int $cantPal, $i
- $i=rand($min,$max); //la funcion "rand" se encarga de dar un numero entero aleatorio.
- return $i;
- }
- /**
- * solicitar un valor entre min y max
- * @param int $min
- * @param int $max
- * @return int
- */
- function solicitarIndiceEntre($min,$max){
- do{
- echo "Seleccione un valor entre $min y $max: ";
- $i = trim(fgets(STDIN));
- }while(!($i>=$min && $i<=$max));
- return $i;
- }
- /**
- * Determinar si la palabra fue descubierta, es decir, todas las letras fueron descubiertas
- * @param array $coleccionLetras
- * @return boolean
- */
- function palabraDescubierta($coleccionLetras){
- //int $num1, $num
- //boolean $val
- $val=false;
- $num1 = count($coleccionLetras);
- $num2 = 0;
- foreach($coleccionLetras as $indice => $valor){
- if($valor["descubierta"] == !($val)){
- $num2=$num2+1; //incremento el valor del contador en caso de que "descubierta" sea true!
- }
- }
- if($num2==$num1){ //como al iniciar asigne a $num1 el valor de la funcion count en el arreglo $coleccionLetras..
- // ..en caso de que sean iguales significa que se a descubierto la palabra
- $val=true;
- }
- return $val;
- }
- /**
- *Solicitar letra para completar la palabra
- *@return $letra
- */
- function solicitarLetra(){
- $letraCorrecta = false;
- do{
- echo "Ingrese una letra: \n";
- $letra = strtolower(trim(fgets(STDIN)));
- if(strlen($letra)!=1){
- echo "Debe ingresar 1 letra!\n";
- }else{
- $letraCorrecta = true;
- }
- }while(!$letraCorrecta);
- return $letra;
- }
- /**
- * Descubre todas las letras de la colección de letras iguales a la letra ingresada.
- * Devuelve la coleccionLetras modificada, con las letras descubiertas
- * @param array $coleccionLetras
- * @param string $letra
- * @return array
- */
- function destaparLetra($coleccionLetras,$letra){
- for($i=0;$i<count($coleccionLetras);$i++){
- if($coleccionLetras[$i]["letra"]==$letra){
- $coleccionLetras[$i]= array("letra"=> $letra , "descubierta"=> true);
- // print_r($coleccionLetras);
- }
- }
- return $coleccionLetras;
- }
- /**
- * obtiene la palabra con las letras descubiertas y * en las letras no descubiertas. Ejemplo: he**t*t*s
- * @param array $coleccionLetras
- * @return string
- */
- function stringLetrasDescubiertas($coleccionLetras){
- //string $pal
- $pal= "";
- $val=false;
- foreach($coleccionLetras as $indice => $valor){
- if($valor["descubierta"] == (!$val)){
- $pal=$pal.($valor["letra"]);
- }else{
- $pal= $pal.("*");
- }
- }
- return $pal;
- }
- /**
- * Desarrolla el juego y retorna el puntaje obtenido
- * Si descubre la palabra se suma el puntaje de la palabra más la cantidad de intentos que quedaron
- * Si no descubre la palabra el puntaje es 0.
- * @param array $coleccionPalabras
- * @param int $indicePalabra
- * @param int $cantIntentos
- * @return int
- */
- function jugar($coleccionPalabras,$indicePalabra, $cantIntentos){
- //string $letra, $letra1
- //boolean $existe
- //array $descubiertas
- //int $puntaje
- $pal = $coleccionPalabras[$indicePalabra]["palabra"];
- $coleccionLetras = dividirPalabraEnLetras($pal);
- $pal1 = stringLetrasDescubiertas($coleccionLetras);
- //print_r($coleccionLetras);
- $puntaje = 0;
- $palabraFueDescubierta=false;
- /*>>> Completar el cuerpo de la función, respetando lo indicado en la documentacion <<<*/
- echo "pista:" . $coleccionPalabras[$indicePalabra]["pista"] ."\n"; //mostrar pista al usuario
- //solicitar letras mientras haya intentos y la palabra no haya sido descubierta:
- $descubiertas = array();
- do{
- $letra= solicitarLetra();
- $existe= existeLetra($coleccionLetras,$letra);
- If($existe){
- echo "La letra ". $letra ." descubierta \n";
- $coleccionLetras= destaparLetra($coleccionLetras,$letra);
- //print_r($letra1);
- }else{
- $cantIntentos--;
- echo "la letra: " . $letra ." no pertenece a la palabra. QUEDAN " . $cantIntentos . " INTENTOS \n";
- }
- $letra1= stringLetrasDescubiertas($coleccionLetras);
- echo $letra1. "\n";
- $palabraFueDescubierta= palabraDescubierta($coleccionLetras);
- }while(0<$cantIntentos && !$palabraFueDescubierta);
- If($palabraFueDescubierta){
- $puntaje=$coleccionPalabras[$indicePalabra]["puntosPalabra"]+$cantIntentos;
- echo "\n¡¡¡¡¡¡GANASTE ".$puntaje." puntos!!!!!!\n";
- }else{
- echo "\n¡¡¡¡¡¡AHORCADO AHORCADO!!!!!!\n";
- }
- return $puntaje;
- }
- /**
- * Agrega un nuevo juego al arreglo de juegos
- * @param array $coleccionJuegos
- * @param int $puntos
- * @param int $indicePalabra
- * @return array
- */
- function agregarJuego($coleccionJuegos,$puntos,$indicePalabra){
- $i=count($coleccionJuegos);
- $coleccionJuegos[$i] = array("puntos"=> $puntos, "indicePalabra" => $indicePalabra);
- return $coleccionJuegos;
- }
- /**
- * Muestra los datos completos de una palabra
- * @param array $coleccionPalabras
- * @param int $indicePalabra
- */
- function mostrarPalabra($coleccionPalabras,$indicePalabra){
- //$coleccionPalabras[0]= array("palabra"=> "papa" , "pista" => "se cultiva bajo tierra", "puntosPalabra"=>7);
- echo "Palabra: ".$coleccionPalabras[$indicePalabra]["palabra"]."\n";
- // echo "Pista: ".$coleccionPalabras[$indicePalabra]["pista"];
- echo "Puntos: " .$coleccionPalabras[$indicePalabra]["puntosPalabra"]."\n";
- }
- /**
- * Muestra los datos completos de un juego
- * @param array $coleccionJuegos
- * @param array $coleccionPalabras
- * @param int $indiceJuego
- */
- function mostrarJuego($coleccionJuegos,$coleccionPalabras,$indiceJuego){
- //array("puntos"=> 8, "indicePalabra" => 1)
- echo "\n\n";
- echo "<-<-< Juego ".$indiceJuego." >->->\n";
- echo " Puntos ganados: ".$coleccionJuegos[$indiceJuego]["puntos"]."\n";
- echo " Información de la palabra:\n";
- mostrarPalabra($coleccionPalabras,$coleccionJuegos[$indiceJuego]["indicePalabra"]);
- echo "\n";
- }
- /*>>> Implementar las funciones necesarias para la opcion 5 del menú <<<*/
- /**
- * muestra el mayor puntaje obtenido en los juegos
- * @param array $coleccionJuegos
- * @return int
- */
- function mostrarMayorPuntaje($coleccionJuegos){
- $n1=-1;
- $n2=0;
- $cont=count($coleccionJuegos);
- for($i=0;$i<$cont;$i++){
- if($n1<$coleccionJuegos[$i]["puntos"]){
- $n1=$coleccionJuegos[$i]["puntos"];
- $n2=$i;
- }
- }
- return $n2;
- }
- /*>>> Implementar las funciones necesarias para la opcion 6 del menú <<<*/
- /**
- * Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario
- * @param array $coleccioJuegos
- */
- function mostrarPrimerPuntaje($coleccionJuegos){
- //boolean $primerP
- //int $info1, $info2, $puntajeUsuario
- $j=0;
- $primerP=false;
- $cont=count($coleccionJuegos);
- echo "Ingrese un puntaje a comparar: \n";
- $puntajeUsuario=trim(fgets(STDIN));
- do{
- if($coleccionJuegos[$j]["puntos"]>$puntajeUsuario){
- $info1=$coleccionJuegos[$j]["puntos"];
- $info2=$j;
- $primerP=true;
- }else{
- $j=$j+1;
- }
- }while(!$primerP && $j<$cont);
- If(!$primerP){
- $info2=-1;
- }
- return $info2;
- }
- /*>>> Implementar las funciones necesarias para la opcion 7 del menú <<<*/
- /**
- * Mostrar la lista de palabras ordenada por orden alfabético
- * @param array $coleccionPalabras
- */
- function mostrarPorOrden($coleccionPalabras){
- asort($coleccionPalabras);
- print_r($coleccionPalabras);
- }
- /******************************************/
- /************** PROGRAMA PRINCIAL *********/
- /******************************************/
- // int $cantDeIntentos, $n1, $n2, $m1, $m2
- $cantDeIntentos = 6; //cantidad de intentos que tendrá el jugador para adivinar la palabra.
- $coleccionJuegos=cargarJuegos();
- $coleccionPalabras=cargarPalabras();
- do{
- $n1=0;
- $n2=count($coleccionPalabras);
- $m1=0;
- $m2=count($coleccionJuegos);
- $contJ=count($coleccionJuegos);
- $opcion = seleccionarOpcion();
- switch ($opcion) {
- case 1: //Jugar con una palabra aleatoria
- //int $puntos
- $indicePalabra=indiceAleatorioEntre($n1,$n2-1);
- $puntos= jugar($coleccionPalabras,$indicePalabra,$cantDeIntentos);
- $coleccionJuegos=agregarJuego($coleccionJuegos,$puntos,$indicePalabra);
- break;
- case 2: //Jugar con una palabra elegida
- //int $eligeI, $cont
- $elijeI=0;
- $elijeI=solicitarIndiceEntre($n1,$n2-1);
- $puntos = jugar($coleccionPalabras,$elijeI,$cantDeIntentos);
- $coleccionJuegos=agregarJuego($coleccionJuegos,$puntos,$elijeI);
- break;
- case 3: //Agregar una palabra al listado
- $coleccionPalabras= noExiste($coleccionPalabras);
- break;
- case 4: //Mostrar la información completa de un número de juego
- //int $obteniendoIndice
- //string $mostrandoJuego
- $obteniendoIndice=0;
- $obteniendoIndice=solicitarIndiceEntre($m1,$m2-1);
- mostrarJuego($coleccionJuegos,$coleccionPalabras,$obteniendoIndice);
- break;
- case 5: //Mostrar la información completa del primer juego con más puntaje
- //string $mostrarElmasAlto
- //int $numeroInd
- $numeroInd=mostrarMayorPuntaje($coleccionJuegos); //cambiar retorno de funcion y al 6
- mostrarJuego($coleccionJuegos,$coleccionPalabras,$numeroInd);
- break;
- case 6: //Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario
- //string mostrarPrimerP
- //int $indiceT
- $indiceT=mostrarPrimerPuntaje($coleccionJuegos);
- If($indiceT == -1){
- echo "el valor ingresado no es superado por ningun juego \n";
- }else{
- mostrarJuego($coleccionJuegos,$coleccionPalabras,$indiceT);
- }
- break;
- case 7: //Mostrar la lista de palabras ordenada por orden alfabetico
- //string $enOrdenAlfabetico
- mostrarPorOrden($coleccionPalabras);
- break;
- }
- }while($opcion != 8); //salir del juego!!
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement