Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
cursos:z88dk:avent3 [09-08-2007 14:15]
sromero creado
cursos:z88dk:avent3 [24-02-2020 20:23] (actual)
falvarez
Línea 1: Línea 1:
 +Publicado originalmente en [[https://magazinezx.speccy.org/09/z88dk.html|MagazineZX número 9]] (septiembre 2004)
  
-====== Creando una Aventura Conversacional con Z88DK (III) ======+====== Creando una Aventura Conversacional con Z88DK (III) ======
  
 Terminamos en esta entrega con la explicación de las herramientas de texto de la librería z88dk aplicadas a un juego en concreto, nuestra aventura conversacional del pirata Guybrush Threpwood. Desde luego, con todo lo explicado no se pretende que el resultado final sea una aventura conversacional completa, eso conllevaría un trabajo adicional por parte del lector de la serie, sino que se sienten las bases para aprender a manejar estas herramientas de texto mediante un ejemplo práctico. Terminamos en esta entrega con la explicación de las herramientas de texto de la librería z88dk aplicadas a un juego en concreto, nuestra aventura conversacional del pirata Guybrush Threpwood. Desde luego, con todo lo explicado no se pretende que el resultado final sea una aventura conversacional completa, eso conllevaría un trabajo adicional por parte del lector de la serie, sino que se sienten las bases para aprender a manejar estas herramientas de texto mediante un ejemplo práctico.
Línea 149: Línea 150:
  
 Y por supuesto, añadir este nuevo parámetro a todas las llamadas a la función que se hagan dentro de main(). Si jugamos ya tendremos un pirata autista moviéndose por nuestro mundo, incapaz de comunicarse con nosotros y que no reacciona ante ninguna de nuestras acciones. Las siguientes dos secciones tratarán de cambiar esto. Y por supuesto, añadir este nuevo parámetro a todas las llamadas a la función que se hagan dentro de main(). Si jugamos ya tendremos un pirata autista moviéndose por nuestro mundo, incapaz de comunicarse con nosotros y que no reacciona ante ninguna de nuestras acciones. Las siguientes dos secciones tratarán de cambiar esto.
-El pirata es muy juguetón y no para de moverse... + 
-El pirata es muy juguetón y no para de moverse...+{{ cursos:z88dk:z88dk5_1.png |El pirata es muy juguetón y no para de moverse...}} 
  
  
Línea 199: Línea 201:
 Para entrar en esta parte del código e interpretar los comandos introducidos por el jugador relacionados con el pirata, deberemos comprobar que el pirata y el jugador se encuentran en la misma habitación. En caso de que no sea así, no se entrará en esta parte del código y se mostrará el típico mensaje de error cuando se introduce un comando incorrecto. De esta forma, si el jugador introdujera alguno de los comandos relacionados con el pirata sin haber descubierto previamente su existencia, no se le dará ninguna pista sobre ello. Para entrar en esta parte del código e interpretar los comandos introducidos por el jugador relacionados con el pirata, deberemos comprobar que el pirata y el jugador se encuentran en la misma habitación. En caso de que no sea así, no se entrará en esta parte del código y se mostrará el típico mensaje de error cuando se introduce un comando incorrecto. De esta forma, si el jugador introdujera alguno de los comandos relacionados con el pirata sin haber descubierto previamente su existencia, no se le dará ninguna pista sobre ello.
  
-El pirata parece un poco tonto, pero sabe más de lo que dice... +{{ cursos:z88dk:z88dk5_2.png |El pirata parece un poco tonto, pero sabe más de lo que dice...}} 
-El pirata parece un poco tonto, pero sabe más de lo que dice...+
  
 Haciendo uso de strtok (cuya explicación se realizó en la entrega anterior), comprobamos si la primera palabra del comando del jugador es decir. En caso de que sea así, tratamos de analizar qué es lo que ha dicho el jugador. Usando strtok de nuevo extraemos el resto del comando introducido del jugador, y lo comparamos con la cadena "ayuda" (haciendo uso de la secuencia de escape \" para poder introducir comillas dentro de la cadena). En caso de que el jugador haya dicho exactamente eso, el pirata le dará la pista que necesita. En caso contrario, el pirata ignorará al jugador. Haciendo uso de strtok (cuya explicación se realizó en la entrega anterior), comprobamos si la primera palabra del comando del jugador es decir. En caso de que sea así, tratamos de analizar qué es lo que ha dicho el jugador. Usando strtok de nuevo extraemos el resto del comando introducido del jugador, y lo comparamos con la cadena "ayuda" (haciendo uso de la secuencia de escape \" para poder introducir comillas dentro de la cadena). En caso de que el jugador haya dicho exactamente eso, el pirata le dará la pista que necesita. En caso contrario, el pirata ignorará al jugador.
Línea 326: Línea 328:
 En el caso contrario, la variable valdrá 1 y el pirata estará borracho. Le damos a la variable final el valor 1, indicando que el juego ha terminado. Si recordamos el código, veremos que al principio del intérprete de comandos había una sentencia while que hacía ejecutarse este intérprete hasta que el valor de la variable final cambiara. Pues bien, por fin podremos terminar la avenura. Lo siguiente es mostrar unos cuantos mensajes con printf, enfatizando con sleep, relatando la tremenda lucha con el pirata. Para el último mensaje, el de felicitación, se deja una espera más larga, para añadir algo de tensión escénica. En el caso contrario, la variable valdrá 1 y el pirata estará borracho. Le damos a la variable final el valor 1, indicando que el juego ha terminado. Si recordamos el código, veremos que al principio del intérprete de comandos había una sentencia while que hacía ejecutarse este intérprete hasta que el valor de la variable final cambiara. Pues bien, por fin podremos terminar la avenura. Lo siguiente es mostrar unos cuantos mensajes con printf, enfatizando con sleep, relatando la tremenda lucha con el pirata. Para el último mensaje, el de felicitación, se deja una espera más larga, para añadir algo de tensión escénica.
  
-No había presupuesto para un final más espectacular +{{ cursos:z88dk:z88dk5_3.png |No había presupuesto para un final más espectacular}}
-No había presupuesto para un final más espectacular+
  
 ¡Y ya está! Tenemos una aventura simple pero completa, que puede ser terminada por un jugador avispado. ¡Y ya está! Tenemos una aventura simple pero completa, que puede ser terminada por un jugador avispado.
Línea 345: Línea 346:
  
  
-    * [[http://www.speccy.org/magazinezx/revistas/9/src/fuentes.zip|Archivos fuente del ejemplo propuesto]]+    * [[https://magazinezx.speccy.org/09/src/fuentes.zip|Archivos fuente del ejemplo propuesto]]