PDA

Ver la versión completa : definir transparencias en fenix (o deluxe paint)



korohash
15/01/2005, 21:11
He hecho unos graficos para Fenix con el deluxe paint, pero salen las imagenes con un reborde blanco horrible. Hay alguna forma de definir en Fenix q tome el color blanco como transparente?
Eso tb sirve a la hora de gestionar colisiones?
Gracias

Licantropo
15/01/2005, 22:55
No se, supongo que si se podra. De todas formas fenix tiene el color negro como transparente, asi que lo que puedes hacer es cambiar el blanco por negro. Aunque seguro que se puedo poner el blanco como transparente, pero yo no sabria decirte como.

korohash
16/01/2005, 00:17
He usado el negro en mis imagenes y no se transparenta...
Asi q no se...
a ver si alguien me echa una mano...

K-teto
16/01/2005, 01:11
Dios, deluxe paint, ya me caes bien solo por eso, aunque no tengo la respuesta a tu pregunta ya que no uso fenix.

AMIGA PAWAAAAAAAAAH (lease esto con la cara pintada a lo william wallace y haciendo un calvo a el monitor)

enkonsierto
16/01/2005, 01:13
Dios, deluxe paint, ya me caes bien solo por eso, aunque no tengo la respuesta a tu pregunta ya que no uso fenix.

AMIGA PAWAAAAAAAAAH (lease esto con la cara pintada a lo william wallace y haciendo un calvo a el monitor)


y un cachete pintado de azul?....:D :D :D :D :D :D :D

kmkzk
16/01/2005, 01:25
Que buena!! Deluxe paint!! Sprites pixelados rulez :) Como diria AliG... Respecto!!
Respecto a tu pregunta, no te puedo responder con seguridad, pero no habra alguna funcion que redefina el color transparente? (no tengo ni idea de fenix)
Bueno, es eso lo que estas preguntando... pero bueno... 8)
un saludo

korohash
16/01/2005, 10:22
Si, pos la verdad es q un poco pixelados si que estan...(bueno de momento solo he hecho el personaje principal andando y parado...) :D
De todas formas, aun me queda mucho por aprender de Fenix, como las colisiones, hacer que el personaje vaya "pegado al suelo" es decir, q siga las deformaciones del suelo... Y saber como cambiar el color de la transparencia :D:D... Pues eso, si alguien lo sabe que me avise, please.
Un saludito

Darumo
16/01/2005, 12:58
si sigue siendo como en Div Games Studio tu color transparente sera el color 0, asi que en deluxe paint sera el primer color o el de la mitad (color 0 o 127), prueba a ver. (yo solia cambiar el color transparente a un color chillon que no fuera a usar, como el tipico rosa fluorescente)

korohash
16/01/2005, 14:04
Pero con que funcion lo defino?

klausus
17/01/2005, 01:17
ostrix esto es lo k buscava jejee yo tampoko lo se aunk kiero saberlo xk el fondo azul al lado de mi zelda no keda nada bien xD pero de tos modos a mi tb me keda cosas k aprender como colisiones y el scrollwno y tb el color transparente este vamos demomento puedo mover a zelda (con un pegote azul por un trozo de mapa del zelda k e ripeao ^^) espero soclucionarlo yo tb pa pòder continuar con mi juegezito ^^

jrt_1990
24/09/2005, 04:47
a mi tambien me interesa, lo de ke vaya pegado al suelo, las colisiones (aunque eso no tanto) y lo de la transparencia, alguien lo sabe por favor?

the_goulin
24/09/2005, 06:08
Hola,

El color transparente para sprites de 8 bits de color es el primer color de la paleta, osea el 0, lo que tienes de hacer es cambiar el color de fondo por del sprite por el color 0 de la paleta.

Cuando digo color 0 me refiero a la posicion del color, si la paleta tiene 255 colores el que esta definido al principio es el 0 (no tiene pq ser negro)

lo de hacer q un muñeco vaya pegado al suelo se hace con los famosos "mapas de durezas"

espero haberme explicado con claridad :P



Saludos,
The_Goulin

jrt_1990
24/09/2005, 06:30
gracias, a ver como consigo ahora cambiar lo de la paleta xD

jrt_1990
24/09/2005, 07:54
ya lo he conseguido, me e liado pero al final lo logre, ahora tengo una duda, tengo al muñequito andando si le das a la derecha por ejeplo, y se muestra como anda, pero como se hace para que al levantar la tecla vaya a un sprite, de forma ke parezca ke se para?

el codigo del movimiento en el cual se mueven los sprites es este:

If(key(_right)) advance(8); graph++;If (graph=>10) graph=1; End End

P.D: si en vez de "advance(8);" pongo "x+=8" , ke diferencia hay?

Drumpi
24/09/2005, 08:38
Lo de los colores veo que esta respondido, pero si quereis editar la paleta, casi mejor que os busqueis el DIV para hacerlo. Teneis una version demo en http://fenixworld.se32.com, eso si, no funciona en winXP salvo los "trucos habituales"
La mejor idea es tratar de hacer los graficos en png con transparencia. No se si asi se podrian guardar directamente en 8bits seleccionando el mismo mapa como paleta, pero si no, usando el fpgedit (misma direccion de antes) podeis meterlo en un fpg de 16bits y tratar de convertirlo a 8.

Lo de pararlo, tan sencillo como comprobar que no se pulsa ninguna tecla y poner el grafico en el numero que sea:
if (!key(_left) and !key(_right)) graph="parado"; end

Y el usar x+=8 siempre es mejor que usar advance, pues con advance obligas al ordenador a hacer operaciones trigonometricas, mientras que de la otra solo es una suma, y el resultado es el mismo.

jrt_1990
24/09/2005, 18:43
Lo de pararlo, tan sencillo como comprobar que no se pulsa ninguna tecla y poner el grafico en el numero que sea:
if (!key(_left) and !key(_right)) graph="parado"; end

era esto lo ke buscaba, eske no sabia komo hacer para ke detectara el ke NO pulsara la tecla, ahora solo me keda dedicarle un ratito a ajustarlo para ke tenga "parado izquierda" y "parado derecha" (para ke mire hacia cada lado).


Y el usar x+=8 siempre es mejor que usar advance, pues con advance obligas al ordenador a hacer operaciones trigonometricas, mientras que de la otra solo es una suma, y el resultado es el mismo.

gracias, supongo ke asi, kuando el juego sea mas complejo y todo, ralentizara menos la maquina no?

Gracias por todo. :arriba:
P.D: ya lo e conseguido, muchisimas gracias, me ha costado un rato hasta ke me e dado cuenta de ke me daba error porke lo ponia dentro del bucle de cerrar el programa :loco: :musico: , ahora me pondre con las durezas xDDDD, a ver ke tal me salen

Drumpi
24/09/2005, 21:37
¿No te estaras currando graficos hacia la izquierda y a la derecha teniendo la variable FLAGS que te lo puede espejar horizontalmente (o verticalmente, o hacer transparencias...)? porque teniendo el valor correcto no te tienes que preocupar por ello si tienes bien puesto el valor.

key(_left) devuelve "true" si esta pulsada la tecla, el usar "!" es la operacion logica NOT, que transforma TRYE en FALSE y viceversa. Tenlo presente para otras funciones similares.

chipan
24/09/2005, 21:56
Así a botepronto, sin mirar nada ni pararme a decirte que no usas la manera más adecuada de programar el movimiento con animación:

If(key(_right)) x+=8; graph++; If (graph=>10) graph=1; End Else graph=11; End
Suponiendo que el gráfico 11 séa en el que el personaje está parado.

jrt_1990
24/09/2005, 22:39
Drumpi, gracias, por la explicacion y el truco, porque si ke los habia cogido con el game maker, en su editor y los habia dado la vuelta, ahora voy a mirar en la ayuda del firebird lo de flags, ke al final me va a venir de pm

chipan, tienes toda la razon, ahora tengo ke kambiarlo todo, os pongo la muestra del codigo para que os riais un poco xD


If(graph=>011 AND !key(_left)) graph=012; End
If(key(_right)) x+= 8;graph++;If (graph=>10) graph=4; End Else graph=001; End
If(key(_left)) x-= 8;graph++;If (graph=<13) graph=13; End If (graph=>19) graph=14;End End
If(key(_up)) y-=2;graph=1; End
If(key(_down)) y+=2;graph=1; End

ahora tengo una duda, me e bajado unos ejemplos de durezas, pero no entiendo en ke se basan, creo es ke a si tocas un color de la paleta, tienes ke quitar el x+=8 por ejemplo no? alguien me podria detallar el funcionamiento por favor?
y si es lo del color, en los ejemplos pone un nº de 2 digitos, es el nº de color en la paleta o donde?
P.D: que conste que este es mi primer "coso" en fenix, y no tenia ni (dama de burdel) idea, gracias por vuesra ayuda

chipan
24/09/2005, 23:20
Lo del mapa de durezas es una cosa pelin avanzada para usar en tu primer juego, hay unos cuantos tutos por ahí perdidos, en divnet.divsite.net, o en fenixworld.se32.com puede que encuentres algo.

Drumpi
25/09/2005, 00:44
Ciertamente, lo de los mapas de durezas es algo complicado para empezar con ello. Basicamente consiste en tener otro mapa del nivel, pero este no se va a ver y, por lo general esta en blanco y negro, entonces se colorean las zonas importantes: de rojo las paredes, de azul el suelo...
Y luego en el programa, a medida que avanzas compruebas el color del mapa de durezas, si vas andando y encuentras el color rojo, es que has llegado a una pared y sabes que no puedes avanzar, lo mismo para el suelo cuando saltas.
Y lo de los digitos da igual: 034=34, tanto en Fenix, como en C++ y como en las mates del colegio (¿no sabias lo del cero a la izquierda?)

jrt_1990
25/09/2005, 04:13
gracias a chipan por las webs, y a drumpi por aclaramelo

ya se ke soy un pesado, pero eske e juntado lo del esle con lo de flags y si solo se lo pongo a la ir a la derecha me va bien, pero la izquierda se keda en un frame y se desliza solo y viceversa, como si una bloquease a la otra, el codigo es este:


If(key(_right)) flags=0; x+=8; graph++; If (graph=>10) graph= 002; End Else graph=001; End
If(key(_left)) flags=1; x-=8; graph++; If (graph=>10) graph= 002; End Else graph =001; End[

P.D: lo de el 0 si me lo han enseñado, pero eske soy rebelde xD
P.D.2: cuando acabe el juego, voy a intentar hacer un tutorial con todo lo ke me estais diciendo, ke poco mas y haceis el juego vosotros xD

jrt_1990
25/09/2005, 08:46
consegui lo de las durezas, pero me sigue ocurriendo el mismo error, os cuento detalladamente


If(key(_right) AND color==55) x+=8; flags=0; graph++; If(graph=>010) graph=002; End Else graph=001; End


If(key(_left) AND colori==55) x-=8; flags=1; graph++; If(graph=>010) graph=002; End Else flags=1; graph=001; End

lo que esta en gris es el error, lo de rojo lo de las durezas, y lo de naranja lo de flags, por si alguien kiere utilizarlo, lo que me da el error es lo de else, lo que yo creo ke ocurre es que si estas pulsando izquierda, no pulsas derecha, y si pulsas derecha no pulsas izquierda, por eso, mientas ejecutas el: If(key(_left) AND colori==55) x-=8; flags=1; graph++; If(graph=>010) graph=002; End , de uno, el Else graph=001; End del otro se ejecuta, por lo que los sprites se lian y chof :canon2: , a ver si la amoada me da la solucion, pero el problema esta aho creo yo, a alguien mas le ha pasado alguna vez?

Drumpi
25/09/2005, 09:04
Bueno, es que cometes un fallo que denomino "de novato" por querer ahorrar demasiado. Sigamos tu codigo:

Empiezas comprobando que se pulsa derecha, si lo hace aumenta el grafico, pones el flags y desplazas, correcto, sales de ese if y te metes en el siguiente. Supongamos que el grafico vale 5, por lo que sea, porque llevas andando un rato hacia la derecha: de pronto sueltas el boton y pulsas izquierda, ¿ok? Compruebas que pulse derecha, pero no es el caso, asi que lo que haces es asignarle el grafico 1, luego compruebas que pulsa izquierda, es correcto: cambias el flag, mueves y el grafico es el 2.
Parece que va bien ¿pero ahora que ocurre en el segundo pase? derecha no se pulsa, porlo que saltamos al else DONDE ASIGNAMOS EL GRAFICO 1, y en el siguiente if volvemos a incrementar el grafico, al salir VOLVEMOS A TENER EL 2.

Soluciones hay varias: la primera es anidar el segundo if en el primero, pero como puede que te lies haz esto: quita los elses y añade esta linea despues de ambas comprobaciones:

if (!key(_left) and !key(_right)) graph=1; end

Se que es repetir de nuevo una comprobacion que ya habias hecho, pero es la solucion mas sencilla.
Lo ideal es que compruebes una tecla, si no esta presionada (ELSE) comprueba la segunda (dentro del else), esta comprobacion tendria otro else donde hacer otra comprobacion o, en tu caso, poner el grafico 1.

Espero haberme explicado con claridad.

chipan
25/09/2005, 14:22
Efectivamente Drumpi; yo lo hago así, las comprobaciones y correcciones de variables las hago despues de usarlas pero antes del frame, asi me ahorro resultados no desados y salidas de rango.

jrt_1990
25/09/2005, 18:36
Lo ideal es que compruebes una tecla, si no esta presionada (ELSE) comprueba la segunda (dentro del else), esta comprobacion tendria otro else donde hacer otra comprobacion o, en tu caso, poner el grafico 1

es lo que no e entendido, pero me esperare e opnerme cuando ya lleve mas avanzado el juego y sepa algo mas, ahora ya me estoy poniendo con las durezas, y a hacer los escenarios.

gracias a todos, pero : volvere :cool: (lease a lo charcheneguer), cuando acabe el juego, espero ke os guste, os adelanto que voy a intentar que sea plataformas a lo principe de persia, o aladdin de la super nes (eso si, sin tiempo, odio aquello sjuegos en los ke tienes ke ir escopetado sin mirar atras porke no puedes)

chipan
25/09/2005, 22:17
Pues programando para la GP32 no te ves en el apuro de que se pulse left y right o up y down al mismo tiempo; que si haces el juego para PC tambien tienes que tener en cuenta ese problema.

jrt_1990
25/09/2005, 22:49
tienes razon, e estado trasteando un poco y e conseguido que la velocidad aumente con el tiempo ke lleves pulsado el boton, ke nofrene de golpe si no ke se ponga un grafico de frenar, vaya frenando y al frenar del todo se kede la imagen de kieto, y segun aceleras se acelera la velocidad de los sprites, ahora me keda poner la gravedad, si alguien kiere algo de codigo de lo mencionado antes ke me lo diga.

jrt_1990
26/09/2005, 03:22
llevo todo el dia mirando l de la gravedad, pero todos los procesos me parecen muy complicados, aqui pongo mi codigo:

Program Metalgp;

Global
grav;
personaje;
colora;
posicion;
color;
colori;
coloru;
vel;
vev;
estado;
limite;

Begin

set_title("MEtalgp");
Graph_mode = mode_8bits;
set_mode (320,240,8);
personaje = load_fpg("aladdin.fpg");
estado = 1;
vev = 0;
start_scroll(0, 0, 13, 0, 0, 0);
scroll[0].camera=id;

ctype=c_scroll;
x=140; y=200;
graph=001;



Loop
Frame;

color = map_get_pixel(personaje, 14, x+10, y);
colori = map_get_pixel(personaje, 14, x-10, y);
colora = map_get_pixel(personaje, 14, x, y+20);
coloru = map_get_pixel(personaje, 14, x, y-20);


//derecha
If(key(_right))
vel+=5;
If(vel>=16) vel = 12; End
set_fps(vel*2,0); flags=0; graph++; estado = 1;
If(graph=>010) graph=002; End
End

//izquierda
If(key(_left))
vel+=5;
If(vel>=11) vel=11; End
set_fps(vel*2,0); flags=1; graph++; estado = 0;
If(graph=>010) graph=002; End
End


//parada izquierda
If (!key(_left) AND vel>=1 AND estado==0)
flags=1; graph=011; vel-=2;
If(vel<=0) vel=0; graph=001;End
End

//parada derecha
If (!key(_right) AND vel>=1 AND estado==1)
flags=0; graph=011; vel-=2;
If(vel<=0) vel=0; graph=001; End
End

//bajar
If(key(_down)AND colora==55) y+=5;
End

//subir
If(key(_space) AND coloru==55); limite+=1;
If(estado==0) y-=5; x-=7; Else y-=5; x+=7; End End
If(limite>=1 AND colora==55)y+=5; End







If(estado==0 AND colori==55) x+=vel*-1;
End
If(estado==1 AND color==55) x+=vel;
End

If(key(_enter))


Break;
End;

Frame;
End;
End

y dejo el "juego, para ke veais como va, esta mu cutre, pero bueno, espero ke a alguien le sirva, esoty especialmente orgulloso de la frenada, aunque no es gran cosa.

jrt_1990
27/09/2005, 06:51
lo consegui, implemente la gravedad, que conste que me acaba de llevar 3 min, coger el codigo de un ejemplo y pasarlo al juego y ademas ponerle ke si no tocaba el suelo no podia saltar, si alguien se ha bajado el zip, ke tenga en cuenta que cambio los sprites, dejo una muestra, ke seguro ke os suena, pero esta "modificado" xDDD

P.D: estaba pensando en poner una eleccion de personaje, con distintos colores, decidme ke opinais, pero no me insulteis por favor :canon2:

Drumpi
01/10/2005, 08:59
Bueno, no lo he probado (basicamente por falta de tiempo), pero parece que avanzas bien, me alegro.
Hay algunas cosillas que me llaman la atencion, nada grave, por ejemplo me choca el uso que haces de set_fps, para regular la velocidad del personaje, no es algo muy ortodoxo, pero si te funciona genial.
Otra cosa es que usas siempre la velocidad positiva, no se, yo suelo usar la positiva para andar a la derecha y la negativa para la izquierda, asi da igual hacia donde vayas, solo debes sumar el valor a la posicion.
Un dia que este menos cansado si quieres te digo como lo haria yo, adelante, sigue trabajando asi.

PD: ¿a que da ilusion ver como tu personaje se mueve por pantalla?

jrt_1990
01/10/2005, 19:21
y tanta, no hace falta ke lo probeis ya ke solo es un ito k se mueve, ahora tiene implementada la graveda y e cambiado al personaje por spawn (capa roja) y estoy esperando a ke un amigo me haga un fondo, a ver como keda al fina :rolleyes: