Hola, hoy hice el juego del Ahorcado en Bash:
(http://mx.geocities.com/leorocko13/ahorcado_1.JPG)
(http://mx.geocities.com/leorocko13/ahorcado_2.JPG)
Solo hice el motor basico, luego dibujo el monito.
#!/usr/bin/bash
# Juego de ahorcado
# Leo Gutierrez R
# leorocko13@hotmail.com
# Declarar seguir_o_no
intentos=0
contador=0
function pause() # Funcion pause, ya que no existe en linux
{
read -p "$*"
}
function limpiar()
{
clear
}
limpiar
echo; echo Ahorcado v1.1, Leo Gutierrez Ramirez.; echo
pause 'Presione una tecla para iniciar'.
declare -a palabra_user[20];
echo;
read -p "Palabra : " palabra_user2 # Se lee la palabra
let longitud=`expr length "$palabra_user2"`-1 # Sacar la longitud de la palabra:
# echo $longitud
for i in $(seq 0 $longitud);
do
palabra_user[$i]=${palabra_user2:$i:1} # Se mete cada caracter en un subindice, en el array palabra_user[x]
# echo palabra_user[$i] = ${palabra_user[$i]}
done
read -p "Defina el numero de intentos : " intentos # No. de intentos que puede cometer el usuario.
declare -a palabra_adivinar[$longitud];
for i in $(seq 0 $longitud);
do
palabra_adivinar[$i]=_ # Se meten guiones en cada subindice de palabra_adivinar[x]
echo ${palabra_adivinar[$i]};
done
limpiar;
# Mostrar guiones :
while test $contador -le $intentos
do
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;
echo "Letra : Intentos: $contador de $intentos"
read letra
echo $palabra_user2 | grep "$letra" > nul 2>&1 || let contador+=1
# Busqueda secuencial :
for i in $(seq 0 $longitud);
do
if [ ${palabra_user[$i]} = "$letra" ];then
palabra_adivinar[$i]=$letra
fi
done
# Mostrar los guiones :
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;echo;
limpiar
# Aqui va el IF y el break:
if [ "$contador" -ge "$intentos" ];
then
break
fi
i=0
cadena_final=`while test $i -le $longitud; do echo -n ${palabra_adivinar[$i]}; let i+=1; done`
# echo Cadena final : $cadena_final
if [ "$cadena_final" == "$palabra_user2" ];
then
break;
fi
done
if [ "$cadena_final" == "$palabra_user2" ];
then
echo Felicidades, has ganado.
echo Ahorcado v1.1
echo Leo Gutierrez R.
elif [ "$cadena_final" -ne "$palabra_user2" ];
then
echo Lo siento, has perdido.
echo Ahorcado v1.1
echo Leo Gutierrez R.
fi
exit 0
Si alguien me pudiera hacer el favor de decirme como dibujar el monito, se me hace demasiado tedioso hacerlo a mano.
Saludos.
Está bueno Leo, yo no conozco bash, pero lo del "monito" se me ocurriría hacerlo así:
Que no pidas cuántos intentos hacer, sino que definas una cantidad que no cambie, ejemplo 10.
y que tengas 3 arreglos así:
parteUno[0]= O
parteDos[0]= |
parteDos[1]= -|
parteDos[2]= -|-
parteDos[3]=o-|-
parteDos[4]=o-|-o
parteTres[0]= /
parteTres[1]= /\
parteTres[2]= _/\
parteTres[3]= _/\_
y declaras 3 variables:
así:
int indiceParteUno=0;
int indiceParteDos=4;
int indiceParteTres=3;
Entonces haces:
formato java:
/* mostrar el monito completo por primera vez */
System.out.println(parteUno[indiceParteUno]);
System.out.println(parteDos[indiceParteDos]);
System.out.println(parteTres[indiceParteTres]);
/*pregunta por letra */
if (laLetraNoExiste)
{
if (indiceParteTres >=0)
{
--indiceParteTres;
}
else if (indiceParteDos >=0)
{
--indiceParteDos;
}
else if (indiceParteUno >=0)
{
--indiceParteUno;
}
/* limpiar la pantalla */
if (indiceParteUno >=0)
{
System.out.println(parteUno[indiceParteUno]);
if (indiceParteDos >=0)
{
System.out.println(parteDos[indiceParteDos]);
if (indiceParteTres >=0)
{
System.out.println(parteTres[indiceParteTres]);
}
}
}
else
{
/* perdió la cabeza, perdió, hacer algo */
}
}
como lo corres???
Cita de: rockernault en 4 Mayo 2009, 18:22 PM
como lo corres???
Lo guardas con extensión .sh y lo corres:
bash ahorcado.sh
Gracias por la sugerencia, 0x0309, voy a tenerlo en cuenta, a ver si puedo acabarlo hoy.
Gracias,
:D
Pongo una nueva versión, más actualizada, ahora si se ve el monito, se ve feo, pero se ve :P
#!/usr/bin/bash
# Juego de ahorcado
# Leo Gutierrez R
# leorocko13@hotmail.com
intentos=0
contador=0
function cabeza()
{
echo " ______________"
echo " | |"
echo " |._.| |"
echo " |"
echo " |"
echo " |"
echo " |"
echo " |"
echo " |"
echo " |________________|"
}
function torso()
{
echo " ______________"
echo " | |"
echo " |._.| |"
echo " | |"
echo " | |"
echo " |"
echo " |"
echo " |"
echo " |"
echo " |________________|"
}
function torso_brazos()
{
echo " ______________"
echo " | |"
echo " |._.| |"
echo " | |"
echo " --|-- |"
echo " |"
echo " |"
echo " |"
echo " |"
echo " |________________|"
}
function piernas()
{
echo " ______________"
echo " | |"
echo " |._.| |"
echo " | |"
echo " --|-- |"
echo " __|__ |"
echo " | | |"
echo " |"
echo " |"
echo " |________________|"
}
function completo()
{
echo " ______________"
echo " | |"
echo " -|._.|- |"
echo " | |"
echo " --|-- |"
echo " __|__ |"
echo " _| |_ |"
echo " |"
echo " |"
echo " |________________|"
}
cabeza
torso
torso_brazos
piernas
completo
function pause() # Funcion pause, ya que no existe en linux
{
read -p "$*"
}
function limpiar()
{
clear
}
limpiar
echo; echo Ahorcado v1.1, Leo Gutierrez Ramirez.; echo
pause 'Presione una tecla para iniciar'.
declare -a palabra_user[20];
echo;
read -p "Palabra : " palabra_user2 # Se lee la palabra
let longitud=`expr length "$palabra_user2"`-1 # Sacar la longitud de la palabra:
# echo $longitud
for i in $(seq 0 $longitud);
do
palabra_user[$i]=${palabra_user2:$i:1} # Se mete cada caracter en un subindice, en el array palabra_user[x]
# echo palabra_user[$i] = ${palabra_user[$i]}
done
read -p "Defina el numero de intentos : " intentos # No. de intentos que puede cometer el usuario.
declare -a palabra_adivinar[$longitud];
for i in $(seq 0 $longitud);
do
palabra_adivinar[$i]=_ # Se meten guiones en cada subindice de palabra_adivinar[x]
echo ${palabra_adivinar[$i]};
done
limpiar;
# Mostrar guiones :
while test $contador -le $intentos
do
if [ $contador -eq 1 ]
then
cabeza
elif [ $contador -eq 2 ]
then
torso
elif [ $contador -eq 3 ]
then
torso_brazos
elif [ $contador -eq 4 ]
then
piernas
elif [ $contador -ge 5 ]
then
completo
fi
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;
echo "Letra : Intentos: $contador de $intentos"
read letra
echo $palabra_user2 | grep "$letra" > nul 2>&1 || let contador+=1
# Busqueda secuencial :
for i in $(seq 0 $longitud);
do
if [ ${palabra_user[$i]} = "$letra" ];then
palabra_adivinar[$i]=$letra
fi
done
echo;echo;
for i in $(seq 0 $longitud);
do
echo -n "${palabra_adivinar[$i]} ";
done
echo;echo;
limpiar
if [ "$contador" -ge "$intentos" ];
then
break
fi
i=0
cadena_final=`while test $i -le $longitud; do echo -n ${palabra_adivinar[$i]}; let i+=1; done`
if [ "$cadena_final" == "$palabra_user2" ];
then
break;
fi
done
if [ "$cadena_final" == "$palabra_user2" ];
then
echo Felicidades, has ganado.
echo Ahorcado v1.1
echo Leo Gutierrez R.
else
echo Lo siento, has perdido.
echo Ahorcado v1.1
echo Leo Gutierrez R.
fi
exit 0
jajajaaaaaaaa
cuando reinicie lo pruebo
que bueno se ve che :P
un saludo