Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: leogtz en 4 Mayo 2009, 06:57 am



Título: Juego Ahorcado v.1.1 [Bash]
Publicado por: leogtz en 4 Mayo 2009, 06:57 am
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.
Código
  1. #!/usr/bin/bash
  2. # Juego de ahorcado
  3. # Leo Gutierrez R
  4. # leorocko13@hotmail.com
  5.  
  6. # Declarar seguir_o_no
  7. intentos=0
  8. contador=0
  9. function pause()   # Funcion pause, ya que no existe en linux
  10. {
  11. read -p "$*"
  12. }
  13. function limpiar()
  14. {
  15. clear
  16. }
  17. limpiar
  18. echo; echo Ahorcado v1.1, Leo Gutierrez Ramirez.; echo
  19. pause 'Presione una tecla para iniciar'.
  20. declare -a palabra_user[20];
  21. echo;
  22. read -p "Palabra : " palabra_user2                # Se lee la palabra
  23. let longitud=`expr length "$palabra_user2"`-1     # Sacar la longitud de la palabra:
  24. # echo $longitud
  25. for i in $(seq 0 $longitud);
  26. do
  27. palabra_user[$i]=${palabra_user2:$i:1}            # Se mete cada caracter en un subindice, en el array palabra_user[x]
  28. # echo palabra_user[$i] = ${palabra_user[$i]}
  29. done
  30. read -p "Defina el numero de intentos : " intentos       # No. de intentos que puede cometer el usuario.
  31. declare -a palabra_adivinar[$longitud];
  32. for i in $(seq 0 $longitud);
  33. do
  34. palabra_adivinar[$i]=_                            # Se meten guiones en cada subindice de palabra_adivinar[x]
  35. echo ${palabra_adivinar[$i]};
  36. done
  37. limpiar;
  38. # Mostrar guiones :
  39. while test $contador -le $intentos
  40. do
  41. echo;echo;
  42. for i in $(seq 0 $longitud);
  43. do
  44. echo -n "${palabra_adivinar[$i]} ";
  45. done
  46. echo;
  47. echo "Letra :                                                      Intentos: $contador de $intentos"
  48. read letra
  49. echo $palabra_user2 | grep "$letra" > nul 2>&1 || let contador+=1
  50. # Busqueda secuencial :
  51. for i in $(seq 0 $longitud);
  52. do
  53. if [ ${palabra_user[$i]} = "$letra" ];then
  54. palabra_adivinar[$i]=$letra
  55. fi
  56. done
  57. # Mostrar los guiones :
  58. echo;echo;
  59. for i in $(seq 0 $longitud);
  60. do
  61. echo -n "${palabra_adivinar[$i]} ";
  62. done
  63. echo;echo;
  64. limpiar
  65. # Aqui va el IF y el break:
  66. if [ "$contador" -ge "$intentos" ];
  67. then
  68. break
  69. fi
  70. i=0
  71. cadena_final=`while test $i -le $longitud; do echo -n ${palabra_adivinar[$i]}; let i+=1; done`
  72. # echo Cadena final : $cadena_final
  73. if [ "$cadena_final" == "$palabra_user2" ];
  74. then
  75. break;
  76. fi
  77. done
  78. if [ "$cadena_final" == "$palabra_user2" ];
  79. then
  80. echo Felicidades, has ganado.
  81. echo Ahorcado v1.1
  82. echo Leo Gutierrez R.
  83. elif [ "$cadena_final" -ne "$palabra_user2" ];
  84. then
  85. echo Lo siento, has perdido.
  86. echo Ahorcado v1.1
  87. echo Leo Gutierrez R.
  88. fi
  89. exit 0
  90.  

Si alguien me pudiera hacer el favor de decirme como dibujar el monito, se me hace demasiado tedioso hacerlo a mano.

Saludos.


Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: 0x0309 en 4 Mayo 2009, 18:16 pm
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í:

Código:
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 */
   }
}





Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: rockernault en 4 Mayo 2009, 18:22 pm
como lo corres???


Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: leogtz en 4 Mayo 2009, 19:29 pm
como lo corres???
Lo guardas con extensión .sh y lo corres:
Código:
bash ahorcado.sh
Gracias por la sugerencia, 0x0309, voy a tenerlo en cuenta, a ver si puedo acabarlo hoy.


Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: rockernault en 4 Mayo 2009, 22:21 pm
Gracias,

 :D


Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: leogtz en 19 Mayo 2009, 08:14 am
Pongo una nueva versión, más actualizada, ahora si se ve el monito, se ve feo, pero se ve  :P
Código
  1. #!/usr/bin/bash
  2. # Juego de ahorcado
  3. # Leo Gutierrez R
  4. # leorocko13@hotmail.com
  5. intentos=0
  6. contador=0
  7. function cabeza()
  8. {
  9. echo "                                                    ______________"
  10. echo "                                                    |             |"
  11. echo "                                                  |._.|           |"
  12. echo "                                                                  |"
  13. echo "                                                                  |"
  14. echo "                                                                  |"
  15. echo "                                                                  |"
  16. echo "                                                                  |"
  17. echo "                                                                  |"
  18. echo "                                                 |________________|"
  19. }
  20. function torso()
  21. {
  22. echo "                                                    ______________"
  23. echo "                                                    |             |"
  24. echo "                                                  |._.|           |"
  25. echo "                                                    |             |"
  26. echo "                                                    |             |"
  27. echo "                                                                  |"
  28. echo "                                                                  |"
  29. echo "                                                                  |"
  30. echo "                                                                  |"
  31. echo "                                                 |________________|"
  32. }
  33. function torso_brazos()
  34. {
  35. echo "                                                    ______________"
  36. echo "                                                    |             |"
  37. echo "                                                  |._.|           |"
  38. echo "                                                    |             |"
  39. echo "                                                  --|--           |"
  40. echo "                                                                  |"
  41. echo "                                                                  |"
  42. echo "                                                                  |"
  43. echo "                                                                  |"
  44. echo "                                                 |________________|"
  45. }
  46. function piernas()
  47. {
  48. echo "                                                    ______________"
  49. echo "                                                    |             |"
  50. echo "                                                  |._.|           |"
  51. echo "                                                    |             |"
  52. echo "                                                  --|--           |"
  53. echo "                                                  __|__           |"
  54. echo "                                                  |    |          |"
  55. echo "                                                                  |"
  56. echo "                                                                  |"
  57. echo "                                                 |________________|"
  58. }
  59. function completo()
  60. {
  61. echo "                                                    ______________"
  62. echo "                                                    |             |"
  63. echo "                                                 -|._.|-          |"
  64. echo "                                                    |             |"
  65. echo "                                                  --|--           |"
  66. echo "                                                  __|__           |"
  67. echo "                                                 _|    |_         |"
  68. echo "                                                                  |"
  69. echo "                                                                  |"
  70. echo "                                                 |________________|"
  71. }
  72. cabeza
  73. torso
  74. torso_brazos
  75. piernas
  76. completo
  77. function pause()   # Funcion pause, ya que no existe en linux
  78. {
  79. read -p "$*"
  80. }
  81. function limpiar()
  82. {
  83. clear
  84. }
  85. limpiar
  86. echo; echo Ahorcado v1.1, Leo Gutierrez Ramirez.; echo
  87. pause 'Presione una tecla para iniciar'.
  88. declare -a palabra_user[20];
  89. echo;
  90. read -p "Palabra : " palabra_user2                # Se lee la palabra
  91. let longitud=`expr length "$palabra_user2"`-1     # Sacar la longitud de la palabra:
  92. # echo $longitud
  93. for i in $(seq 0 $longitud);
  94. do
  95. palabra_user[$i]=${palabra_user2:$i:1}            # Se mete cada caracter en un subindice, en el array palabra_user[x]
  96. # echo palabra_user[$i] = ${palabra_user[$i]}
  97. done
  98. read -p "Defina el numero de intentos : " intentos       # No. de intentos que puede cometer el usuario.
  99. declare -a palabra_adivinar[$longitud];
  100. for i in $(seq 0 $longitud);
  101. do
  102. palabra_adivinar[$i]=_                            # Se meten guiones en cada subindice de palabra_adivinar[x]
  103. echo ${palabra_adivinar[$i]};
  104. done
  105. limpiar;
  106. # Mostrar guiones :
  107. while test $contador -le $intentos
  108. do
  109. if [ $contador -eq 1 ]
  110. then
  111. cabeza
  112. elif [ $contador -eq 2 ]
  113. then
  114. torso
  115. elif [ $contador -eq 3 ]
  116. then
  117. torso_brazos
  118. elif [ $contador -eq 4 ]
  119. then
  120. piernas
  121. elif [ $contador -ge 5 ]
  122. then
  123. completo
  124. fi
  125. echo;echo;
  126. for i in $(seq 0 $longitud);
  127. do
  128. echo -n "${palabra_adivinar[$i]} ";
  129. done
  130. echo;
  131. echo "Letra :                                                      Intentos: $contador de $intentos"
  132. read letra
  133. echo $palabra_user2 | grep "$letra" > nul 2>&1 || let contador+=1
  134. # Busqueda secuencial :
  135. for i in $(seq 0 $longitud);
  136. do
  137. if [ ${palabra_user[$i]} = "$letra" ];then
  138. palabra_adivinar[$i]=$letra
  139. fi
  140. done
  141. echo;echo;
  142. for i in $(seq 0 $longitud);
  143. do
  144. echo -n "${palabra_adivinar[$i]} ";
  145. done
  146. echo;echo;
  147. limpiar
  148. if [ "$contador" -ge "$intentos" ];
  149. then
  150. break
  151. fi
  152. i=0
  153. cadena_final=`while test $i -le $longitud; do echo -n ${palabra_adivinar[$i]}; let i+=1; done`
  154. if [ "$cadena_final" == "$palabra_user2" ];
  155. then
  156. break;
  157. fi
  158. done
  159. if [ "$cadena_final" == "$palabra_user2" ];
  160. then
  161. echo Felicidades, has ganado.
  162. echo Ahorcado v1.1
  163. echo Leo Gutierrez R.
  164. else
  165. echo Lo siento, has perdido.
  166. echo Ahorcado v1.1
  167. echo Leo Gutierrez R.
  168. fi
  169. exit 0


Título: Re: Juego Ahorcado v.1.1 [Bash]
Publicado por: Darioxhcx en 19 Mayo 2009, 18:18 pm
jajajaaaaaaaa

cuando reinicie lo pruebo
que bueno se ve che :P

un saludo