CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Oct 2017 15:30

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 78 mensajes ]  Ir a página Anterior  1, 2, 3, 4, 5, 6  Siguiente
Autor Mensaje
NotaPublicado: 21 Ene 2013 18:25 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Intento poder girar un dial de posición, con el siguiente código:

Código:
def preGirar, preTocar, preMover
        #self.posicion = #self.posicion + 0.1
        #jugador.accion( Examinar, #self, null )
        return true
end


El caso es que el dial se puede girar, y funciona. Se puede tocar, y funciona. Pero no se puede mover. Siempre aparece "intentas mover el dial de posición, pero no pasa nada". Quizás la acción mover no se llame Mover, no se...

Otro problema que tengo está relacionado con los números reales. Si el número tiene decimales, pues sale con los decimales que tenga, pero claro, si le vas sumando 0.1, resulta que de vez en cuando te pone cosas como 3.10000000009. Me gustaría sacar el número redondeado con sólo dos decimales, pero no sé cómo puedo hacero.

¿Hay alguna guía de OgnlScript? Por lo que he visto por ahí, parece un proyecto medio abandonado...

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 22 Ene 2013 11:02 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1601
Ubicación: Argentina
En cuanto a IE, es de público conocimiento su caída de uso en sus últimos años, a pesar de la mayor compatibilidad con estándares de las versiones 9 y 10. A pesar de esto, creo que soportarlo es vital en tanto es prácticamente el navegador que está en todas las máquinas (se puede eliminar pero, además de que muchos usuarios no lo saben, hacerlo provoca que bastantes programas (y no sólo de Microsoft) no funcionen como uno espera al usar controles MSHTML u otras funciones de APIs de IE) y Kenshira es un motor principalmente web.

Respecto al problema con Javascript, recuerdo que cuando usaba IE a veces pasaba. El comportamiento cuando encuentra errores de este tipo se puede personalizar en la ficha Opciones avanzadas de las Opciones de Internet: Una de las opciones dice, precisamente, Habilitar la depuración de scripts.
Desde IE 8 existe una característica denominada Vista de Compatibilidad que simula, en teoría, versiones anteriores del navegador. Con eso habría que probar también qué sucede.

Y bueno, ahí dejo estos recuerdos de cuando usaba IE a diario; quién sabe, quizá hasta sirven de algo en el diagnóstico del problema y todo. Desde el 5 al 8 los usé cada uno por bastante tiempo; cuando salieron el 9 y el 10, a pesar de su gran mejora en compatibilidad con estándares, gestión de descargas y demás, ya llevaba bastante tiempo con las bondades de Firefox que hoy por hoy no cambio por nada (salvo una buena versión de 64 bits, cosa que hasta ahora sólo tiene IE xD).


Arriba
 Perfil  
 
NotaPublicado: 22 Ene 2013 13:14 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 09 Sep 2004 18:24
Mensajes: 1444
baltasarq escribió:
(...)
El caso es que el dial se puede girar, y funciona. Se puede tocar, y funciona. Pero no se puede mover. Siempre aparece "intentas mover el dial de posición, pero no pasa nada". Quizás la acción mover no se llame Mover, no se...

Otro problema que tengo está relacionado con los números reales. Si el número tiene decimales, pues sale con los decimales que tenga, pero claro, si le vas sumando 0.1, resulta que de vez en cuando te pone cosas como 3.10000000009. Me gustaría sacar el número redondeado con sólo dos decimales, pero no sé cómo puedo hacero.

¿Hay alguna guía de OgnlScript? Por lo que he visto por ahí, parece un proyecto medio abandonado...

Balta, por lo que veo en el código de la librería, creo que la acción se llama "Empujar".

Mira la librería directamente, en serio, en un momento encuentras las cosas, pero si tienes que ir "adivinando" es imposible.

http://www.kenshira.com/system/default/edit

Para buscar cosas más rápido sin tener que ir "probando", yo me la descargué a un directorio local y hacía una búsqueda rápida.

En cuanto a lo de los números, ni idea, pero una opción que tienes es utilizar números enteros en lugar de flotante, y usar operaciones de división y módulo por 100 al escribirlos. No sé si es lo más limpio, pero es una idea que te doy :-P


Arriba
 Perfil  
 
NotaPublicado: 27 Ene 2013 16:14 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Lo de quedar lo tengo difícil, pero se podría aprovechar la RetroMadrid.

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Arriba
 Perfil  
 
NotaPublicado: 27 Ene 2013 16:26 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Hola

Por mi parte no hay problema en hacer público el código de Carvalho. Creo que la idea de la Wiki vendría bien para que Akbarr pudiese pegar 'snippets' de código con las cosas que ha ido averiguando. ¡Es un auténtico arqueólogo!


Akbarr escribió:
Balta, yo es que no te puedo ayudar mucho porque ya no me acuerdo de las cosas. Sé que en su día las hice y que la mayor parte no me costaron demasiado, pero no me acuerdo de cómo las hice. Si no le importa a saimazoom, si quieres te puedo dar permisos para que puedas ver el código fuente y a ver si te ayuda.

En cualquier caso algunas sí las sé: para usar el fichero template.html no tienes que hacer nada de nada, no recuerdo si venía ya creado en el proyecto y lo podías modificar o tenías que añadirlo tú, pero basta que exista para que se use como plantilla del HTML. Si no existe ya cógete el de la otra aventura y modifícalo a tu gusto (yo lo modifiqué prácticamente de cabo a rabo para hacer la presentación como se me iba ocurriendo). Para subir tanto eso como las imágenes, sonidos, javascript, css o lo que quieras usar para la presentación, hay un precioso botón de "Subir recursos" en el editor, arriba a la izquierda.

Por otra parte, te comento que 1) Alberto en principio sí ha dicho que se comprometía a mantener el portal y 2) el código fuente en Java es libre, está en un proyecto en sourceforge (doy fe de que funciona, de hecho incluso me suena que cambié cosas del JavaScript del editor de código yo mismo, que están subidas al SVN). Además, hay una versión de Kenshira ejecutable en ordenador local. Es decir, que aunque sea más cómodo no dependes del portal de Kenshira, es más, ni siquiera dependes de que haya un portal. Yo nunca tuve que mirar el código Java para ver qué hacía, ahora, el de la librería estándar sí lo tuve que mirar bastante. Se puede ver directamente desde kenshira.com con este enlace:

http://www.kenshira.com/system/default/edit

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Arriba
 Perfil  
 
NotaPublicado: 27 Ene 2013 18:49 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Oct 2006 13:51
Mensajes: 385
Ubicación: mundo
Perdón por el retraso, he tenido una semana muuuuuuy ocupada con un evento, pero ya soy libre otra vez :)

baltasarq escribió:
Intento poder girar un dial de posición, con el siguiente código:

Código:
def preGirar, preTocar, preMover
        #self.posicion = #self.posicion + 0.1
        #jugador.accion( Examinar, #self, null )
        return true
end


El caso es que el dial se puede girar, y funciona. Se puede tocar, y funciona. Pero no se puede mover. Siempre aparece "intentas mover el dial de posición, pero no pasa nada". Quizás la acción mover no se llame Mover, no se...


He tenido que investigar aquí: http://www.kenshira.com/system/default/info-actions para ver que action le corresponde a la frase "mover dial". Y tienes razón, no existe acción Mover. Existe una action Empujar que tiene, entro otros, el verbo mover. Así que para lo que quires hacer, tienes que poner "preEmpujar"

Citar:
Otro problema que tengo está relacionado con los números reales. Si el número tiene decimales, pues sale con los decimales que tenga, pero claro, si le vas sumando 0.1, resulta que de vez en cuando te pone cosas como 3.10000000009. Me gustaría sacar el número redondeado con sólo dos decimales, pero no sé cómo puedo hacero.

¿Hay alguna guía de OgnlScript? Por lo que he visto por ahí, parece un proyecto medio abandonado...


OgnlScript te permite ejecutar Java, así que me imagino que esto debería funcionar:

Código:
println new java.text.DecimalFormat("####.##").format(#self.posicion)


Otra solución es trabajar con enteros y dividir entre 10 al imprimir. Es decir, sumarle al dial 1, y luego al pintar el dial, dividir entre 10. Hagas lo que hagas, siempre te puedes crear un método dentro de tu objeto que te lo devuelva o ya formateado, o ya dividido entre 10.

Código:
def pos: new java.text.DecimalFormat("####.##").format(posicion)


Arriba
 Perfil  
 
NotaPublicado: 29 Ene 2013 13:30 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Bueno, pues desgraciadamente, no va. Me dice que no encuentra la clase DecimalFormat, o incluso String:

Código:
object instrumentos
    def getPosicion: #global.String.format("%03.2f", #self.posicion / 10.00 )
endobject


He probado con String, java.lang.String, #global.java.lang.String... pero siempre dice que no lo encuentra, y parece referirse siempre al ámbito local del objeto instrumentos.

Por curiosidad, ¿por qué no escogiste BSH como lenguaje? Yo no conocía OgnlScript... aunque bueno, supongo que era importante que soportase programación OO basada en prototupos, claro.

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 29 Ene 2013 13:48 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Otro problemilla: supongamos que tengo una clase Nave con el método setEstaEnPosicion(flg), y creo un objeto de esa clase:

Código:
class Nave
   var enPosicion = false
   
   def estaEnPosicion: enPosicion
   def setEstaEnPosicion(flg): enPosicion = flg
endclass

object Mercurio:Nave
   def setEstaEnPosicion(flg)
      super( flg )
      println "Viajando...";
   end
endobject


¿Cómo puedo hacer que el nuevo método del objeto Mercurio llame al método que provee la clase (de otra forma, no tengo acceso a enPosicion)? Yo he probado con super(), pero no va.

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 29 Ene 2013 18:11 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Oct 2006 13:51
Mensajes: 385
Ubicación: mundo
baltasarq escribió:
Hola !

Bueno, pues desgraciadamente, no va. Me dice que no encuentra la clase DecimalFormat, o incluso String:

Código:
object instrumentos
    def getPosicion: #global.String.format("%03.2f", #self.posicion / 10.00 )
endobject


He probado con String, java.lang.String, #global.java.lang.String... pero siempre dice que no lo encuentra, y parece referirse siempre al ámbito local del objeto instrumentos.

Por curiosidad, ¿por qué no escogiste BSH como lenguaje? Yo no conocía OgnlScript... aunque bueno, supongo que era importante que soportase programación OO basada en prototupos, claro.


Vale. Es que pensaba que se podía, pero no se pueden construir nuevos objetos porque lo tengo bloqueado (para impedir que alguien se ponga a construir objetos y sobrecargue la memoria del servidor).

La única solución que le veo es tratar el dial como un número decimal, pero no sumarle decimales, si no enteros. Y al mostrarlo, dividirlo entre 10. Esto lo acabo de probar y funciona:

Código:
object Radio:Decorado dentro:Salon
    nombre FS:radio
    var dial = 11.0
    def alMirar()
        dial = dial+1
        println "Al mirar, mueves un poco el dial. Ahora marca "+dialBueno
    end
    def dialBueno: dial/10
endobject


Pues en su momento no había tantas alternativas a lenguajes como hay ahora. Necesitaba un lenguaje potente pero que me permitiera manipular la sintaxis y hacer un poco lo que quisiera. Así que lo que hice fue crear OgnlScript, que no es más que un engendro entre un motor de expresiones (Ognl, deprecado hace siglos) y un parseo del lenguaje "a mano" que me permite hacer muchos cambios rápidamente. Tambien necesitaba un lenguaje que no fuera demasiado potente, ya que al correr en un servidor, el programador de aventuras podría llamar a clases de Java del JDK, crear nuevos objetos y cargarse el servidor, así que lo que hice fue tocar el código de Ognl para impedir todas estas cosas. Y así es como salió OgnlScript, una aberración para los diseñadores de lenguajes ;)


Arriba
 Perfil  
 
NotaPublicado: 29 Ene 2013 18:12 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Oct 2006 13:51
Mensajes: 385
Ubicación: mundo
baltasarq escribió:
Hola !

Bueno, pues desgraciadamente, no va. Me dice que no encuentra la clase DecimalFormat, o incluso String:

Código:
object instrumentos
    def getPosicion: #global.String.format("%03.2f", #self.posicion / 10.00 )
endobject


He probado con String, java.lang.String, #global.java.lang.String... pero siempre dice que no lo encuentra, y parece referirse siempre al ámbito local del objeto instrumentos.

Por curiosidad, ¿por qué no escogiste BSH como lenguaje? Yo no conocía OgnlScript... aunque bueno, supongo que era importante que soportase programación OO basada en prototupos, claro.


Vale. Es que pensaba que se podía, pero no se pueden construir nuevos objetos porque lo tengo bloqueado (para impedir que alguien se ponga a construir objetos y sobrecargue la memoria del servidor).

La única solución que le veo es tratar el dial como un número decimal, pero no sumarle decimales, si no enteros. Y al mostrarlo, dividirlo entre 10. Esto lo acabo de probar y funciona:

Código:
object Radio:Decorado dentro:Salon
    nombre FS:radio
    var dial = 11.0
    def alMirar()
        dial = dial+1
        println "Al mirar, mueves un poco el dial. Ahora marca "+dialBueno
    end
    def dialBueno: dial/10
endobject


Pues en su momento no había tantas alternativas a lenguajes como hay ahora. Necesitaba un lenguaje potente pero que me permitiera manipular la sintaxis y hacer un poco lo que quisiera. Así que lo que hice fue crear OgnlScript, que no es más que un engendro entre un motor de expresiones (Ognl, deprecado hace siglos) y un parseo del lenguaje "a mano" que me permite hacer muchos cambios rápidamente. Tambien necesitaba un lenguaje que no fuera demasiado potente, ya que al correr en un servidor, el programador de aventuras podría llamar a clases de Java del JDK, crear nuevos objetos y cargarse el servidor, así que lo que hice fue tocar el código de Ognl para impedir todas estas cosas. Y así es como salió OgnlScript, una aberración para los diseñadores de lenguajes ;)


Arriba
 Perfil  
 
NotaPublicado: 29 Ene 2013 18:34 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Oct 2006 13:51
Mensajes: 385
Ubicación: mundo
baltasarq escribió:
Hola !

Otro problemilla: supongamos que tengo una clase Nave con el método setEstaEnPosicion(flg), y creo un objeto de esa clase:

Código:
class Nave
   var enPosicion = false
   
   def estaEnPosicion: enPosicion
   def setEstaEnPosicion(flg): enPosicion = flg
endclass

object Mercurio:Nave
   def setEstaEnPosicion(flg)
      super( flg )
      println "Viajando...";
   end
endobject


¿Cómo puedo hacer que el nuevo método del objeto Mercurio llame al método que provee la clase (de otra forma, no tengo acceso a enPosicion)? Yo he probado con super(), pero no va.


con #super.setEstaEnPosicion(flg) a lo mejor funciona. Pero recuerdo que todo el tema de las llamadas a las clases padre era bastante jodido de implementar, y lo mismo lo tengo desactviado. Lo ideal es que lo llames con otro nombre... realmente te hace falta que se llamen igual? no veo el uso del polimorfismo aquí... :o


Arriba
 Perfil  
 
NotaPublicado: 31 Ene 2013 13:14 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Bueno, efectivamente, lo he solucionado sumando de uno en uno y dividiendo entre cien, así no se generan decimales espúreos.

Lo del super(), pues bueno... no funciona... sí, le he llamado de otra manera, pero que conste que me parece una chapucilla.

Y para alegrarte la jornada, que sepas que de nuevo vuelven a fallar los editores (?). ¿Has tocado algo?

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 31 Ene 2013 19:27 
Desconectado
Guionista
Guionista
Avatar de Usuario

Registrado: 09 Oct 2006 13:51
Mensajes: 385
Ubicación: mundo
baltasarq escribió:
Bueno, efectivamente, lo he solucionado sumando de uno en uno y dividiendo entre cien, así no se generan decimales espúreos.
Lo del super(), pues bueno... no funciona... sí, le he llamado de otra manera, pero que conste que me parece una chapucilla.
Y para alegrarte la jornada, que sepas que de nuevo vuelven a fallar los editores (?). ¿Has tocado algo?


Siento lo del super y la herencia, pero te aseguro que era complicado de implementar. :)
Sobre los editores... no los he tocado nunca! No entiendo como es posible que funcionen, dejen de funcionar! A mi no me funciona ninguno (uso Chrome) salvo el textarea...


Arriba
 Perfil  
 
NotaPublicado: 01 Feb 2013 09:56 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

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

Yo tampoco entiendo muy bien por qué funcionan un día y después dejan de funcionar. Yo también uso Chrome, y el efecto es ese: un buen día funcionan todos, y al otro no. Ahora mismo siguen sin funcionar.

Por cierto, ya que estarás (supongo) trasteando con este tema, Cuando escribes algo, se activa el corrector ortográfico automáticamente, y empieza a marcar casi todas las palabras de la línea en la que estás, y así sucesivamente. Esto es normal ya que estás escribiendo código, pero... ¿no se podría desactivar el corrector?

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 01 Feb 2013 23:09 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1601
Ubicación: Argentina
baltasarq escribió:
Hola !

Yo tampoco entiendo muy bien por qué funcionan un día y después dejan de funcionar. Yo también uso Chrome, y el efecto es ese: un buen día funcionan todos, y al otro no. Ahora mismo siguen sin funcionar.

Por cierto, ya que estarás (supongo) trasteando con este tema, Cuando escribes algo, se activa el corrector ortográfico automáticamente, y empieza a marcar casi todas las palabras de la línea en la que estás, y así sucesivamente. Esto es normal ya que estás escribiendo código, pero... ¿no se podría desactivar el corrector?


Hasta donde sé, Chrome tiene incorporado un corrector ortográfico. A diferencia de lo que ocurre en Firefox, está activado por defecto e incluye diccionarios.
Prueba a desactivar la corrección ortográfica en Chrome.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 78 mensajes ]  Ir a página Anterior  1, 2, 3, 4, 5, 6  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 1 invitado


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