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" , " 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= 0;
- $noExiste = false;
- $cont= count($coleccionPalabras);
- echo "Ingrese una palabra: \n";
- $palabra=trim(fgets(STDIN));
- while($i<$cont && !$noExiste){
- if($coleccionPalabras[$i]["palabra"]<>$palabra){
- $coleccionPalabras[$i] = array ("palabra"=> $palabra);
- $noExiste=true;
- }else{
- echo "La palabra ingresada ya existe \n";
- }
- }
- echo "Ingrese pista: \n";
- $pista=trim(fgets(STDIN));
- echo "Ingrese los puntos: \n";
- $puntos=trim(fgets(STDIN));
- $coleccionPalabras[$i]= array ("pista"=> $pista, "puntosPalabra"=> $puntos);
- return $coleccionPalabras;
- }
- /**
- * Obtener indice aleatorio
- *@param int $min
- *@param int $max
- *@return int
- */
- function indiceAleatorioEntre($min,$max){
- $cantPal = count($coleccionPalabras);
- $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=($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";
- $descubiertas= destaparLetra($coleccionLetras,$letra);
- $letra1= stringLetrasDescubiertas($descubiertas);
- echo $letra1. "\n";
- $coleccionLetras=$descubiertas;
- //print_r($letra1);
- }else{
- echo "la letra" . $letra ."no pertenece a la palabra. QUEDAN" .$cantIntentos . " INTENTOS \n";
- $cantIntentos--;
- }
- $palabraFueDescubierta= palabraDescubierta($descubiertas);
- }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){
- $coleccionJuegos[] = 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"];
- echo "Pista: ".$coleccionPalabras[$indicePalabra]["pista"];
- echo "Puntos: " .$coleccionPalabras[$indicePalabra]["puntosPalabra"];
- }
- /**
- * 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
- */
- function mostrarMayorPuntaje($coleccionJuegos){
- $n1=-1;
- $n2=0;
- $cont=count($coleccionJuegos);
- for($i=0;$i<$cont;$i++){
- if($coleccionJuegos[$i]["puntos"]<$n1){
- $n1=$coleccionJuegos[$i]["puntos"];
- $n2=$coleccionJuegos[$i]["indicePalabra"];
- }
- }
- echo "El mayor puntaje obtenido es: $n1 \n";
- echo "El indice de la palabra jugada fue: $n2 \n";
- }
- /*>>> 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
- * @param int $puntajeUsuario
- */
- function mostrarPrimerPuntaje($coleccionJuegos,$puntajeUsuario){
- //boolean $primerP
- //int $info1, $info2
- $j=0;
- $primerP=false;
- $cont=count($coleccionJuegos);
- do{
- if($coleccionJuegos[$j]["puntos"]>$puntajeUsuario){
- $info1=$coleccionJuegos[$j]["puntos"];
- $info2=$coleccionJuegos[$j]["indicePalabra"];
- $primerP=true;
- }else{
- $j=$j+1;
- }
- }while($primerP && $j<$cont);
- if($primerP){
- echo "El primer puntaje que supera el puntaje indicado es: $info1 \n";
- echo "El indice de la palabra jugada fue: $info2 \n";
- }else{
- echo "No se ha encontrado un puntaje mayor al indicado \n";
- }
- }
- /*>>> 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);
- $opcion = seleccionarOpcion();
- switch ($opcion) {
- case 1: //Jugar con una palabra aleatoria
- //int $puntos
- $indiceAleatorioEntre= solicitarIndiceEntre($n1,$n2);
- $indicePalabra=$indiceAleatorioEntre;
- $puntos= jugar($coleccionPalabras,$indicePalabra,$cantDeIntentos);
- $coleccionJuegos=agregarJuego($coleccionJuegos,$puntos,$indicePalabra);
- break;
- case 2: //Jugar con una palabra elegida
- break;
- case 3: //Agregar una palabra al listado
- break;
- case 4: //Mostrar la información completa de un número de juego
- break;
- case 5: //Mostrar la información completa del primer juego con más puntaje
- break;
- case 6: //Mostrar la información completa del primer juego que supere un puntaje indicado por el usuario
- break;
- case 7: //Mostrar la lista de palabras ordenada por orden alfabetico
- break;
- }
- }while($opcion != 8);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement