Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: BlySntK on March 29, 2017, 10:40:12 PM

Title: Una ayudita para un niño pobre xD
Post by: BlySntK on March 29, 2017, 10:40:12 PM
Buenas bennuseros de mis condolentes amores!!

Necesitaria que me echaraís un cablecillo con el algoritmo para gestar los tiles en pantalla. Por ejemplo, de una balsosa de 30x30 en una resolución de... qué sé yo, 800x 600, mismo.

Por lo que he refrescado, después de tanto tiempo sin tocar el lenguaje, es que con map_put se puede hacer algo así, pero el resultado no es lo que quiero (o no recuerdo cómo se hacía para que una sola baldosa, copiada, abarcara todo el ancho y el alto de la pantalla...). Trato de hacerlo con la función anterior pero no me lo hace bien. Y eso que lo hago como antiguamente, siguiendo el tutorial de Oscar, a ver si me ayudáis a recordar!

Creo recordar que también estaba map_block_copy pero... no sé seguro si pudiera servirme...
Title: Re:Una ayudita para un niño pobre xD
Post by: Drumpi on March 30, 2017, 12:20:56 AM
A ver ¿qué es lo que quieres hacer exactamente? ¿Poner los tiles sobre el fondo? ¿sobre otro mapa? ¿o hacer un scroll de tiles?

Lo normal es tener dos bucles anidados del tipo:
for (conty = 0; conty < n_tiles_alto; conty++)
    for (contx = 0; contx < n_tiles_ancho; contx++)


Y luego usar, por ejemplo, put para ponerlos en esa posición de pantalla, tipo put(file, graph, contx * 30, conty * 30). Obviamente tienes que tener en cuenta la posición del centro del tile, y que esta función pinta sobre el fondo de pantalla: si quieres pintar sobre otro mapa deber usar map_put, pero tienes la limitación de que tanto el mapa de origen (tu tile) como el de destino (el mapa sobre el que pintas) deben ser del mismo FILE, or eso es muy común usar map_clone con el tile, para crear un mapa igual al tile con el file = 0, igual qe el amap de destino (normalmente creado con map_new).
Pero si no te quieres comer tanto el coco, tienes MAP_XPUTNP, donde ya seleccionas cualquier mapa de origen, de destino, tamaño, rotación, sabor del helado, color de calzoncillos...

Y no, no voy a decir lo que todos estais pensando que voy a decir :D
Title: Re:Una ayudita para un niño pobre xD
Post by: BlySntK on March 30, 2017, 12:37:01 AM
Ese Drumpi! Bueno, sí, realmente sería usar put para poner los tiles en un fondo de pantalla, no quiero ponerlo sobre otro map ni nada de eso. Lo "clásico" por así decirlo, vaya. Tener un fondo rellenado por tiles de tamaño 30 o 20 o 10.... Esa opción es la que vería más aceptable. Mañana, con las ideas frescas, trataré de hacerlo así y supongo que será lo que ando buscando. Por cierto, ¿es necesario que haga una matriz unidimensional con el número de cada tile que quiera poner? Algo como bytes tiles [] = 3,4,4,5,4,4,3,3,3,3,4; en que cada número apunta a un gráfico dentro de un fpg o no haría falta. Es decir, put se encargaría de ello si le indico que coja el propio grafico indicado en file y puesto en graph (tal es el segundo parámetro de put) o haría falta?

Mi sentido arácnido me dice que no, pero mis ganas de romperme la cabeza me tienta a hacerlo xD En caso de que sea necesario... ¿En qué punto de la función put debería poner que se vincule con la matriz? Otra duda a la que me llevaría este aspecto sería la siguiente: ¿Cuantos tiles cabrían en una resolucion de 800 x 600 dentro de esa matriz de tiles, teniendo en cuenta el ancho y alto de los mismos respecto a la pantalla?
Title: Re:Una ayudita para un niño pobre xD
Post by: BlySntK on March 30, 2017, 10:08:12 AM
Weno... después de algunas breves pruebas. Es justo lo que necesitaba: con put, perfectamente me ha valido. También he probado el manejo de las tiles con una matriz y creo saber cómo funciona pero... no me convence hacerlo así. Ademas de que para hacer según que controles con las colisiones es inviable debido a que se incrusta en el background y no sirve. Pero vaya, que para lo que necesitaba, es lo que quería :)

Thanks Drumpi, te daré karma -_^ (giño, giño)
Title: Re:Una ayudita para un niño pobre xD
Post by: Drumpi on March 30, 2017, 11:09:36 PM
Bueno, no es necesario que metas los datos en una matriz... pero es lo recomendable. Y si usas una matriz bidimensional ya ni te cuento :D ¡Y si usas ficheros ya sería la releche! :D :D :D
Obviamente la matriz te sirve para saber qué gráfico del FPG se pinta en cada posición, pero si me apuras, te puede servir también como "mapa de durezas" reducido 30 veces (según tú, los tiles son de 30x30, por lo que cada tile representan esos pixels en pantalla). Si no, las durezas las puedes tener en un mapa aparte que no se vea (new_map) y así sigues pintando sobre el fondo, ahorrándote un mapa más en memoria y un proceso.
Pero eso depende de cómo te lo quieras plantear.

¿Cuantos tiles de 30x30 caben en una pantalla de 800x600? ¿En serio? Eso es aritmética de primaria :D
800 / 30 = 26'666 a lo ancho --> Como hay que usar valores enteros y no queremos dejar nada de color negro, 27, pero 1/3 de tile no se va a ver... a menos que lo centres todo.
600 / 30 = Adivina :D

Mañana, lecciones de trigonometría para hacer el movimiento de las cabezas de Medusa de Castlevania :D :D :D
Title: Re:Una ayudita para un niño pobre xD
Post by: BlySntK on April 12, 2017, 12:36:12 AM
Ofú.... las mates y yo.... xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Siempre dejandome en mal lugar  :'( Tened piedad de mí, anda...

De todos modos, aunque sé cómo van, para según que cosas sí los voy a usar pero no para todo.
Title: Re:Una ayudita para un niño pobre xD
Post by: Drumpi on April 12, 2017, 06:07:53 PM
Sabes que los lenguajes de programación se apoyan, básicamente, en las matemáticas ¿no? :D :D :D
vas a aprender de números lo que no has aprendido en el colegio y parte del instituto :D