Saltar al contenido
EjemplosEnglishEspacio →

Juego del ahorcado

Adivina una palabra secreta letra por letra con seis errores permitidos.

Nivel
Avanzado
Conceptos:
Entrada y salida
Texto
Arreglos
Mientras
Azar
Lógicos
Abrir en Codoritmo

Ejecuta, modifica y depura este ejemplo en el navegador.

Lo que aprenderás

Azar elige una palabra de un arreglo. Un Mientras se repite hasta ganar o perder, y en cada letra se arma de nuevo el progreso con Subcadena.

Código

hangman.psc · 44 líneas
Algoritmo Ahorcado    Definir palabras, secreta, progreso, nuevo, letra Como Caracter    Definir errores, i Como Entero    Definir acerto Como Logico    Dimension palabras[5]    palabras[1] <- "algoritmo"    palabras[2] <- "variable"    palabras[3] <- "pantalla"    palabras[4] <- "teclado"    palabras[5] <- "programa"    // Azar(5) devuelve un número de 0 a 4    secreta <- palabras[Azar(5) + 1]    progreso <- ""    Para i <- 1 Hasta Longitud(secreta) Hacer        progreso <- progreso + "_"    FinPara    errores <- 0    Mientras progreso <> secreta Y errores < 6 Hacer        Escribir "Palabra: ", progreso, "   Errores: ", errores, " de 6"        Escribir "Letra:"        Leer letra        letra <- Minusculas(letra)        acerto <- Falso        nuevo <- ""        Para i <- 1 Hasta Longitud(secreta) Hacer            Si Subcadena(secreta, i, i) = letra Entonces                nuevo <- nuevo + letra                acerto <- Verdadero            SiNo                nuevo <- nuevo + Subcadena(progreso, i, i)            FinSi        FinPara        progreso <- nuevo        Si NO acerto Entonces            errores <- errores + 1            Escribir "La letra ", letra, " no está."        FinSi    FinMientras    Si progreso = secreta Entonces        Escribir "¡Ganaste! La palabra era ", secreta, "."    SiNo        Escribir "Perdiste. La palabra era ", secreta, "."    FinSiFinAlgoritmo

Diagrama de flujo

Cada bloque del diagrama corresponde a una instrucción del código.

Algoritmo AhorcadoSíNoSíNoSíNoSíNoAlgoritmo AhorcadoAlgoritmo AhorcadoDefinir palabras, secreta, progreso, nuevo, letra Como CaracterDefinir palabras, secreta,progreso, nuevo, letra ComoCaracterDefinir errores, i Como EnteroDefinir errores, i Como EnteroDefinir acerto Como LogicoDefinir acerto Como LogicoDimension palabras[5]Dimension palabras[5]palabras[1] <- "algoritmo"palabras[1] <- "algoritmo"palabras[2] <- "variable"palabras[2] <- "variable"palabras[3] <- "pantalla"palabras[3] <- "pantalla"palabras[4] <- "teclado"palabras[4] <- "teclado"palabras[5] <- "programa"palabras[5] <- "programa"secreta <- palabras[Azar(5) + 1]secreta <- palabras[Azar(5) +1]progreso <- ""progreso <- ""Para i <- 1 Hasta Longitud(secreta) HacerPara i <- 1 HastaLongitud(secreta)progreso <- progreso + "_"progreso <- progreso + "_"errores <- 0errores <- 0Mientras progreso <> secreta Y errores < 6 Hacerprogreso <> secretaY errores < 6Escribir "Palabra: ", progreso, " Errores: ", errores, " de 6"Escribir "Palabra: ",progreso, " Errores: ",errores, " de 6"Escribir "Letra:"Escribir "Letra:"Leer letraLeer letraletra <- Minusculas(letra)letra <- Minusculas(letra)acerto <- Falsoacerto <- Falsonuevo <- ""nuevo <- ""Para i <- 1 Hasta Longitud(secreta) HacerPara i <- 1 HastaLongitud(secreta)Si Subcadena(secreta, i, i) = letra EntoncesSubcadena(secreta,i, i) = letranuevo <- nuevo + letranuevo <- nuevo + letraacerto <- Verdaderoacerto <- Verdaderonuevo <- nuevo + Subcadena(progreso, i, i)nuevo <- nuevo +Subcadena(progreso, i, i)progreso <- nuevoprogreso <- nuevoSi NO acerto EntoncesNO acertoerrores <- errores + 1errores <- errores + 1Escribir "La letra ", letra, " no está."Escribir "La letra ", letra, "no está."Si progreso = secreta Entoncesprogreso = secretaEscribir "¡Ganaste! La palabra era ", secreta, "."Escribir "¡Ganaste! La palabraera ", secreta, "."Escribir "Perdiste. La palabra era ", secreta, "."Escribir "Perdiste. La palabraera ", secreta, "."FinAlgoritmoFinAlgoritmo

Ejemplo de ejecución

Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.

Palabra: ________   Errores: 0 de 6Letra:Respuesta del usuario: aPalabra: _____a_a   Errores: 0 de 6Letra:Respuesta del usuario: eLa letra e no está.Palabra: _____a_a   Errores: 1 de 6Letra:Respuesta del usuario: oPalabra: __o__a_a   Errores: 1 de 6Letra:Respuesta del usuario: rPalabra: _ro_ra_a   Errores: 1 de 6Letra:Respuesta del usuario: iLa letra i no está.Palabra: _ro_ra_a   Errores: 2 de 6Letra:Respuesta del usuario: nLa letra n no está.Palabra: _ro_ra_a   Errores: 3 de 6Letra:Respuesta del usuario: tLa letra t no está.Palabra: _ro_ra_a   Errores: 4 de 6Letra:Respuesta del usuario: lLa letra l no está.Palabra: _ro_ra_a   Errores: 5 de 6Letra:Respuesta del usuario: sLa letra s no está.Perdiste. La palabra era programa.

Desafío

Avisa cuando el jugador repite una letra que ya había probado, sin contarla como error.

Ver pista

Guarda las letras usadas en un texto y revisa si la nueva ya está ahí recorriéndolo con Subcadena.

Abrir en Codoritmo
  • Ordenamiento Shell

    Una inserción entre elementos lejanos, con un salto que se achica en cada pasada.

    Avanzado
  • Ordenamiento por montículo

    Organiza el arreglo como un montículo y saca el mayor una y otra vez.

    Avanzado
  • Ordenamiento burbuja

    Ordena números al azar intercambiando vecinos, y se detiene apenas quedan ordenados.

    Intermedio