CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 21 Sep 2018 17:26

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 10 mensajes ] 
Autor Mensaje
NotaPublicado: 13 Ene 2011 09:45 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
No he encontrado la manera de cambiar el color de solo una palabra del texto, y me gustaría también poder resaltarla en negrita.

Tampoco sé si se puede cambiar de color las descripciones metidas desde el campo de IDE, y no me refiero a todas las de un objeto, sino a unas sí y a otras no.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 10:57 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
En un texto normal que no sea un informAction, el tema de cambiar el color a un trozo ya lo cubrimos aquí: viewtopic.php?f=31&t=4140

Para resumir, se usa el método getColorCode(String) de la clase InputOutputClient para preguntarle al cliente qué código usa para mostrar un determinado estilo, y así se hace algo como esto:

jugador.write("Es muy " + jugador.getIO().getColorCode("important") + "importante" + jugador.getIO().getColorCode("default") + " ponerse el casco");

Eso te pondría la palabra importante en el estilo "important".

Si en lugar de mostrarlo en uno de los colores definidos en los estilos, quieres cablear colores en concreto (por ejemplo, el color HTML #447766), eso también se puede hacer para el cliente de ventanas de Swing; pero sin garantizar la portabilidad a otros clientes que no tienen por qué soportar colores HTML. Si necesitas hacer esto, pregunta y miraré cómo era.

Respecto a la negrita, no existe el concepto "negrita" en sí (bueno, en realidad tampoco existe el concepto de colores, existen estilos, pero eso es otra historia). Sin embargo, en el cliente de Swing (y sin garantizar la portabilidad) puedes conseguir negrita cambiando la fuente del área de texto a una fuente en negrita, con los métodos para cambiar fuentes que se explican en detalle en http://www.caad.es/aetheria/doc/doku.php?id=tipografia

Por ejemplo, poner una palabra en negrita creo que es así:

Código:
Font negrita = new Font("default", Font.BOLD, 12);
Font normal = new Font("default", Font.PLAIN, 12);
jugador.write("Aquí hay una palabra en ");
if ( jugador.getIO() instanceof ColoredSwingClient  )
  jugador.getIO().setCurrentOutputFont(negrita);
jugador.write(" negrita ");
if ( jugador.getIO() instanceof ColoredSwingClient  )
  jugador.getIO().setCurrentOutputFont(normal);
jugador.write(" pero el resto no lo están.\n");


También puedes incluir la fuente en un fichero y cargarla, esa página de la documentación te dice cómo hacerlo con o sin getResource(). Pero en ese caso es importante capturar las excepciones, porque incluso proporcionando el fichero siempre es posible que un determinado sistema o configuración donde ejecuten el AGE puede no ser compatible con una determinada versión de truetype, opentype u otro estándar para especificar fuentes, y por lo tanto no pueda abrirlo.

Sobre las descripciones que introduces en el IDE, estas descripciones aparecen en el estilo "description", y me temo que no hay forma de cambiar eso. Si quieres cambiarlo tendrás que capturar el verbo mirar. La idea básica de los estilos de AGE es que por defecto los textos aparezcan en un estilo distinto según su naturaleza: si son una descripción, el texto de una acción, un error, etc. Luego por supuesto esto se puede cambiar si a uno no le gusta; pero por código, no en el IDE.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 11:58 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Font negrita = new Font(world.getResource("Courier_New.ttf"), Font.BOLD, 12);
Font normal = new Font(world.getResource("Courier_New.ttf"), Font.PLAIN, 12);



Syntax error in BeanShell code in object: [World: 15 meses, internal handle eu.irreality.age.World@1c344f6]
Loaded to call method intro
With arguments: [ eu.irreality.age.Player:20000001:el Guerrero ]
File: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pla . . . ''
Stack trace: Sourced file: inline evaluation of: ``intro( arg0);'' : Typed variable declaration : Constructor error: Can't find constructor: java.awt.Font( java.net.URL, int, int ) in class: java.awt.Font : at Line: 96 : in file: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pla . . . '' : new Font ( world .getResource ( "Courier_New.ttf" ) , Font .BOLD , 12 )

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 12:04 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
Hum... no has mirado la documentación que te he puesto, ¿verdad? :D

Para hacerlo con getResource, es así:

Código:
client.setCurrentOutputFont(world.getResource("fuente.ttf"),16);


En el caso de la negrita, tendrás que buscar el fichero de la negrita (cada tipo de letra tiene un fichero .ttf). Por ejemplo, en mi máquina hay "Courier New Negrita.ttf".

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 12:28 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Hum... no has mirado la documentación que te he puesto, ¿verdad? :D

Para hacerlo con getResource, es así:

Código:
client.setCurrentOutputFont(world.getResource("fuente.ttf"),16);


En el caso de la negrita, tendrás que buscar el fichero de la negrita (cada tipo de letra tiene un fichero .ttf). Por ejemplo, en mi máquina hay "Courier New Negrita.ttf".


Sí, la he mirado.
Pero primero lo he intentado con "default", pensando que AGE ya tiene sus fuentes por defecto, pero no ha funcionado, así que he ido a la doc, y ahí ponía lo de las fuentes. He cogido la letrita la he puesto en el raiz de la aventura y he añadido el world.getResource, sí que he pensado que igual tenía algún módulo para engordar letras, de otro modo no entendía lo que habías puesto de bold y plain. :lol:
Yo es que de fuentes... las de agua. xD
Voy a ver. :)

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 12:54 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Aaaah vale ya lo pillo. :lol:
A ver, he dejado default, pero.... no funciona, o igual es que sigo sin pillarlo. :lol:
En la intro he puesto:

Font negrita = new Font("default", Font.BOLD, 20);
Font normal = new Font("default", Font.PLAIN, 20);

mobile("guerrero").write("Para recibir instrucciones teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'AYUDA'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para pedir pistas teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'PISTA'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para ver las posibles salidas y el mapa, teclea ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'SALIDAS'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para des/activar el sonido, ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'SONIDO OFF/ON'.\n\n");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write("Para des/activar la descripción completa de una localidad al entrar en ella, ");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(negrita);}
mobile("guerrero").write("'DESCRIPCION OFF/ON'");
if ( mobile("guerrero").getIO() instanceof ColoredSwingClient )
{mobile("guerrero").getIO().setCurrentOutputFont(normal);}
mobile("guerrero").write(".\nEsto no afecta a la acción 'MIRAR'.\n\n");

Y no pasa nada, al menos en ese cacho, después sí cambia la fuente, pero donde yo quiero que cambie, no. Vamos que no doy pie con bolo. :lol:
Yo solo quiero resaltar los metacomandos, no otra cosa.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 13:06 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
Lo de "default" es la fuente por defecto de Java. Con ese método estás diciéndole a Java que te construya una fuente normal o en negrita, y Java encapsula los detalles (pero no te deja elegir un fichero de fuente). Con el otro que he puesto, pones tú el fichero y te tienes que preocupar tú de que sea el fichero de fuente en negrita.

Cuando dices que te cambia de fuente después, ¿cuándo lo hace? ¿Es que lo hace con retraso?

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 13:13 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Lo de "default" es la fuente por defecto de Java. Con ese método estás diciéndole a Java que te construya una fuente normal o en negrita, y Java encapsula los detalles (pero no te deja elegir un fichero de fuente). Con el otro que he puesto, pones tú el fichero y te tienes que preocupar tú de que sea el fichero de fuente en negrita.

Cuando dices que te cambia de fuente después, ¿cuándo lo hace? ¿Es que lo hace con retraso?


Lo hace a partir de la última línea, quiero decir que con la fuente elegida no se muestra absolutamente nada de lo que sale en ese código.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 13:15 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
Pues no sé, cuando tenga tiempo haré pruebas, pero no te garantizo tenerlo pronto, ya he perdido mucho tiempo esta mañana en esto y me veo trabajando hasta las 3 AM... :(

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 13 Ene 2011 13:31 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Pues no sé, cuando tenga tiempo haré pruebas, pero no te garantizo tenerlo pronto, ya he perdido mucho tiempo esta mañana en esto y me veo trabajando hasta las 3 AM... :(


Déjalo, no merece la pena, en serio.
Es hora de parar y no seguir con este proyecto, como ya he dicho en el otro hilo quedo a espera de el último reporte de la aventura. Si sale algún bug grave se arreglará pero solo eso, creo que hay que parar o esto no se va acabar nunca.
En el próximo proyecto que se empezará de limpio, ya se podrán pulir detalles de esta clase.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 10 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 2 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