Foros aprenderaprogramar.com

Aprender a programar => De todo un poco... => Mensaje iniciado por: Lary en 06 de Agosto 2017, 19:49

Título: Código del juego el ahorcado en PSeInt
Publicado por: Lary en 06 de Agosto 2017, 19:49
El ejercicio es el siguiente:
Juego del ahorcado en PSeInt
   -Nivel básico 3-5 letras
   -Nivel Medio 6-9 letras   
   Debe contar con al menos 20 palabras para cada nivel  (ya pre cargadas por el usuario)
   El usuario deberá tener un máximo de 8 intentos para mostrar que esta AHORCADO, formando esta palabra con cada fallo.
   Al ganar o perder debe mostrar los intentos, fallos y aciertos. para cada palabra.
   Deberá mostrar opciones para salir del sistema (Y/N).
   Deberá pedir mediante un menú el nivel que desea y las palabras deben ser tomadas en orden aleatorio.

Por favor podrían ayudarme, soy principiante.
Este es el código que yo tengo pero no funciona:


Código: [Seleccionar]
Algoritmo sin_titulo
definir palabr, palabra, casillas como caracter
definir aciertos, turnos como real

Escribir "      *Menú*"

Escribir "   1. Nivel Bàsico"
Escribir "   2. Nivel Medio"
escribir "   3. Salir "
escribir"   Ingrese su opciòn (1-3)"
leer OP
Segun OP hacer
1:

p_tb<-20
oportunidades<-8
dimension palabra[p_tb]

palabra[0]<-"duda"
palabra[1]<-"ojo"
palabra[2]<-"anima"
palabra[3]<-"duro"
palabra[4]<-"pua"
palabra[5]<-"ahoga"
palabra[6]<-"dije"
palabra[7]<-"vos"
palabra[8]<-"acero"
palabra[9]<-"echo"
palabra[10]<-"uso"
palabra[11]<-"apoye"
palabra[12]<-"cuña"
palabra[13]<-"rie"
palabra[14]<-"almas"
palabra[15]<-"gota"
palabra[16]<-"via"
palabra[17]<-"amigo"
palabra[18]<-"copo"
palabra[19]<-"feo"


a_<-' '
h_<-' '
o_<-' '
r_<-' '
c_<-' '
ax<-' '
d_<-' '
ox<-' '

turnos<-0
aciertos<-0

palabr<-palabra[azar(p_tb)+1]
n<-Longitud(palabr)
Dimension casillas(n)
Para x<-1 Hasta n Con Paso 1 Hacer
casillas[x]<-"_"
Fin Para
Repetir
Escribir ""
escribir "Oportuniddes restantes: ", oportunidades-turnos
Para x<-1 Hasta n Con Paso 1 Hacer
Escribir Sin Saltar " ", casillas[x]
Fin Para
escribir " "
Escribir Sin Saltar "Escriba la letra: "
leer letra
encontrando<-Falso
Para x<-1 Hasta n Con Paso 1 Hacer
chr<-Subcadena(palabr, x,x)
Si Mayusculas(letra)=Mayusculas(chr) Entonces
encontrando<-Verdadero
si casillas[x]="_" Entonces
casillas[x]<-chr
aciertos<-aciertos+1

FinSi
Fin Si
FinPara
si no encontrando Entonces
turnos<-turnos+1
Escribir "Letra no encontrada."
Segun turnos hacer
1:
a_<-'A'
2:
h_<-'H'
3:
o_<-'O'
4 :
r_<-'R'
5:
c_<-'C'
6:
ax<-'A'
7:
d_<-'D'
8:
Ox<-'O'


FinSegun
FinSi
Escribir "",a_
Escribir "",h_
Escribir "",o_
Escribir "",r_
Escribir "",c_
Escribir "",ax
Escribir "",d_
Escribir "",ox


Hasta Que turnos>=oportunidades o aciertos>=n;
si aciertos=n Entonces

Escribir "Felicidades, has ganado"
sino
Escribir "Has perdido."
FinSi
Escribir "La palabra secreta es: ", palabr;
escribir "Aciertos: ",aciertos,"  Fallos: ",turnos
escribir "PRESIONE CUALQUIER TECLA PARA CONTINUAR";
esperar Tecla;

2:

p_tb<-20
oportunidades<-8
dimension palabra[p_tb]

palabra[1]<-"fabricado"
palabra[2]<-"camiseta"
palabra[3]<-"ninguno"
palabra[4]<-"zapato"
palabra[5]<-"habaneros"
palabra[6]<-"cabellera"
palabra[7]<-"celular"
palabra[8]<-"cobija"
palabra[9]<-"habilidad"
palabra[10]<-"eliminar"
palabra[11]<-"galleta"
palabra[12]<-"alarma"
palabra[13]<-"vacilados"
palabra[14]<-"bolsillo"
palabra[15]<-"archivo"
palabra[16]<-"espejo"
palabra[17]<-"compilado"
palabra[18]<-"celebrar"
palabra[19]<-"rebotar"
//palabra[20]<-"adorno"

a_<-' '
h_<-' '
o_<-' '
r_<-' '
c_<-' '
ax<-' '
d_<-' '
ox<-' '

turnos<-0
aciertos<-0
//fallos<-0

palabr<-palabra[azar(p_tb)+1]
n<-Longitud(palabr)
Dimension casillas(n)
Para x<-1 Hasta n Con Paso 1 Hacer
casillas[x]<-"_"
Fin Para
Repetir
Escribir ""
or=oportunidades-turnos
escribir "Oportuniddes restantes: ", or
Para x<-1 Hasta n Con Paso 1 Hacer
Escribir Sin Saltar " ", casillas[x]
Fin Para
escribir " "
Escribir Sin Saltar "Escriba la letra: "
leer letra
encontrando<-Falso
Para x<-1 Hasta n Con Paso 1 Hacer
chr<-Subcadena(palabr, x, x)
Si Mayusculas(letra)=Mayusculas(chr) Entonces
encontrando<-Verdadero
si casillas[x]='_' Entonces
casillas[x]<-nose
aciertos<-aciertos+1

FinSi
Fin Si
FinPara
si no encontrando Entonces
turnos<-turnos+1
Escribir "Letra no encontrada."
Segun turnos hacer
1:
a_<-'A'
2:
h_<-'H'
3:
o_<-'O'
4 :
r_<-'R'
5:
c_<-'C'
6:
ax<-'A'
7:
d_<-'D'
8:
Ox<-'O'


FinSegun
FinSi
Escribir "",a_
Escribir "",h_
Escribir "",o_
Escribir "",r_
Escribir "",c_
Escribir "",ax
Escribir "",d_
Escribir "",ox



Hasta Que turnos>=oportunidades o aciertos>=n;
si aciertos=n Entonces

Escribir "Felicidades, has ganado"
sino
Escribir "Has perdido."
FinSi
Escribir "La palabra secreta es: ", palabr;
escribir "Aciertos: ",aciertos,"  Fallos: ",fallos, "  Intentos: ",intentos


3:
escribir "Usted ha salido del juego"

de otro modo
escribir "Obcion no valida"
FinSegun

escribir "PRESIONE CUALQUIER TECLA PARA CONTINUAR";
esperar Tecla;
FinAlgoritmo
Título: Re:Código del juego el ahorcado en PSeInt
Publicado por: Kabuto en 06 de Agosto 2017, 21:42
Me cuesta leer código para PSeInt...  :P ya que cuando hago pseudocódigo lo hago a mi manera, con lápiz y papel, y luego lo paso a Java o C++.
PSeINt, se que existe, pero nunca lo he usado.

Aún así, creo que entiendo tu código pero no veo donde puede haber error. De hecho, parece estar bastante bien para un principiante. Bucles, condicionales, el boolean encontrado... parecen estar usados de la forma correcta para conseguir lo que se necesita.

¿Te da algún tipo de error concreto o podrías decir que ocurre exactamente cuando no te funciona?

EDITO:

Ahora que me fijo...el boolean encontrando, ¿hay que declararlo previamente antes de usarlo?
Creo que en PSeINt se declara como "lógico", pero no se si se puede utilizar sin declararlo previamente.


EDITO2:
He codificado tu programa en lenguaje Java, calcándolo prácticamente paso a paso (aunque se podría optimizar aprovechando el mayor nivel de Java...) y me funciona perfectamente.
La lógica del código es correcta, así que lo único que se me ocurre que pueda fallar es lo que dije antes, la ausencia de declaración de la variable encontrando