CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 15 Nov 2019 22:55

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 14 mensajes ] 
Autor Mensaje
NotaPublicado: 15 Ene 2005 15:26 
buenas, estoy haciendo un juego de inform (para máquina z) en el que quiero incluir algunas armas del tipo espada daga ...
quisiera hacer una clase para ellas para poder manejarlas des de allí­ y ahorrarme así­ bastante código.
el problema biene cuando en la clase pongo una rutina antes

class armas
antes [;
dejar: "Dejada.^^";
],
es un ejemplo de algo que no me compila
¿alguien puede ayudarme?
muchas gracias


Arriba
  
 
NotaPublicado: 15 Ene 2005 16:32 
lygdy escribió:
buenas, estoy haciendo un juego de inform (para máquina z) en el que quiero incluir algunas armas del tipo espada daga ...
quisiera hacer una clase para ellas para poder manejarlas des de allí­ y ahorrarme así­ bastante código.
el problema biene cuando en la clase pongo una rutina antes

class armas
antes [;
dejar: "Dejada.^^";
],
es un ejemplo de algo que no me compila
¿alguien puede ayudarme?
muchas gracias


Asegurate de que la clase se declara después de incluir Eparser.h, vamos, pon siempre las declaraciones de clases después de los "includes" del principio.

Tras eso te faltarí­a especificar el "with" y terminar la definición de la clase con un punto y coma, una cosa así­:

Código:
class armas
with
antes [;
dejar: "Dejada.^^";
],
;



Con eso al menos el ejemplo que has puesto ya funciona. Por ahí­ hay una librerí­a de armas con clases definidas para armas de todos los tipos tamaños y colores, incluyendo espadas y similares. De hecho, viene incluida en el kit del programador, aunque mi particular consejo es que si se trata de algo que puedas programar tu mismo siempre es preferible que lo hagas tu y dejar el uso de librerí­as externas como último recurso si todo lo demás falla.

¡ánimo y suerte con esa aventura! :-)


Arriba
  
 
 Asunto:
NotaPublicado: 15 Ene 2005 18:20 
ha! muchas gracias, era eso ... lo que me faltaba
el with
no sabí­a que se tubiera que poner en este caso
si, tengo el kit del programador pero por más que he mirado esa y otras librerí­as no he conseguido entenderlas
opino igual que tu "si puedo programarlo yo mucho mejor"
gracias!


Arriba
  
 
 Asunto:
NotaPublicado: 15 Ene 2005 19:37 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
Te diré el secreto del todo orden que todo esqueleto de aventura debe tener... un ejemplo rápido:

!----------------------------------------
! Modulo principal del juego Dracula, versión inglesa.
!----------------------------------------


! Primero las constantes de la versión:

Constant Historia "Dracula";
Constant Titular "^Part 1: The First Night^";
Release 2;

! Segundo otras constantes y variables globales:

Constant FLAG_ON 1;
Constant FLAG_OFF 0;
Constant FLAG_NULL -1;

Constant HAY_CURIOSIDADES;

Global EsDeDia = FLAG_OFF;

! Después replaces de códigos de la librerí­a que necesitas modificar:

Replace DibujarLineaEstado; ! linea de estado se elimina. Molesta para el marco.
Replace FinalizarSub;
Replace ReiniciarSub;
Replace AfterGameOver;

! Inclusión del parser

Include "EParser";

! Inclusión de la librerí­a de mensajes:

Include "Msg1P";

! Modificación de mensajes del sistema para customizar el asunto:

object MensajesLibreria
with i 0,
antes [;
Beber: "Alas! there is no water here.";
Dormir: "This is not the place to sleep!";
Finalizar:
switch(ml_n)
{
2: "Do you really want to leave Carpathia?";
}

Inv:
switch(ml_n)
{
1: "I have with me:^ nothing of significance...";
2: print "I have with me";
rtrue;
}
];

! Inclusión de acciones:

Include "Acciones";

! Inclusión de librerí­as adicionales:

Include "Acciones";

! Inclusión de modulos del juego:

Include "Psis.h";
Include "Ambientacion.h";

! El juego en sí­, a base de objetos a partir de aqui a menos que esté todo en modulos:
! Tb se puede crear un personaje jugador si queremos algo muy customizado.

object localidad1 "En el coche"
with
descripcion "Estoy en el coche de camino al castilo de dracula",
has luz;

...
...


! Fin de la definición de los objetos del juego

! Ahora vienen las rutinas: primero inicializar:

[ Inicializar;

modomirar=2;
CambiarJugador(JohnHarker);
localizacion=Inicio;
move dinero to jugador;
parser_listo=0;
BorrarPantalla(); ! Solo la pongo para que no cante el compilador eso de "Rutina creada pero no usada"
print "^^Here at last! The coach halts outside the GOLDEN KRONE HOTEL. It has been a scenic journey if nothing else! Halfway across Europe through some of the most beautiful countryside I have ever seen. But it is a wild untamed landscape that seems only grudgingly to tolerate the coach tracks winding through it-like arteries, hurrying weary fares to their destinations, maybe even their destinies... Strange that I think that, but, as I leave the coach, the sinister fear of something unknown steals over me... Bah! I am acting like a child! I must pull myself together.^";

move llave to encargado;

return 2;
];


! ahora conviene poner las rutinas de sistema: cosas glulx, las rutinas replaceadas, modificación de la linea de estado, etc:

! Esto elimina la barra de estado

[ DibujarLineaEstado; ];


! Las gramáticas siempre al final...

Include "gramaticainglesa";
Include "dengexgram.inf"; ! Gramáticas para Drácula


Y eso es todo... este es el orden que todo novato deberí­a de seguir, y es el orden recomendado en documentate y creo recordar que en el tutorial, así­ que... a DOCUMENTARSE MAS!!! :)

Evidentemente no trateis de compilar esto, pero quitando los detalles y dejando sólo los comentarios, tendreis un esqueleto rápido y que compilará seguro a la primera cuando comenceis una aventura.

Chao.

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Ene 2005 20:20 
OK mas o menos como lo tengo yo estructurado claro que yo compilo para máquina z (que imagino que seguirá el mismo orden)
pero una preguntilla por simple curiosidad:
¿que quiere decir parser_listo=0;?
¿para que sirve?
¿y Constant FLAG_ON 1;
Constant FLAG_OFF 0;
Constant FLAG_NULL -1;

Global EsDeDia = FLAG_OFF;????
nunca lo habí­a visto ... y he mirado códigos heep, jeje
gracias!!!


Arriba
  
 
NotaPublicado: 15 Ene 2005 22:43 
Hola !

Citar:
Por ahí­ hay una librerí­a de armas con clases definidas para armas de todos los tipos tamaños y colores, incluyendo espadas y similares. De hecho, viene incluida en el kit del programador, aunque mi particular consejo es que si se trata de algo que puedas programar tu mismo siempre es preferible que lo hagas tu y dejar el uso de librerí­as externas como último recurso si todo lo demás falla.


Efectivamente, yo hice una librerí­a de armas que está en el kit del programador. Probablemente no es perfecta, pero te ahorrará un importante consejo. Al margen del criterio del invitado, que yo no desvaloro ni mucho menos, todo programador sabe que no debe reinventar la rueda, sino todo lo contrario, reutilizar aquellas partes que pueda de un programa a otro. Y si ya hay librerí­as que hacen lo que necesitas, pues no te comas el tarro. íšsalas. Muchas veces esas librerí­as habrán sido revisadas por muchos programadores, por lo que tendrás unas bases firmes sobre las que asentar tu proyecto.

Dicho esto, eres bien libre de hacer lo que quieras :-)
En cuanto a la librerí­a de armas (¡otra vez!), pues bueno, échale un ojo y si cumple con tus necesidades, adelante. Si no, pues descártala.

Citar:
¿que quiere decir parser_listo=0;?

Cuando el parser no entiende una orden del aventurero, si parer_listo es true (ó 1), intenta deducir a qué se refiere. Si parser_listo es false (ó 0), no. Esta deducción automática está muy bien en origen, pero en la práctica hace que la aventura pregunte al programador cosas realmente tontas, cuando no entiende lo que quiere decir.

Citar:
¿para que sirve?
¿y Constant FLAG_ON 1;
Constant FLAG_OFF 0;
Constant FLAG_NULL -1;


"Constant" permite definir una constante, un valor que nunca cambia, que se referencia con un nombre. Así­, se definen FLAG_ON con valor 1, FLAG_OFF con valor 0, y FLAG_NULL con valor -1.

Esas constantes no forman parte de la librerí­a, sino que las habrá introducido un programador en su aventura con algún objetivo especí­fico. Habrí­a que ver el código.

Salud !

Baltasar


Arriba
  
 
 Asunto:
NotaPublicado: 16 Ene 2005 10:32 
hombre aunque yo prefiero programar por mi mismo todo lo que me sea posible utilizo librerí­as para ahorrarme trabajo o conseguir cosas que no sabrí­a hacer pero el problema es que no suelo entender ninguna xdddd y la de armas la ví­ complicadiiiisima al igual que muchas otras jejejeje
regracias!


Arriba
  
 
 Asunto:
NotaPublicado: 16 Ene 2005 12:58 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
parser_listo=0; creo creo que impide que informate lance acciones pasandose de listo, conjeturandolas cuando tiene dudas. Al dejarlo a 0 no se pasará de listo.

El resto de definiciones que no entiendes... es como ejemplo, son especí­difcas de dracula, no tienen nada que ver con el esqueleto de cualquier otra aventura.
Sencillamente quedate con los comentarios, con eso te bastará.
´
Y el GLobal dia ese... pues lo mismo es la variable global que se usa en dracula para diferencial el dí­a de la noche.

Chao.

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 17 Ene 2005 10:07 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 Sep 2004 09:33
Mensajes: 1100
Urbatain escribió:
Te diré el secreto del todo orden que todo esqueleto de aventura debe tener... un ejemplo rápido:

!----------------------------------------
! Modulo principal del juego Dracula, versión inglesa.
!----------------------------------------

..........


Hola,

También puedes usar el esqueleto desarrollado por Morgull y que se encuentra en el directorio lib del kit de programadores con el nombre de plantilla.inf. Es lo mismo que ha puesto urba, pero con más comentarios.

Saludetes
Mapache


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 18 Ene 2005 14:44 
invitado escribió:

Asegurate de que la clase se declara después de incluir Eparser.h, vamos, pon siempre las declaraciones de clases después de los "includes" del principio.

Tras eso te faltarí­a especificar el "with" y terminar la definición de la clase con un punto y coma, una cosa así­:

Código:

class armas
with
antes [;
dejar: "Dejada.^^";
],
;

bien lo he provado tal cual
pero sin éxito
NO ME COMPILA ...
gRaCiAs!


Arriba
  
 
 Asunto:
NotaPublicado: 18 Ene 2005 16:35 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Mar 2004 21:54
Mensajes: 378
Ubicación: La red
lygdy, si siguen apareciendo errores con ese código podrí­amos pensar que el error está en otra parte. ¿Has probado a leer el mensaje que te da el compilador al ejecutarlo? Normalmente te indica la linea por donde ha fallado.

Si indica la clase pues no sé, si no es un codigo muy largo publicalo aqui o si quieres enviamelo al mail


Arriba
 Perfil  
 
NotaPublicado: 18 Ene 2005 17:34 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2918
Ubicación: España (Galicia)
Hola !

Citar:
hombre aunque yo prefiero programar por mi mismo todo lo que me sea posible utilizo librerí­as para ahorrarme trabajo o conseguir cosas que no sabrí­a hacer pero el problema es que no suelo entender ninguna xdddd y la de armas la ví­ complicadiiiisima al igual que muchas otras jejejeje
regracias!


Bueno, como quieras. En todo caso, ¿te has leí­do los artí­culos que salieron en SPAC cuando salió la librerí­a?. Además, también tienes una aventura sencillita de ejemplo en el uso de la librerí­a.

Salud !

Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 18 Ene 2005 19:16 
no, no lo leí­....
bien pues efectivamente
el fallo está en otra parte del código
pensé en un principio que era de la clase, pero al quitarla e intentar compilar seguí­a dando errores
no lo entiendo porque el único cambio ha sido al hacer la clase ...
de todas formas da un error de espanol.h y creo q eparser.h
mmmm
tendre que compilarlo por partes ... haber donde está el error ...gracias!


Arriba
  
 
 Asunto:
NotaPublicado: 18 Ene 2005 19:49 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
mapache escribió:
Hola,

También puedes usar el esqueleto desarrollado por Morgull y que se encuentra en el directorio lib del kit de programadores con el nombre de plantilla.inf. Es lo mismo que ha puesto urba, pero con más comentarios.

Saludetes
Mapache



Fijándome bien la mí­a es mucho más completa, y la gramática está colocada en un lugar más apropiado... pero la suya es más "útil" más "bonita" Es una gran idea, la actualizaré un dí­a de estos, ya que ni siquiera sabí­a que existí­a.

Chao.

_________________
Ruber "Urbatain" Eaglenest.
------------------------
http://www.indieorama.com/author/rubereaglenest/


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 14 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM