Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: lou on November 21, 2009, 03:43:19 PM

Title: Problema con map_put_pixel
Post by: lou on November 21, 2009, 03:43:19 PM
Buenas!
Preciso de vuestra sabiduría, a ver si me podeis dar una explicación/solución.

Veamos, estoy trabajando en un editor de mapas basado en tiles, donde, de momento, cada tile guarda solo la informacion de color a pintar. Utilizo una matriz de 128x128 tiles. Según el tile en el que clico con el ratón, se modifica su valor de color (todo esto sale OK). Ahora lo que busco es que, si yo clico en mi matriz en la posicion (10,10), en un grafico de 128x128 creado por mí, se dibuje un pixel en la posición (10,10). No se si me habré explicado bien ;/

Mi código, bastante resumido (editado con algun comentario):

 minimapa = new_map(128,128,16); //inicializo el minimapa
//dentro del loop
 IF(mouse.left AND region_raton == _MAPA)
     FOR (x = 0; x < xtiles; x++) //pinta horizontalemnte el nº que marca xtiles
FOR (y = 0; y < xtiles; y++) //pinta verticalmente el nº que marca xtiles
tablero[pos_x + x ][pos_y + y].grafico = 1; //tablero[][] es la matriz que guarda la informacion de los tiles, se le asigna el grafico 1
map_put_pixel(0,minimapa,pos_x + x,pos_y + y,rgb(0,255,0)); //pinta en el minimapa en la misma posicion que pinta en la matriz del tablero
END
END
 END

A ver como explico ese bucleXD
Según el pincel que tengas seleccionado (xtiles) 1x1, 2x2 o 3x3, pinta los tiles que tocan a partir de la posicion del ratón (pos_x, pos_y). Si pongo ese código peta sin dar explicaciones.
No se si será por llamar a map_put_pixel varias veces en un loop, si sera por el modo de color de new_map (en esto voy mas perdido...) o porque.

Espero hayais entendido aunque sea la esencia de lo que pregunto jajaja.

Muchas gracias de antemano!
Saludos!
Title: Re: Problema con map_put_pixel
Post by: FreeYourMind on November 21, 2009, 04:00:37 PM
'xtiles' que valores toma ??
Tendrias que poner el código más detallado.
Title: Re: Problema con map_put_pixel
Post by: lou on November 21, 2009, 04:07:43 PM
xtiles puede tomar valores 1,2 o 3, y en funcion de que valor tenga, pintara más o menos tiles

Digamos que si la posicion del ratón es "o", segun el valor de xtiles pintaría:
xtiles = 1
o
xtiles = 2
o x
x x
xtiles = 3
o x x
x x x
x x x
Title: Re: Problema con map_put_pixel
Post by: FreeYourMind on November 21, 2009, 05:07:28 PM
Bueno, lugo si tengo más tiempo ya lo miro mejor si alguien no te ayuda antes.
Ese pete suele dar cuando intentas poner algo que no existe, has visto bien todo lo que le pasas al map_put_pixel en el FOR, por ejemplo ?
Title: Re: Problema con map_put_pixel
Post by: Drumpi on November 21, 2009, 05:42:30 PM
Eso es porque accedes a posiciones de tablero que no existen: comprueba los valores de x e y antes de entrar en el segundo bucle, porque me da que no los pones a 0 después de pintar y se van acumulando y te sales de los rangos que hayas definido.
Title: Re: Problema con map_put_pixel
Post by: lou on November 21, 2009, 05:50:57 PM
Quote from: Drumpi on November 21, 2009, 05:42:30 PM
Eso es porque accedes a posiciones de tablero que no existen: comprueba los valores de x e y antes de entrar en el segundo bucle, porque me da que no los pones a 0 después de pintar y se van acumulando y te sales de los rangos que hayas definido.

No, ese no es el problema ya que eso funciona OK, es decir, si comento la linea donde llamo a map_put_pixel, todo funciona perfecto. El problema surge cuando llamo a map_put_pixel :(
Title: Re: Problema con map_put_pixel
Post by: Windgate on November 21, 2009, 10:26:05 PM
Quotemap_put_pixel(0,minimapa,pos_x + x,pos_y + y,rgb(0,255,0));

Ya veo que los valores de x e y están controlados, ¿Están también controlados los valores de pos_x y pos_y?

Si te salieses del "minimapa" para pintar la cosa petaría, puede que sea eso.

Ante la duda write/write_var
Title: Re: Problema con map_put_pixel
Post by: laghengar on November 22, 2009, 02:02:43 AM
Puedes poner "say(map_put_pixel(0,minimapa,pos_x + x,pos_y + y,rgb(0,255,0)));?

Para ver lo que indica el debug con respecto a lo que devuelve map_put_pixel. Podría dar una pista.
Title: Re: Problema con map_put_pixel
Post by: Drumpi on November 22, 2009, 04:04:02 AM
También podría ser una mala interpretación del compilador al intentar leer esa estructura ¿has probado a poner entre paréntesis lo que hay antes del punto?
Title: Re: Problema con map_put_pixel
Post by: Windgate on November 22, 2009, 01:32:52 PM
Cierto Lou, ¿Todavía usas las DLL del Bennupack 1.7?

Sobreescríbelas cuanto antes por las de la r110 que solucionan algún problemita de compilador con estructuras chungas.
Title: Re: Problema con map_put_pixel
Post by: lou on November 22, 2009, 05:41:44 PM
Encontré el problema!!

No se de que modo afectaba, pero antes de llamar a map_put_pixel, tenia un drawing_alpha. Quitando el drawing alpha todo funciona correctamente.

Alguien tiene idea de porque pasa esto?
Title: Re: Problema con map_put_pixel
Post by: Windgate on November 22, 2009, 06:24:49 PM
Si estás en 32 bits cuidado, las funciones de map_put_pixel y similares no están terminadas de adaptar a 32 bits, pudiese ser eso...