Skip to content
ExamplesEspañolWorkspace →

Hangman

Guess a secret word letter by letter, with six mistakes allowed.

Level
Advanced
Topic:
Projects
Concepts:
Input & output
Text
Arrays
Mientras
Randomness
Logic
Open in Codoritmo

Run, change and debug this example in your browser.

What you'll learn

Azar picks a word from an array. A Mientras loop runs until you win or lose, and each guess rebuilds the progress string with Subcadena.

Code

hangman.psc · 44 lines
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

Flowchart

Each block in the flowchart matches one instruction in the code.

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

Sample run

This is what the program shows when it runs. The answers typed by the user are highlighted.

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

Challenge

Warn the player when they repeat a letter they already tried, without counting it as a mistake.

Show hint

Keep the used letters in a text and check whether the new one is there by walking it with Subcadena.

Open in Codoritmo
  • Shell Sort

    Insertion sort between far-apart elements, with a gap that shrinks every pass.

    Advanced
  • Heap Sort

    Arranges the array as a heap, then takes the largest out again and again.

    Advanced
  • Bubble Sort

    Sorts random numbers by swapping neighbors, and stops as soon as they're in order.

    Intermediate