Es un capo el profesor Retax Master, un placer haber hecho éstos cursos.
Introducción
¿Ya conoces los fundamentos de PHP?
Arreglos
¿Qué son los arreglos?
Arreglos asociativos
Manipulando arreglos
Reto: escuela de michis
Condicionales
Aprende a tomar decisiones con if y else
Cómo organizar tu código con switch
Reto: ¿puedo retirar mis donaciones de Twitch?
Bucles
Ciclo while
¿Do... While?
Ciclo for
Ciclo foreach
Reto: ¿cuántos caminos hay para llegar al mismo punto?
Funciones
Aprende a reutilizar tu código: funciones
Parámetros en las funciones
Profundicemos en los parámetros
Uso de return
Operador de nave espacial
¡Expande tu arsenal de funciones!
Reto: completa el código
Proyecto: juego del ahorcado con PHP
¡Hagamos un juego con PHP!
Validando las letras de los usuarios
Terminando de programar el juego
Bonus: HTML con esteroides
Cómo interactúa PHP con HTML
Próximos pasos
Toma el Curso Práctico de PHP
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Aportes 16
Preguntas 1
Es un capo el profesor Retax Master, un placer haber hecho éstos cursos.
Una mejora al código es, no contar a mano las palabras que están en el arreglo, sino contarlas usando una función de PHP así:
$choosen_word = $possible_words[ rand(0, count($possible_words) -1) ];
Sí estas aquí, felicidades, ya casi terminas el curso, no pares!
Si están en Windows
, creo que desde la versión 10, si ustedes presionan las combinaciones:
Windows + .
Es decir, la tecla windows
y luego punto: .
Les aparecerá un panel de emojis, pueden ver más acá.
Por cierto una muy buena clase.
Para insertar emojis en VCode tengo la extensión
Emoji Snippets
La instalas
Escribes : en tu código
Buscas el emoji que deseas (lo puedes hacer por palabra)
Le das enter
" cat 🐈 cat-face 🐱 cat-face-with-tears-of-joy 😹 "
Yo use la lista de palabras del desafío de “ahorcado” del curso de Python.
Y para leer las palabras y pasarlas a un array:
$filename = "./data.txt";
$handle = fopen($filename,"r");
$possible_words = fread($handle,filesize($filename));
fclose($handle);
$possible_words = explode("\n",$possible_words);```
Un saludo.
Que mas juegos tiene en su cabeza?
Animo, demos ideas, sirven para la practica
Gracias.
Ya tenemos la base del juego, ahora tocará implementar un poco de lógica para determinar si la palabra contiene la letra que el usuario eligio.
Lo que puedo ver es que en efecto, PHP tiene demasiadas funciones de las cuales hacer uso.
El detalle es que conozco apenas un par jaja
Por eso me estoy apoyando de tú código aunque en un futuro volveré a hacer la implementación por mi cuenta para ver si se me ocurre algo nuevo.
De momento comparto el código de la clase.
.
Retándome a mí mismo de terminar de crear el juego, así me quedó la versión final:
<?php
$possible_words = ["Bebida", "Prisma", "Ala", "Dolor", "Piloto", "Baldosa", "Terremoto", "Asteroide", "Gallo", "Platzi"];
const MAX_ATTEMPTS = 10;
echo "Juego del ahorcado" . PHP_EOL;
// Inicializamos el juego
$selectedWord = strtolower($possible_words[rand(0, 9)]);
$word_length = strlen($selectedWord);
$discoveredLetters = str_pad("", $word_length, "_");
echo "La palabra contiene $word_length letras: " . PHP_EOL;
echo $discoveredLetters . PHP_EOL;
$attemptsLeft = MAX_ATTEMPTS;
do {
/*
creamos un arreglo que guarde las posiciones de las letras
que coincidan con $selectedWord
*/
$lettersIndex = [];
// quitamos espacios y convertimos a minúsculas
$insertedLetter = trim(strtolower(readline("\nIngresa una letra: ")));
// validamos la entrada del usuario
if (strlen($insertedLetter) !== 1) {
echo "Debes ingresar solamente una letra" . PHP_EOL;
continue;
} else if (preg_match('/[^a-z]/', $insertedLetter)) {
echo "Solamente puedes ingresar letras de la A a la Z" . PHP_EOL;
continue;
}
// si $insertedLetter coincide con alguna letra en $selectedWord
if (str_contains($selectedWord, $insertedLetter)) {
/*
iteramos para obtener todas las posiciones de las letras que
coincidan dentro de $selectedWord y las guardamos en $lettersIndex
*/
for ($i = 0; $i < $word_length; $i++) {
if ($selectedWord[$i] === $insertedLetter) {
array_push($lettersIndex, $i);
}
}
/*
ya obtenidas las posiciones, iteramos $lettersIndex para reemplazar
los guiones en $discoveredLetters por la letra en $insertedLetter
*/
foreach ($lettersIndex as $value) {
$discoveredLetters[$value] = $insertedLetter;
}
} else {
// si no se encuentran coincidencias, restamos un intento
$attemptsLeft--;
}
if ($selectedWord === $discoveredLetters) {
echo "$discoveredLetters" . PHP_EOL;
echo "Ganaste!" . PHP_EOL;
echo "\n";
break;
}
echo $discoveredLetters . PHP_EOL;
echo "Te quedan $attemptsLeft intentos" . PHP_EOL;
echo "\n";
} while (str_contains($discoveredLetters, "_") && $attemptsLeft > 0);
if ($selectedWord !== $discoveredLetters) {
echo "La palabra era $selectedWord, lo siento :(" . PHP_EOL;
echo "\n";
}
dejen la entrada del usuario en una sola letra.
$player_letter = strtolower( readline("Escribe una letra: ") );
no se que también este, pero este es mi juego.
function getPalabra(){
$palabras = ["bebida", "prisma", "ala", "dolor", "piloto", "baldosa", "terremoto", "asteroide"];
$palbara = $palabras[array_rand($palabras, 1)];
return $palbara = str_split($palbara);
}
function getCantidaLetras($palabra){
return count($palabra);
}
function setCoincidencia($palabra, $Letra, $coincidencia){
var_dump($coincidencia);
echo "\n\n";
var_dump($coincidencia);
}
$getPlabra = ["p","r","i","s","m","a"];
$palabra = $getPlabra; //getPalabra();
echo "Bienvenido al juego del ahorcado, La pabra que te toco tiene " . getCantidaLetras($palabra) . " Letras e Intentos \nLisot para jugar \n\n";
$coincidencia = [];
$ahorcado = [];
for ($i=0; $i < getCantidaLetras($palabra); $i++)
{
array_push($coincidencia, " - ");
echo $coincidencia[$i];
}
$intentos = (int) 11;
do{
echo "\n\n";
$Letra = readline("Ingresa la primera letra: ");
$error = 0;
if(strlen($Letra) == 1){
foreach ($palabra as $key => $value) {
if($value == $Letra)
{
$coincidencia[$key] = " ".$Letra." ";
}
else
{
$error++;
}
}
foreach ($coincidencia as $value) {
echo $value;
}
if($error == getCantidaLetras($palabra))
$intentos = ($intentos-1);
switch ($intentos) {
case '10':
echo "\n\n";
echo " ________|\n";
echo " |________|\n";
break;
case '9':
echo "\n\n";
echo " |\n";
echo " |\n";
echo " |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '8':
echo "\n\n";
echo " _______\n";
echo " |\n";
echo " |\n";
echo " |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '7':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " |\n";
echo " |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '6':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '5':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " | |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '4':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " |\ |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '3':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " /|\ |\n";
echo " |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '2':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " /|\ |\n";
echo " \ |\n";
echo " ________|\n";
echo " |________|\n";
break;
case '1':
echo "\n\n";
echo " _______\n";
echo " | |\n";
echo " 0 |\n";
echo " /|\ |\n";
echo " / \ |\n";
echo " ________|\n";
echo " |________|\n";
echo "\n Has perdido \n";
break;
default:
echo "";
break;
}
}
else{
echo "Solo puede ingresar una letra a la vez\n";
}
} while ($intentos > 0);
Desarrollé el juego antes de ver el video, aceptó retro colegas! 😁
<?php
# Arreglo que me almacenara las letras acertadas
$encontrados = array();
# Arreglo que me almacenara los valores que haya intentado el usuario
$intentados = array();
# Arreglo que me almacenara las letras de la palabra
$caracteresCorrectos = array();
# Se ingresa la palabra que tendra que adivinar el usuario
// $palabraEscondida = strtolower(readline("Ingresa la palabra escondida: "));
#Se puede cambiar Ferrocarril por cualquier palabra
$palabraEscondida = strtolower("Ferrocarril");
$aux = "";
# Definimos el numero de intentos que le otorgamos al usuario
$intentos = 5;
# Se imprime la longitud de la palabra como pista
echo "Longitud de la palabra: ".strlen($palabraEscondida)."\t";
# En este for almacenamos en un arreglo todas las letras que conforman a la palabra
# y le aplicamos el array_unique para evitar tener alguna letra duplicada en el arreglo.
for($i = 0; $i<strlen($palabraEscondida); $i++){
echo "_ ";
array_push($caracteresCorrectos, $palabraEscondida[$i]);
$caracteresCorrectos = array_unique($caracteresCorrectos);
$aux .= "_";
}
echo "\n";
# Mientras el usuario tenga intentos se estará ejecutando el while
while ($intentos > 0) {
# Le pedimos que nos diga una letra
$letra = readline("Teclea una letra: ");
# Validamos que NO haya intentado esa letra antes buscandola en un
# arreglo que almacena sus intentos y si ya existe le restamos una vida
# y le mostramos la advertencia de que ha perdido un intento
if(in_array($letra,$intentados)){
echo "Ya haz intentado con esa...\n";
$intentos--;
echo "Te quedan $intentos intentos\n";
}else{
# Si pasa la primera validación entonces entra a la validación donde pregunta si la letra dada
# se encuentra dentro de la palabra secreta
if(strstr($palabraEscondida,$letra)){
echo "Haz acertado una letra de la palabra escondida\n";
# Almacenamos el acierto en el arreglo de las letras encontradas y en
# el arreglo de los intentos
array_push($encontrados, $letra);
array_push($intentados, $letra);
# En este for se analiza la letra dada y se reemplaza en los "_"
for($i=0; $i<strlen($palabraEscondida); $i++){
if($letra==$palabraEscondida[$i]){
$aux[$i] = $letra;
}
}
# Si el arreglo de las letras contenidas es igual a de los
# encontrados entonces se rompe el while y asi se gana el juego de ahorcado
if(count($caracteresCorrectos)==count($encontrados)){
echo "Felicidades haz hallado todas las letras contenidas en la palabra\nGANADOR!!!\n\nSolucion: $palabraEscondida";
break;
}
}else{ #Si la letra dada no está contenida en la palabra secreta el usuario pierde una vida
echo "Intento erroneo...\n";
array_push($intentados, $letra);
$intentos--;
echo "Te quedan $intentos intentos\n";
}
}
echo $aux."\n";
}
Asi vamos en esta clase 💚
<?php
// *Juego del ahorcado
// *Palabras a usar
$possible_word = ["Bebida","Prisma", "Ala", "Dolor", "Piloto ", "Baldosa", "Terremoto", "Asteroide", "Gallo", " Platzi"];
//* Numero de intentos
define("MAX_ATTEMPTS", 6);
echo "🐱 Juego del ahorcado\n\n";
// *Inicioalizamos el juego
// *Elegimos las palabra aleatoriamente
$chossen_word = $possible_word [rand(0, 9)];
// *Convertir de mayusculas a minusculas
$chossen_word = strtolower($chossen_word);
// *Medir las logitud del las palabras
$word_length = strlen($chossen_word);
// *Cambiamos las palabras iniciales guiones
$discovered_letters = str_pad("", $word_length,"_");
$attempts = 0;
echo "Palabra de $word_length letras \n\n";
echo $discovered_letters . "\n\n";
// *Pedimos la respuesta
$player_letter = readline("Escribe una letra: ");
$player_letter = strtolower($player_letter);
echo "\n";
?>
Otra forma de agregar emojis es presionando tecla windows + .
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?