CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 22 Oct 2019 16:15

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 36 mensajes ]  Ir a página Anterior  1, 2, 3  Siguiente
Autor Mensaje
 Asunto:
NotaPublicado: 14 Ene 2005 22:23 
muuuuuuuuchaaas graaaciiiaaaassssss!!!!!
bueno el documento sobre arrays me lo he mirado ... más o menos lo entendí­
claro, que casos como este no aparecen allí­, y creo que en ningún documento de inform jeje (al menos yo no lo he encontrado Y HE BUSCADO MUCHO)
bueno con este código puedo ir trasteando pero ¿se puede programar el otro caso que plantee?
que la contraseña sea establecida por el jugador?
ya se que es muy retorcido para un juego
pero ...
aun que ahora no se me ocurre una situación donde poder implementarlo podrí­a ser útil...
además ya es curiosidad ...
xd
supongo que todo será igual lo único que hay que hacer que el jugador pueda escribir en contrasena1 y comprovar después ese array
¿como se harí­a lo del espacio de contrasena1?????
(en el caso de que el jugador estableciera el password?
o no harí­a falta en ese caso...
GRACIAS!


Arriba
  
 
 Asunto:
NotaPublicado: 14 Ene 2005 22:35 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 10 Sep 2004 00:17
Mensajes: 3039
Ubicación: Chile
Bueno, lo siguiente me lo dieron para mi aventura "La Mansión" y funciona bastante bien con un unica palabra como password.

Usaré un spoiler, por ser parte de la solución del juego:

[spoiler]

Primero, definimos la gramática para el verbo "teclear" o semejante:

Código:
! Definiciones para el teclado
! Esto va después de la rutina de inicialización
[TeclearSub;
"No hay nada tecleable por aquí­";
];

! LINEAS DE GRAMATICA

! Definiciones para el teclado
Verb 'teclea' 'ingresa' 'digita'
* -> teclear
* noun -> teclear
* topic -> teclear;


Luego, definimos el teclado (o PC u otro) donde codificamos lo que pasa al ingresar el password:

Código:
!Esto va donde pongamos el teclado
Object QWERTY "teclado" Lugar
with
   nombre 'teclado' 'teclas',         
   descripcion
   "Es un teclado QWERTY común.",
   reaccionar_antes
   [;
   teclear :
      np = 2;
      switch (SiguientePalabra()) {
         'password': print
            "De pronto...";
            !Resto del código para password correcto.
         default: "Nada ocurre...";
      };
   ],
has masculino escenario;


...y listo. Es simple y funciona muy bien.
[/spoiler]

Esperando ser de utilidad, se despide,

_________________
[Incanus]
El Escritorio - Blog Aventurero y Literario


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 14 Ene 2005 22:55 
gerish escribió:
¿como se harí­a lo del espacio de contrasena1?????
(en el caso de que el jugador estableciera el password?
o no harí­a falta en ese caso...
GRACIAS!


Puees, ahora que lo dices, no harí­a falta poner espacios en ningún sitio, creo. Si el jugador introduce la "contrasena1" también a través de una sentencia KeyboardPrimitive, esta ya dará como resultado un array en el que el primer byte serí­a la longitud del buffer, el segundo la longitud de lo tecleado por el jugador, y el tercero ya serí­a el primer caracter o primera letra de lo introducido y así­ hasta el final.
Por tanto bastarí­a comparar tranquilamente "contrasena1" y "contrasena2" a partir de sus terceros elementos respectivamente (los que llevan el í­ndice 2) sin preocuparse más.

Pero como siempre, todo es pura teorí­a, sabe dios los potenciales inconvenientes, y seguirí­a sin funcionar correctamente en Glulx.

Por cierto, que una alternativa (si la intención era desde un principio hacer que la segunda parte de una aventura lleve contraseña) es hacer que no se pueda salir de la primera localidad de esta segunda parte sin haber "escrito" la contraseña sobre algún objeto presente... ya sea escribir un conjuro sobre un pergamino o teclear una sofisticada clave en un ordenador, o dar el santo y seña a un guardian... La tonterí­a le darí­a bastante vidilla al tema de la contraseña y se puede hacer con programación informita 100% ortodoxa y sin recurrir a arrays (como en el ejemplo de la Mansión). ¡Es una posibilidad a tener en cuenta!


Arriba
  
 
 Asunto:
NotaPublicado: 14 Ene 2005 23:28 
bien, resumiendo xdd serí­a el mismo código que me pusiste arriba quitándo el espacio en contrasena1 y poniendo un pkeyboardPrimitive para que el jugador introduzca la contraseña. (Así­ me entiendo mejor)
si, serí­a otra forma de hacer que no se pudiera empezar la segunda parte de un juego pero ... mmmmm aun no tengo pensado hacerlo tan largo, aún tendrí­a que acabar una primera parte
y ...
de momento solo compilo para máquina z
me gustarí­a hacerlo con glulse ya que hay mas posibilidades en todos los aspectos pero ...
ufffffff
me da mucho palo con lo que me costó aprender inform y encontrar esas cosillas difí­ciles de saber (como las contraseñas)
además el código que tengo de un juego que estoy en su programación no me compila en glulx porque tiene alg´´un menú ...
incluso la librerí­a bajonivel que utilizo no sirve ...
enfin que lo veo muy complicado adaptar todo el código que tengo hecho


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

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
Si me lo mandas a mi correo privado Urbatain @ terra . es puedo tratar de pasártelo a glulx... es más de hacertelo biplataforma y de paso te lo comento todo para que aprendas. Pero de prisa, en un par de semanas me quedo sin internet.

Chao.

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Ene 2005 11:41 
bien, el problema es que no he hecho casi nada
tan solo una intro ...
pero supongo que programar localidades y objetos será más o menos igual ¿no?
además para eso imagino que sí­ habrá documentación
podrí­a mandarte lo que tengo programado
(cosillas sueltas) que no me compilan en glulx y lo miras...
lo demás ya miraré de buscar documentación


Arriba
  
 
 Asunto:
NotaPublicado: 15 Ene 2005 13:16 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
No, cosillas sueltas no,... el juego que quieres en glulx, ese te lo pasaré. No puedo estar toda la vida parcheando cosas pequeñas :)

Mandame el juego completo ese que dices que no te compila pa glulx. No te preocupes, ni siquiera pienso mirar el contenido :)

Chao.

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Ene 2005 15:19 
ya te lo mandé
bueno son barios ficheros (es mucho código)
ya te digo en el e-mail que no hay nada como aquel que dice
y gracias!


Arriba
  
 
 Asunto:
NotaPublicado: 15 Ene 2005 15:35 
gerish escribió:
bien, resumiendo xdd serí­a el mismo código que me pusiste arriba quitándo el espacio en contrasena1 y poniendo un pkeyboardPrimitive para que el jugador introduzca la contraseña. (Así­ me entiendo mejor)
si, serí­a otra forma de hacer que no se pudiera empezar la segunda parte de un juego pero ... mmmmm aun no tengo pensado hacerlo tan largo, aún tendrí­a que acabar una primera parte
y ...
de momento solo compilo para máquina z
me gustarí­a hacerlo con glulse ya que hay mas posibilidades en todos los aspectos pero ...
ufffffff
me da mucho palo con lo que me costó aprender inform y encontrar esas cosillas difí­ciles de saber (como las contraseñas)
además el código que tengo de un juego que estoy en su programación no me compila en glulx porque tiene alg´´un menú ...
incluso la librerí­a bajonivel que utilizo no sirve ...
enfin que lo veo muy complicado adaptar todo el código que tengo hecho


Eeeefectivamente. Vamos, poco a poco y por partes. Aquí­ pongo un ejemplo para Z (y de momento sólo para Z) de la situación en que el jugador es quien determina determina la contraseña, que viene a ser lo que tú has dicho:

[spoiler]
Código:
array contrasena1 string 10;
array contrasena2 string 10;

!Definimos nuestros 2 arrays tipo string.
!Es probable que no fuera estrictamente necesario que fuesen
!de tipo string, pero eso facilitó mucho testear y depurar
!el ejemplo

Include "EParser";
Include "Acciones";
Include "Gramatica";

!Aquí­ ponemos los includes de siempre

[inicializar;
   do
   {
      print "Introduce password:^^";
      KeyboardPrimitive(contrasena1);
   }
   until (contrasena1->1~=0);

!He puesto el primer KeyboardPrimitive en un bucle
!del que no sale hasta que la longitud de lo introducido por el
!jugador (que se guarda, como vimos, en posición 1 del array)
!sea distinta de cero
!Así­ nos aseguramos de que no introduce una cadena vací­a

   for(::)
      if (confirmar_contrasena()==true) break;

!Aquí­ está el bucle que llama a confirmar_contrasena las veces
!que haga falta hasta que el password sea correcto

   localizacion=limbo;
];



[confirmar_contrasena x;

   print "Confirma password:^^";
   KeyboardPrimitive(contrasena2);

   if (contrasena2->1==0)
   {
      print "Password INCORRECTO";
      rfalse;
   }

!pequeño parche para que salta automaticamente como
!password incorrecto a poco que el jugador introduzaca una
!cadena vací­a

   if (contrasena1->1 ~= contrasena2->1)
   {
      print "Password INCORRECTO";
      rfalse;
   }

!otro pequeño parche salvavidas que retorna false a poco
!que lo introducido por el jugador no tenga la misma longitud
!exacta que la contraseña.
!Estos dos últimos pueden parecer un poco paranoides, pero
!evitan un par de problemas en los que el jugador
!podí­a hacer trampa

   for(x=2:x<=(contrasena1->1+1):x++)
   {   
      if (contrasena1->x ~= contrasena2->x)
      {   print "Password INCORRECTO^";
         rfalse;
      }
   }
   "^^Password CORRECTO^";

!Y este era el bucle que examina la contraseña introducida y la
!compara caracter a caracter (letra a letra) con la original.
!De nuevo, notese que empieza por la tercera posición (la de
!í­ndice 2) y dura mientras x sea menor o igual que lo indicado en
!la longitud de la contraseña original + 1, para que todo cuadre
!bien

];

object limbo "limbo"
with descripcion "¿Como has llegado aquí­?^
Malditos betatesters...^^",
has luz;
[/spoiler]

Bien, como decí­a, esto parece (nunca hay que asegurarlo categóricamente XDD) funcionar en Z, pero es completamente inútil en Glulx. Tal y como pensaba, parece ser que es debido al modo absolutamente diferente en que funciona KeyboardPrimitive en uno y en otro. La cosa, como preguntaba ayer, está en ver cuales son exactamente esas diferencias para ver si se pueden sortear de algún modo.

Por suerte, los datos necesarios están documentados y explicados con cierta claridad en:

http://www.firthworks.com/roger/informfaq/ii.html#14

Lo cual hace que haya una pequeña esperanza de conseguir hacer los cambios oportunos para que funcione incluso a los que no estamos puestos en programar inform a tan bajos niveles.

¡A por ello! XDD


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

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
¿pero para que quieres que el jugador designe una contraseña?

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Ene 2005 20:28 
bueno no contraseña puede darsele otra utilidad cambiando el texto ¿no? ...
gracias, ahora si parece funcionar....
la verdad que para dar con este código fffffffffff
¿no hay documentación donde se explique de forma algo más extendida el while do until break for ...
yo los ejemplos de documentate no termino de entenderlos
(de hecho el código de arriba no entiendo la mayorí­a de él) pero me sirve de todas formas (nada como copiar y pegar) xd
gracias!
saludos!!!


Arriba
  
 
 Asunto:
NotaPublicado: 16 Ene 2005 13:10 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 07 Sep 2004 21:52
Mensajes: 1897
En el documentate!!!!!!!!!!!!

Uno de los apéndices... dice así­:

Inform como lenguaje de programación

Y más abajo dice:

Bloques de código, else y switch
while, do...until, for, break, continue

La url es:
http://caad.mine.nu/eZtanteria/document ... ate_0.html

Pero lo que tienes que hacer es descargarte de una vez el documentate y el manual de referencia y Gull:

http://caad.mine.nu/eZtanteria/

Y antes de preguntar una duda aqui... mira en los í­ndices de ambos libros y verás como se resuelven las dudas solo!!!

Chao.

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


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 16 Ene 2005 16:10 
urbatain escrivió:

Y antes de preguntar una duda aqui... mira en los í­ndices de ambos libros y verás como se resuelven las dudas solo!!!

bueno, he dicho que los ejemplos de documentate referidos a while do until etc etc no los entiendo.
ese manual ya me lo he leido muchas veces
pero
si no está para preguntar dudas....
¿para que está el foro?????? saludooooosssss!!! y gracias!!!


Arriba
  
 
 Asunto:
NotaPublicado: 16 Ene 2005 17:20 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
gerish escribió:
yo los ejemplos de documentate no termino de entenderlos
(de hecho el código de arriba no entiendo la mayorí­a de él) pero me sirve de todas formas (nada como copiar y pegar) xd
saludos!!!


Que equivocado estás, ya verás como surjan problemas y te encuentres con un kilómetro de código con bloques enteros de los que no entiendes absolutamente nada. xDDD

Bueno, sinceramente espero que no te pase. ;)

Saludos
Jenesis


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 16 Ene 2005 18:03 
noo si pasarme
me ha pasado
digo que el ejemplo que se me ha puesto no termino de entenderlo
pero me hago una idea de como funciona
de todas formas me resulta más sencillo trastear con código picado (aun que no lo entienda) que entender algo que he leido decenas de veces sin entenderlo

saludso


Arriba
  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 36 mensajes ]  Ir a página Anterior  1, 2, 3  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM