Contenido del curso
Arreglos
Condicionales
Bucles
Funciones
Proyecto: juego del ahorcado con PHP
Bonus: HTML con esteroides
Próximos pasos
Validando las letras de los usuarios
Contenido del curso
Validando las letras de los usuarios
Jhony Cepeda
EstudianteJorge Ladino Molano
EstudianteJesus Cuadro
EstudianteJimmy Buriticá Londoño
EstudianteJoel Dominguez Merino
EstudianteSebastián López Gallego
EstudianteAka SinssChoss
EstudianteGabriel Puig
EstudianteCarlos Eduardo Gomez García
ProfesorYEISON FERNANDO CASTAÑO UBILLUS
EstudianteCarlos Eduardo Gomez García
ProfesorAngel David Velasco Bonifaz
EstudianteGuadalupe Monge Barale
EstudianteJairo Sebastián Jaramillo
EstudianteAntonio Cortes Avila
EstudianteDave Juanes
EstudianteJohan Sebastian Jimenez Molina
EstudianteJhon Carlos Romo Ramirez
Estudiantekleber Aguilar
EstudianteOscar Emmanuel Mora Morales
EstudianteCésar Luis Amundaray Rodríguez
EstudianteSólo 3 videos más, ya casi...
Interesante la manera como nombran los parámetros para que haya más claridad:
"haystack" es pajar y "needle" aguja
Interesante, no sabia eso
PHP viene con muchas funciones predefinidas, hay que aprovechar este super poder.
De verdad que sin conocer todas las funciones que ofrece PHP seria más complicado implementarlo. Claro, no imposible por que investigando todo se encuentra pero si ahorra mucho trabajo php con todo lo que ya tiene de funciones listas para usar. Así va el código con lo que hemos hecho :) .
Uff! ya quisiera tener ese arsenal de funciones en JS...
Validación mediante el bucle for
// busca coincidencia de la letra con la palabra, si es asi lo remplaza for ($i=0; $i < strlen($palabra) ; $i++) { if( $letra == $palabra[$i]){ /* multiplico x2 a la posición porque mi cadena es así "_ _ _ _ _ _ _" */ $cadena_letras[2*$i] = $letra; $econtro_letra = true; } } // si no hubo por lo menos una coincidencia disminuye la vida if($econtro_letra == false){ $vidas--; } $econtro_letra = false; // reiniciamos la variable
Tengo php8 y me dice que str_contains es función indefinida
¿Puedes mostrar tu código y el error? :D
Hola a todos, tengo eror en la funcion str_countains..
Ayuda por favor...
¡Hola! ¿Qué error tienes? La función se escribe: str_contains (sin la u) :D
NO ME FUNCIONA EL CODIGO
str_contains($buscarPalabra,$letra);
PHP Fatal error: Uncaught Error: Call to undefined function str_contains() in C:\xampp\htdocs\index.php:24 Stack trace: #0 {main}
Me pueden apoyar, no se que hay que configurarle a Visual Studio Code, por que creo que no detecta PHP 8
¿Tienes win? Acá hay un artículo con funciones alternativas para versiones anteriores de PHP. Espero te sirva. También vi que hay videos de como instalar PHP 8 en Windows, pero no probé ninguno (uso Linux)
Yo usé esto para actualizar a PHP 8:
add-apt-repository ppa:ondrej/php # Press enter when prompted. apt-get update apt install php8.0-common php8.0-cli -y apt install php8.0-{bz2,curl,intl,mysql,readline,xml} -y apt install libapache2-mod-php8.0 -y service apache2 reload # Reiniciar el servicio Apache
Todo esto en el terminal, espero te sirva. Si te sale algún error utiliza sudo.
ESTO FUE LO QUE PUDE HACER POR MI CUENTA pero no logre hacer que se descubrieran si tenia letras repetidas.
<?php $palabras = ["casa", "árbol", "computadora", "sol", "libro", "gato", "ciudad", "montaña", "coche", "flor"]; define("INTENTOS", 6); echo "JUEGO DEL AHORCADO \n"; echo "===================== \n\n"; $palabra_seleccionada = $palabras[rand(0, (count($palabras) - 1) )]; $palabra_seleccionada = strtolower($palabra_seleccionada); $longitud = strlen($palabra_seleccionada); $espacios = str_pad("", $longitud, "_"); $no_de_intento = 0; // echo $palabra_seleccionada; // echo "\n"; echo $espacios; echo "\n"; // echo "====================="; // echo "\n"; function descubrirLetra($cadena, $posicion, $nuevo_caracter) { return substr($cadena, 0, $posicion) . $nuevo_caracter . substr($cadena, $posicion + 1); } while($no_de_intento < INTENTOS){ if($espacios == $palabra_seleccionada){ echo "HAZ GANADO!!"; break; }else{ $respuesta_jugador = strtolower(readline("\n Elije una letra ")); // echo $palabra_seleccionada . "\n"; // echo $espacios . "\n"; echo "\n\n"; if(str_contains($palabra_seleccionada, $respuesta_jugador)){ $posicion = strpos($palabra_seleccionada, $respuesta_jugador); $espacios = descubrirLetra($espacios, $posicion, $respuesta_jugador); echo $espacios; echo " \n $respuesta_jugador si se encuentra \n"; } else{ echo "no se encuentra \n"; $no_de_intento ++; echo "Intentos :" . $no_de_intento; echo "\n"; } } }
Para los que estan usando PHP 7.* les dejo mi código:
\<?php $possibleWords = \["Bebida", "Prisma", "Ala", "Dolor", "Piloto", "Baldosa", "Terremoto", "Asteroide", "Gallo", "Platzi"]; define("MAX\_ATTEMPS", 6); echo "¡Juego del ahorcado! \n\n"; *// Iniciamos el juego*$choosenWord = $possibleWords\[rand(0, count($possibleWords) - 1)];$choosenWord = strtolower($choosenWord);$wordLength = strlen($choosenWord);$discoveredLetters = str\_pad("", $wordLength, "\_");$attempts = 0; echo "Palabra de $wordLength letras \n\n";echo $discoveredLetters . "\n\n"; $playerLetter = readline("Escribe una letra: ");$playerLetter = strtolower($playerLetter); if (strpos($choosenWord, $playerLetter) !== false) { $offset = 0; while (($letterPosition = strpos($choosenWord, $playerLetter, $offset)) !== false) { $discoveredLetters\[$letterPosition] = $playerLetter; $offset = $letterPosition + 1; }} else { $attempts++; echo "Letra incorrecta 😼. Te quedan " . (MAX\_ATTEMPS - $attempts) . " intentos";} echo "\n";echo $discoveredLetters . "\n";
<?php // Palabras para el juego $palabras = array("gato", "perro", "elefante", "jirafa", "leon"); // se crea el array palabras con las palabras para el juego // Seleccionar una palabra al azar $palabra = $palabras[array_rand($palabras)]; // se crea la variable palabra que obtiene una palabra al azar del array palabras // Número de intentos permitidos $intentosMaximos = 6; // se crea la variable intentosMaximos con el valor 6 // Letras adivinadas $letrasAdivinadas = array(); // se crea el array letrasAdivinadas donde se guardarán las letras adivinadas // Número de intentos realizados $intentosRealizados = 0; // se crea la variable intentosRealizados con el valor 0 donde se guardarán los intentos realizados // Función para mostrar la palabra oculta function mostrarPalabraOculta($palabra, $letrasAdivinadas) // se crea la función mostrarPalabraOculta con los parámetros palabra y letrasAdivinadas { $oculta = ""; // se crea la variable oculta con el valor vacío foreach (str_split($palabra) as $letra) { // se crea un ciclo foreach que recorre cada letra de la palabra con la función str_split que convierte la palabra en un array if (in_array($letra, $letrasAdivinadas)) { // se crea un condicional que verifica si la letra está en el array letrasAdivinadas con la función in_array que verifica si un valor existe en un array $oculta .= $letra; // si la letra está en el array letrasAdivinadas, se agrega la letra a la variable oculta } else { // si la letra no está en el array letrasAdivinadas $oculta .= "_"; // se agrega un guión bajo a la variable oculta } } return $oculta; // se retorna la variable oculta } // Función para mostrar las letras adivinadas function mostrarLetrasAdivinadas($letrasAdivinadas) // se crea la función mostrarLetrasAdivinadas con el parámetro letrasAdivinadas { return implode(", ", $letrasAdivinadas); // se retorna el array letrasAdivinadas con las letras separadas por una coma y un espacio } // Juego del ahorcado while ($intentosRealizados < $intentosMaximos) { // se crea un ciclo while que se ejecuta mientras los intentos realizados sean menores que los intentos máximos // Mostrar la palabra oculta y las letras adivinadas echo "Palabra: " . mostrarPalabraOculta($palabra, $letrasAdivinadas) . "\n"; // se muestra la palabra oculta y las letras adivinadas echo "Letras adivinadas: " . mostrarLetrasAdivinadas($letrasAdivinadas) . "\n"; // se muestra las letras adivinadas // Solicitar una letra al usuario $letra = readline("Ingresa una letra: "); // se crea la variable letra que obtiene la letra ingresada por el usuario // Validar la letra ingresada if (strlen($letra) != 1 || !ctype_alpha($letra)) { // se crea un condicional que verifica si la letra ingresada es válida echo "Por favor, ingresa una letra válida.\n"; // si la letra no es válida, se muestra un mensaje continue; // se reinicia el ciclo } // Verificar si la letra ya fue adivinada if (in_array($letra, $letrasAdivinadas)) { // se crea un condicional que verifica si la letra ya fue adivinada echo "Ya has adivinado esa letra.\n"; // si la letra ya fue adivinada, se muestra un mensaje continue; // se reinicia el ciclo } // Agregar la letra a las letras adivinadas $letrasAdivinadas[] = $letra; // se agrega la letra al array letrasAdivinadas // Verificar si la letra está en la palabra if (strpos($palabra, $letra) === false) { // se crea un condicional que verifica si la letra está en la palabra echo "La letra no está en la palabra.\n"; // si la letra no está en la palabra, se muestra un mensaje $intentosRealizados++; // se aumenta en 1 el valor de la variable intentosRealizados } // Verificar si se adivinaron todas las letras if (mostrarPalabraOculta($palabra, $letrasAdivinadas) == $palabra) { // se crea un condicional que verifica si se adivinaron todas las letras echo "¡Felicidades! Has adivinado la palabra.\n"; // si se adivinaron todas las letras, se muestra un mensaje break; // se termina el ciclo } } // Mostrar el resultado del juego if ($intentosRealizados == $intentosMaximos) { // se crea un condicional que verifica si los intentos realizados son iguales a los intentos máximos echo "Lo siento, has perdido. La palabra era: " . $palabra . "\n"; // si los intentos realizados son iguales a los intentos máximos, se muestra un mensaje } // Fin del juego
Me costó mucho entender esta sesión 😢
Tengo que investigar mas sobre las diferentes funciones en PHP la verdad son muy utilies y ahorran mucho tiempo. 💚
Documentacion php.net de strpos
Quedan 2 clases.