Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: shaoo on September 25, 2009, 09:31:13 PM

Title: como averiguo el codigo de un color?
Post by: shaoo on September 25, 2009, 09:31:13 PM
hola,he creado un mapa de durezas,y ahora me gustaria averiguar el codigo de color con el que he pintado las zonas por las que no
se podria caminar.pero no se como se obtiene dicho codigo, con el photoshop?
gracias
Title: Re: como averiguo el codigo de un color?
Post by: DCelso on September 25, 2009, 10:07:51 PM
Podrias usar el photoshop, pero con código bennu sería lo siguiente:

mapa_durezas=load_png("miimagen.png");
color_no_transitable=map_get_pixel(0,mapa_durezas,x,y);

Donde x e y son las coordenadas de un pixel que sepas que tiene el  color que quieres usar como no transitable.
Title: Re: como averiguo el codigo de un color?
Post by: Drumpi on September 26, 2009, 01:11:25 AM
Los mapas de durezas es mejor hacerlos SIEMPRE en 8bits, así sabes que no te confundes, sabes que los 256 colores siempre son los mismos.
Title: Re: como averiguo el codigo de un color?
Post by: DjSonyk on September 26, 2009, 08:33:59 PM
Buenas:

Me imagino que se te olvido apuntar el codigo del color?
Puedes hacerlo atraves de casi cualquier programa de dibujo que muestre las paletas como por ejemplo Idraw que viene en el paquete
1.7 de Bennu,otra forma es crear una rutina que te valla leyendo el codigo de los pixels y te lo muestre en pantalla y lo apuntas,algo asi
/*****************************
Write(Arial,5,10,0,"Color selecionado:");
Write_Int(Arial,100,10,0,&Color_Puntero);

File=Fichero_Grafico_Raton;
Graph=Grafico_Raton;
Repeat   
    X=mouse.x;
    Y=mouse.y;
    Color_Puntero=Map_Get_Pixel(Fichero_Mapa_Durezas,Codigo_Mapa_Durezas,X,Y);
    Frame;
END
****************************/
Por supuesto que es mejor y mas rapido que uses un programa especifico.
Title: Re: como averiguo el codigo de un color?
Post by: Prg on October 05, 2009, 02:44:11 AM
el código de color en 32 bits es azulverderojo en hexadecimal 0FFFFFFh

por ejemplo el color

rojo 255
verde 100
azul 10

el color sería:
0A64FFh

en 16 bits es otro asunto, y en 8 bits más distinto.

pero con map_get_pixel y un programita que tu te hagas puedes saber exactamente qué color está en cierta posición.
donde rojo es la cantidad de rojo del color 0-255 ...

además te recomiendo que uses rgb(rojo,azul,verde) para comparar ya que algunas tarjetas de video cambian los códigos del color.


sería algo así como:

piso=rgb(rojo,verde,azul);

...

if (map_get_pixel(.....)==piso)
     y-=gravedad...
end
Title: Re: como averiguo el codigo de un color?
Post by: SplinterGU on October 05, 2009, 12:06:37 PM
0ffffffh en 32bits es un blanco total con el alpha completamente transparente...
Title: Re: como averiguo el codigo de un color?
Post by: DCelso on October 05, 2009, 03:03:07 PM
También es habitual usar la mitad de resolución para el mapa de durezas, ganando así velocidad y espacio de memoria y apenas se nota la pérdida de precisión. Siempre que accedamos al mapa de durezas dividiremos por dos y llisto.
El código quedaría tal que así

mapa_durezas=load_png("miimagen.png");
color_no_transitable=map_get_pixel(0,mapa_durezas,x/2,y/2);
Title: Re: como averiguo el codigo de un color?
Post by: Windgate on October 07, 2009, 05:26:16 AM
Oooohhh, eso me recuerda que ahora que trabajo a full 32 bits todavia no he probado el map_get_pixel ( ) en mapas con 32 bits... Lo probare aunque seguramente acabe metiendo las durezas en un FPG de 8 bits... Es de esperar que con 256 codigos de dureza distintos tenga suficiente xDDD

EDIT: Por supuesto, ademas de el/los mapa de durezas siempre mantengo un grafico adicional (Numerado con 999) con la referencia de colores de dureza usados, un color por pixel (Mapa minusculo). Nada mas comenzar la ejecucion hago map_get_pixel sobre la referencia y guardo los distintos colores en variables:

durezas[_SUELO] = map_get_pixel ( file , 999 , 0 , 0 );
durezas[_TECHO] = map_get_pixel ( file , 999 , 1 , 0 );
durezas[_PARED] = map_get_pixel ( file , 999 , 2 , 0 );
...

La referencia de colores la edito con Paint, aunque lo que dice DJSonyk de la paleta tambien parece igual de valido. Cada uno tiene sus formas de trabajar y las usa siempre, si alguien encuentra algo mejor... Le devolvemos el dinero y ya esta :-*
Title: Re: como averiguo el codigo de un color?
Post by: DCelso on October 07, 2009, 07:15:01 AM
Lo de los colores de las durezas, lo mismo que haces con una imagen aparte, se suele hacer en la misma imagen del mapa de durezas en una sección no visible, por ejemplo haciendolo una columna o fila mas largo y poniendo allí los colores.
Title: Re: como averiguo el codigo de un color?
Post by: Windgate on October 07, 2009, 08:33:46 PM
Sí, pero como puedo tener varios background diversos e incluso cambiar unos por otros prefiero tener la referencia fija. Cuestión de costumbres, soy un animal de costumbres xD
Title: Re: como averiguo el codigo de un color?
Post by: DjSonyk on October 09, 2009, 10:45:24 PM
¿Espacio de Memora?¿Eso que es lo que es? ¡¡¡?¿?¡?¿?!!!
Title: Re: como averiguo el codigo de un color?
Post by: DCelso on October 10, 2009, 12:12:43 AM
 :D, gracias.
Title: Re: como averiguo el codigo de un color?
Post by: Windgate on October 10, 2009, 01:02:51 AM
Quote¿Espacio de Memora?¿Eso que es lo que es? ¡¡¡?¿?¡?¿?!!!

Cuando usas durezas tienes el scroll que "muestras" en pantalla y el scroll con los colores de durezas para suelo, techo, pared, etc.

Tener ambos cargado supone Mb de RAM consumidos... Es posible mantener un mapa de durezas con la mitad de resolución del escenario y chequearlo con una "pérdida de precisión" que no suele suponer mucho...

El resultado es una menor carga de Mb de RAM consumidos y un poco más de CPU consumida por las divisiones que hay que hacer para determinar el cálculo... Las divisiones entre 2 en binario suponen un simple shift pero las divisiones entre 3 y otros números impares implican varios ciclos de CPU, así que OJO!!!

Lo escribo de tirón, pero... Es cierto xD