Hice mi propia versión del juego
Introducción
¡Practiquemos con PHP!
¿Qué es la consola de comandos?
Cómo entrenar tu pensamiento lógico
Conceptos básicos en la práctica
Operadores lógicos con PHP
Operadores aritméticos con PHP
Estructuras de control con PHP
¿Qué son las funciones?
Ejercicios matemáticos con código
Mostrando datos en HTML desde PHP
¡Ponte a prueba!
Microproyecto de lógica
Microproyecto: Juego de ordenamiento de palabras, diseño de flujo y algoritmo
¡Creando nuestro juego!
Mejorando nuestro juego
Finalizando nuestro juego
Ejercicios de práctica
Conclusiones
Code Review del proyecto y buenas prácticas
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Ana Belisa Martínez
Aportes 36
Preguntas 8
Hice mi propia versión del juego
main.php
analisis.php
Noté que puede suceder que al momento de utilizar str_shuffle nuestra palabra desordenada podría quedar en el orden correcto, así que modifiqué el codigo para evitarlo.
$palabras = array("sol", "luna", "cielo");
$palabrasDesordenadas= array();
for($i=0; $i<count($palabras); $i++){
do{
$palabrasDesordenadas[$i]=str_shuffle($palabras[$i]);
}while($palabrasDesordenadas[$i]==$palabras[$i]);
}
Para los que no les funcione el enviar correctamente, en el form hay que renombrar el name por posicion0 , posicion1, posicion2
Espero les ayude.
Interesante como provoco los errores para luego corregirlos, esto pasa muy seguido en la practica…
a ustedes no les pasa?
Les comparto el código de la clase con pequeños ajustes para que se vea un poco mejor, se ve así:
Formulario:
Respuesta:
main.php
<?php
$wordsList = ["sol", "luna", "cielo"];
$scrambledWords = [];
for($i=0; $i < count($wordsList); $i++){
$scrambledWords[$i] = str_shuffle($wordsList[$i]);
echo "Palabra " . ($i+1) . ": $scrambledWords[$i]<br>";
}
echo "
<br>
<h3>Ingresa tus respuestas:</h3>
<form action ='analisis.php'>
<span>1. </span>
<input type='text' name='word0'><br>
<span>2. </span>
<input type='text' name='word1'><br>
<span>3. </span>
<input type='text' name='word2'><br>
<button type='submit'>Enviar</button>
</form>
";
analisis.php
<?php
$wordsList = ["sol", "luna", "cielo"];
if($_REQUEST["word0"] == $wordsList[0]) {
echo "La primera palabra ingresada es correcta<br>";
} else {
echo "La primera palabra ingresada es incorrecta, la palabra correcta es: $wordsList[0]<br>";
}
if($_REQUEST["word1"] == $wordsList[1]) {
echo "La segunda palabra ingresada es correcta<br>";
} else {
echo "La segunda palabra ingresada es incorrecta, la palabra correcta es: $wordsList[1]<br>";
}
if($_REQUEST["word2"] == $wordsList[2]) {
echo "La tercera palabra ingresada es correcta<br>";
} else {
echo "La tercera palabra ingresada es incorrecta, la palabra correcta es: $wordsList[2]<br>";
}
Mejorando mi código anterior con lo aprendido:
<?php
$palabras=["enredadera","sombra","hoja","pasto","edificio","gatos"];
$retos = [];
foreach($palabras as $palabra) {
$retos[] = str_shuffle($palabra);
}
if($_REQUEST) {
$indice = 0;
foreach($_REQUEST as $respuesta) {
$correcta=$palabras[$indice++];
if($respuesta == $correcta) {
echo "<strong>$respuesta:</strong> ¡Respuesta correcta! <strong>:)</strong> <br><br>";
}else {
echo "<strong>$respuesta:</strong> ¡Incorrecto! <strong>:(</strong><br>La respuesta es: <strong>" . $correcta . "</strong><br><br>";
}
}
echo "<input type='button' value='Volver a jugar' onClick='history.go(-1);'>";
exit();
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Juego</title>
</head>
<body>
<h1>Adivina la palabra</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<?php
$i=0;
foreach($retos as $reto) {
echo "<p><strong>$reto</strong> <input type='text' name='respuesta" . ++$i ."' autocomplete='off'></p>";
}
?>
<button type="submit">Enviar</button>
</form>
</body>
</html>
Mi solución:
$palabras_ordenadas = array("sol", "cielo", "luna");
$i = 0;
foreach ($_REQUEST as $key => $value) {
if($value == $palabras_ordenadas[$i])
echo "coincide!" . "<br>";
else
echo "no coincide!" . "<br>";
$i++;
}
Mi Aporte:
Me encanta la positividad con la que resuelve el error
index.php
$palabras = array(“sol”, “luna”, “cielo”);
$palabrasDesordenadas = array();
for($i = 0; $i < 3; $i++){
$palabrasDesordenadas[$i]= str_shuffle($palabras[$i]);
}
print_r($palabrasDesordenadas);
echo “
<form action=‘analisis.php’>
<input type=‘text’ name=‘palabra0’>
<input type=‘text’ name=‘palabra1’>
<input type=‘text’ name=‘palabra2’>
<button type=‘submit’>Enviar</button>
</form>
”;
Pense que era mucho mas dificil obtener las respuestas que se envian del html
Asi escribi el analisis
<?php
print_r($_REQUEST);
echo "<br>";
for ($i = 0; $i < 3; $i++) {
switch ($_REQUEST['palabra'.$i]) {
case 'sol' : echo "<br>Palabra correcta<br>"; break;
case 'luna' : echo "<br>Palabra correcta<br>"; break;
case 'cielo' : echo "<br>Palabra correcta<br>"; break;
default: echo "<br>Palabra incorrecta<br>";
}
}
Les doy una mejor forma de hacerlo con bucles:
index.php
<?php
$palabras = ["auto", "camello", "piesa", "alfajor", "alfombra", "computadora", "indio", "Guerra",
"elicoptero", "Canada", "Lucifer", "pelicula", "anonimo", "abstracto", "dislexia", "agua"];
?>
<form method="post" action="./comprobar.php">
<?php
foreach ($palabras as $key) {
$letras = str_split($key);
shuffle($letras);
echo implode("", $letras);
echo "<input type='text' name='palabra$key' placeholder='Escribe aquí'>";
echo "<br>";
}
?>
<input type="submit" value="Enviar">
</form>
comprobar.php
<?php
$palabras = ["auto", "camello", "piesa", "alfajor", "alfombra", "computadora", "indio", "Guerra",
"elicoptero", "Canada", "Lucifer", "pelicula", "anonimo", "abstracto", "dislexia", "agua"];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
foreach ($palabras as $key) {
$inputName = "palabra" . $key;
$inputValue = $_POST[$inputName] ?? '';
if (strcasecmp($key, $inputValue) === 0) { //compara string
echo "CORRECTO ¡Coincide! La palabra original era $key ";
} else {
echo "No coincide la palabra, Esta era $key ";
}
echo "<br>";
}
}
?>```
Les dejo mi analisis.php
ordene y di espacios a la salida de los textos, para que se lean mejor jejeje
<?php
print_r($_REQUEST);
$palabras = array("sol", "luna", "cielo");
echo "<br>";
if($_REQUEST["palabra0"] == $palabras[0]) {
echo "La palabra ingresada es correcta", "<br>";
} else {
echo "La palabra ingresada no es correcta, la palabra correcta es: <strong>".$palabras[0], "</strong><br>";
}
if($_REQUEST["palabra1"] == $palabras[1]) {
echo "La palabra ingresada es correcta", "<br>";
} else {
echo "La palabra ingresada no es correcta, la palabra correcta es: <strong>".$palabras[1], "</strong><br>";
}
if($_REQUEST["palabra2"] == $palabras[2]) {
echo "La palabra ingresada es correcta", "<br>";
} else {
echo "La palabra ingresada no es correcta, la palabra correcta es: <strong>".$palabras[2], "</strong><br>";
}
?>
La verdad no le entiendo como subir imagenes jajaja asi que coloco el link.
Le hice algunas mejoras al jueguito
https://drive.google.com/file/d/1R2Qr8-ajPUpRXp3lmDmyNAiJdfx5CkC4/view?usp=share_link
https://drive.google.com/file/d/1AYLoW3N8phlm4mLvZG7Ehl2zvwZy2zBg/view?usp=share_link
https://drive.google.com/file/d/12-rfABW-_O0aey5saiaUcAzU2W_4qK9D/view?usp=share_link
https://drive.google.com/file/d/1TGreuPZgmG6wXh2mQTJ7QLzsZUwwXylJ/view?usp=share_link
Main
<?php
//* Palabras iniciales
$palabras = ["sol", "luna", "cielo"];
$palabras_desordenadas= [];
// *Mezcla de palabras
for ($i=0; $i < 3 ; $i++) {
$palabras_desordenadas [$i] = str_shuffle($palabras[$i]);
}
print_r($palabras_desordenadas);
echo "
<form action='analisis.php' >
<input type='text' name='palabra0'>
<input type='text' name='palabra1'>
<input type='text' name='palabra2'>
<button type='submit'>Enviar 😎</button>
</form>
";
?>
Analisis
<?php
// *Obtener respuesta usuario
print_r($_REQUEST);
$palabras = ["sol", "luna", "cielo"];
// *Verificar respuesta usuario
if($_REQUEST["palabra0"] == $palabras[0]){
echo "<br>Adivininaste 🎉 las respuesta es correcta<br>";
}else{
echo "<br>La repuesta no es la correcta 🥺, la palabra es {$palabras[0]}<br>";
}
if($_REQUEST["palabra1"] == $palabras[1]){
echo "Adivininaste 🎉 las respuesta es correcta<br>";
}else{
echo "La repuesta no es la correcta 🥺, la palabra es {$palabras[1]}<br>";
}
if($_REQUEST["palabra2"] == $palabras[2]){
echo "Adivininaste 🎉 las respuesta es correcta<br>";
}else{
echo "La repuesta no es la correcta 🥺, la palabra es {$palabras[2]}<br>";
}
?>
Buenas, yo le hice unas pequeñas modificaciones a el juego, entre ellas:
Las palabras van hacer aleatorias dentro de una lista de 60 palabras.
Si no logras completar las 3 palabras, no te mostrara cuales son.
Luego de que completes las palabras podrás volver a jugar.
Codigo:
<?php
session_start();
$words = array('sol', 'luna', 'cielo', 'perro', 'gato', 'animales', 'yogur', 'casa', 'silla', 'mesa', 'libro', 'lapiz', 'bolsa', 'zapato', 'reloj', 'agua', 'planta', 'nube', 'pajaro', 'raton', 'mesa', 'piso', 'lago', 'mar', 'arbol', 'pan', 'luz', 'cama', 'mes', 'pastel', 'cuerda', 'cafe', 'manzana', 'limon', 'telefono', 'pescado', 'pulgar', 'rana', 'ratonera', 'sopa', 'tabla', 'uva', 'vaca', 'wifi', 'xilofono');
$numbers_rand = array();
$words_jumbled = array();
if(!isset($_SESSION['numbers_rand'])) {
for ($i = 0; $i< 3; $i++)
{
$number_rand = rand(0,count($words));
$numbers_rand[$i]= $number_rand;
$words_jumbled[$i] = str_shuffle($words[$number_rand]);
}
$_SESSION['numbers_rand'] = $numbers_rand;
} else {
$numbers_rand = $_SESSION['numbers_rand'];
for ($i = 0; $i< 3; $i++) {
$words_jumbled[$i] = str_shuffle($words[$numbers_rand[$i]]);
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Encuentra la palabra correcta</title>
</head>
<body>
<h1>¡Bienvenido a el siguiente juego donde le pasaremos palabras desordenadas, y usted tendra que ordenarlas!</h1>
<div class="palabras_desordenadas"><?php $i = 1; foreach ($words_jumbled as $words_jumbled_print) {
echo "<h2>$i palabra: $words_jumbled_print \n</h2>";
$i++;
}?></div>
<form action="analyze.php" method="post">
<input type="text" placeholder="Ingrese la primera palabra" name="word_user_1">
<input type="text" placeholder="Ingrese la segunda palabra" name="word_user_2">
<input type="text" placeholder="Ingrese la tercera palabra" name="word_user_3">
<button>Enviar</button>
</form>
</body>
</html>
Notas: La función “session_start” lo que hace en pocas palabras es iniciar una sesión, para almacenar en “$_SESSION” el numero aleatorio, para cuando se envié el formulario, las palabras no se vuelvan a reasignar.
<?php
include "index.php";
$meter = 1;
$correct = 0;
for ($i=0; $i <count($numbers_rand); $i++) {
$words_verify = strtolower($words[$numbers_rand[$i]]);
$word_user= strtolower($_REQUEST['word_user_' . $meter]);
if ($word_user == $words_verify) {
echo "<p>Palabra $meter correcta</p>";
$correct++;
if ($correct==3) {
?>
<p>¡Felicidades, has ganado!</p>
<a href="sing-off.php">Jugar de nuevo</a>
<?php
}
}
else
{
echo "<p>Palabra $meter es incorrecta</p>";
}
$meter++;
}
Notas: En este siguiente archivo, lo que se hace es incluir el archivo anterior con la palabra reservada “incluide” para evitar tener que volver a escribir los arrays, y también para poder imprimir los resultados en el archivo anterior.
Aquí es este archivo se hace un ciclo for, para evitar escribir tanto código, y dentro del if de verificación de las dos palabras, hay un if, que comprueba si las 3 palabras fueron ordenadas correctamente, en el caso que sí, se muestra un mensaje de felicitaciones y un link para poder volver a jugar.
<?php
session_start();
session_destroy();
header('Location: index.php');
Notas: Ya en este ultimo archivo, se inicia la sesión, y luego se cierra (para que los datos guardados en ella se borren, y a redireccionar a la pagina de inicio, las palabras no sean las mismas) y luego se manda a la pagina “index.php”.
main.php :
<?php
$palabras = ["luna", "cielo", "sol", "estrella"];
$palabras_desordenadas = [];
foreach ($palabras as $palabra) {
array_push($palabras_desordenadas, str_shuffle($palabra));
}
$i = 0;
?>
<h1>Juego: Ordena las palabras.</h1>
<form action="analisis.php">
<?php foreach ($palabras_desordenadas as $palabra) : ?>
<label for="<?php echo $palabra ?>"><?php echo $palabra ?></label>
<input type="text" id="<?php echo $palabra ?>" name="<?php echo $i ?>" /></br>
<?php $i++;?>
<?php endforeach; ?>
<button type="submit">Enviar</button>
</form>
analisis.php :
<?php
$palabras = ["luna", "cielo", "sol", "estrella"];
$i = 0;
foreach($_REQUEST as $respuesta) {
if($respuesta == $palabras[$i]){
echo "La palabra es correcta";
echo "<br>";
} else {
echo "La palabra es incorrecta, la palabra correcta es: $palabras[$i]";
echo "<br>";
}
$i++;
Sería chévere implementar operadores ternarios para cada ejemplo, aunque creo que no se podrá, ya que la sentencia ‘echo’ requiere finalizar la sentencia con punto y coma.
O bueno, a no ser que se implemente una variable adicional tipo string que almacene la respuesta en cada caso.
Dejo el link que encontré sobre este tema aquí.
Quise aprovechar los ciclos para utilizar menos líneas de código.
main.php
<?php
$word = array("Warcraft", "Samurai");
$unOrderWord = array();
echo '<h1>Find the hide word</h1>';
for ($i=0; $i < count($word); $i++) {
$unOrderWord[$i] = str_shuffle(strtolower($word[$i]));
echo '
<form action="./results.php">
<label>'.$unOrderWord[$i].'</label>
<br>
<input id="name" type="text" name="word'.$i.'" placeholder="Write the correct word">
<br>
<br>
';
}
echo '<button type="submit">Enviar</button>
</form>';
results.php
<?php
print_r($_REQUEST);
$word = array("Warcraft", "Samurai");
for ($i=0; $i <count($_REQUEST) ; $i++) {
if($_REQUEST["word".$i] === strtolower($word[$i])){
$correctWord = ucwords($word[$i]);
echo '<p>La palabra '.$correctWord.' es correcta</p>';
}
else{
echo '<p>La palabra '.$_REQUEST["word".$i].' es incorrecta</p>';
}
}
Que el curso está muy bueno, es chevere interactuar con el html y con los datos que se reciban de un formulario
Les tengo una versión mas cortica de lo que va en php
<?php
print_r($_REQUEST);
$palabrasOrdenadas = ["sol", "luna", "cielo"];
for ($i=0; $i < count($palabrasOrdenadas); $i++) {
if ($_REQUEST["palabra".$i] == $palabrasOrdenadas[$i]) {
echo "<br> La palabra ".$_REQUEST["palabra".$i]. " es correcta";
}else{
echo "<br> La palabra ".$_REQUEST["palabra".$i]. " es incorrecta. Estabas buscando la palabras ". $palabrasOrdenadas[$i];
}
}
Para no tener un código tan amplio en la parte de analisis.php use variables en $_REQUEST[“nombre del input”].
.
<?php
print_r($_REQUEST);
$words = ["sun", "moon", "sky"];
for ($i=0; $i < 3; $i++) {
$temp = "word". (string) $i;
if ($_REQUEST[$temp]==$words[$i]) {
echo "Correct! <br>";
}else{
echo "Wrong answer! R: $words[$i] <br>";
}
}
Yo hice mi aporte, desde la clase anterior y aquí va, trata de hacerlo un poco más entendible, pero a ver que opinan los compañeros.
<?php
$words = array('auto', 'arbol', 'pelota');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Microproyecto</title>
<style>
.ml-1 {
margin-left: 1rem;
}
.mb-1 {
margin-bottom: 1rem;
}
</style>
</head>
<body>
<h1>Ordena las siguientes palabras y envia la solicitud</h1>
<form method="post" action="./action.php">
<?php
foreach ($words as $word) {
echo str_shuffle($word) . "<input class='ml-1 mb-1' type='text' required name='$word' /><br>";
}
?>
<button type="submit">Revisar</button>
</form>
</body>
</html>
<?php
// print_r($_REQUEST);
// Recorremos la request y obtenemos tanto su key que tiene su valor original y su valor que ha ingresado el usuario
foreach ($_REQUEST as $key => $value) {
if ($key === $value) {
echo "La palabra $value que se ingreso es correcta <br>";
} else {
echo "La palabra ingresada es incorrecta, la palabra correcta es $key <br>";
}
}
echo "<br>";
main.php
<?php
$palabras = ["Limon","Manzana", "Pera"];
$palabrasDesordenadas = array();
for($i = 0; $i < count($palabras); $i++){
$palabrasDesordenadas[$i] = str_shuffle($palabras[$i]);
}
print_r($palabrasDesordenadas); // imprimimos el array con print_r()
echo "
<form action='validar.php'>
<label> Palabra en la posicion 0 </label> <input type = 'text' name = 'valorPosicion0'> <br>
<label> Palabra en la posicion 1 </label> <input type = 'text' name = 'valorPosicion1'> <br>
<label> Palabra en la posicion 2 </label> <input type = 'text' name = 'valorPosicion2'> <br>
<button type='submit'>Enviar</button>
</form>
";
Validar. php
<?php
print_r($_REQUEST);
$palabras = ["Limon","Manzana", "Pera"];
if($_REQUEST['valorPosicion0'] == $palabras[0]){
echo "La palabras que escribiste es correcta ";
}
else{
echo " La palabra que escribiste es incorrecta, vuelve a intentarlo ";
}
if($_REQUEST['valorPosicion1'] == $palabras[1]){
echo "La palabras que escribiste es correcta ";
}
else{
echo " La palabra que escribiste es incorrecta, vuelve a intentarlo ";
}
if($_REQUEST['valorPosicion2'] == $palabras[2]){
echo "La palabras que escribiste es correcta ";
}
else{
echo " La palabra que escribiste es incorrecta, vuelve a intentarlo ";
}
<?php
$palabras=["enredadera","sombra","hoja"];
$retos=["endararede","brosam","ahjo"];
$envio = $_REQUEST;
$contador = 0;
foreach($envio as $a){
if($a == $palabras[$contador]){
echo "<br>La palabra ".$a." es correcta<br>";
}
else{
echo "<br>La palabra ".$a." es incorrecta<br>";
}
$contador += 1;
}
?>
Muy confuso el video, no explica como se añaden los elementos a la array $palabrasDesordenadas. Lo tuve que detener y mirar varias veces para entenderlo, y no me considero tonto
Mi aporte de analisis.php
<?php
print_r($_REQUEST);
$palabras = [
"hola",
"mundo",
"auto"
];
echo "<br>";
for($i=0; $i<3 ; $i++) {
if ($palabras[$i] == $_REQUEST["palabra".$i]) {
echo "la palabra $palabras[$i] es correcta <br>";
} else {
echo "la palabra " . $_REQUEST['palabra'.$i] . " es in-correcta <br>";
}
}
analisis.php
// print_r($_REQUEST);
$palabras = array(“sol”, “luna”, “cielo”);
if($_REQUEST[“palabra0”] == $palabras[0]){
echo “La palabra ingresada es correcta” ."<br>";
} else {
echo “La palabra ingresada es incorrecta, la palabra correcta es: " .$palabras[0] .”<br>";
}
if($_REQUEST[“palabra1”] == $palabras[1]){
echo “La palabra ingresada es correcta” ."<br>";
} else {
echo “La palabra ingresada es incorrecta, la palabra correcta es: " .$palabras[1] .”<br>";
}
if($_REQUEST[“palabra2”] == $palabras[2]){
echo “La palabra ingresada es correcta” ."<br>";
} else {
echo “La palabra ingresada es incorrecta, la palabra correcta es: " .$palabras[2] .”<br>";
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?