Autor Tema: Div Games en Html5 y Canvas  (Leído 204971 veces)

panreyes

  • Administrator
  • *****
  • Mensajes: 2259
  • Karma: 82
    • panreyes.com
Re:Div Games en Html5 y Canvas
« Respuesta #855 en: Noviembre 15, 2020, 11:52:04 am »
Y aquí no sé por qué al pulsar la R para reiniciar el juego no funciona:
https://www.divgo.net/c-72def422

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 525
  • Karma: 17
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #856 en: Noviembre 15, 2020, 10:30:32 pm »
Hola panreyes,

Me los apunto para revisión, el de from he localizado el problema y es bastante fácil de solucionar. En cambio el de return es un poco más complicado.

Gracias por los reportes. :)
Buenos dias,
1.Me gustaria que algun dia  se estudiara poder implementara funciones como trae lua en el manejo de tablas.Poder insertar elementos y borrarlos en este lenguaje es muy sencillo y potente.Aunque ni idea si seria factible en divgo.

Como tengo vacas aprovecho para utilizar divgo y si me quedo bloqueado expongo....

2.Estaria bien que se pudiera añadir los puntos de control desde divgo en el editor de graficos.....creo que no se puede......O bien indicar un enlace del fpg editor ,o incluirlo como  herramienta externa .Lo digo para gente nueva que se inicia con este programa....

3.Me gustaria que las primitivas graficas pudiera no aplicar suavizado y dibujarlas desde su centro ,aunque se puede programar,es mas practico que lo traiga por defecto.

4.Que el tamaño de la caja de colision no este realmente determinado por el tamaño del grafico en si,sino que lo lo pueda establecer,por ejemplo diga ancho=20 pixeles ,alto=2 pixeles y sea dinamico,es decir que lo pueda modificar a mi antojo en cualquier momento.

5.Es una reiteracion esto,pero bueno,a veces cometo el error de añadir un grafico erroneo en el fpg con un numero equivocado,pues bien,ya no hay manera de borrarlo y me saca de mis casillas esto, ;D No entiendo por que no se puede insertar encima otro grafico externo .Como hago simples pruebas no es molesto,pero si inicio un proyecto grande   y sucede ;D es engorroso crear otra carpeta nueva,con otro nombre del fpg... e insertar otra vez las imagenes.

6.Siempre he pensado que seria muy util poder definir un grafico ciclico independientemente del scroll,por ejemplo Tengo un juego con  scroll de 320x240,ahora tengo un grafico de 120x8 ,el cual representa la lava,si lo pudiera hacer ciclico por ejemplo en el eje x directamente ya simularia  una animacion y bien sencilla y potente.Podria tener tropecientos graficos moviendose con sus tamaños diferentes,solo con cargarlos en el fpg su imagen inicial y si lo quisiera hacer mas versatil le iria pegando trozos de otro grafico.............vale.... lo puedo programar,pero no es lo mismo si ya por defecto lo trae,lo encuentro muy practico.

Un saludo.
Hola oskarg,

1. No conozco las funciones de lua, si pudieras decirme cuales son y que hacen me lo puedo mirar para incluirlo.
2. No se puede actualmente, las imágenes que se generan en el editor son en formato png y este carece de los puntos de control de Div, en un futuro me gustaría implementarlo como información en el fpg.dat, para que eso fuera posible.
3. Pensé que ya tenía algo implementado para quitarle el suavizado a las primitivas, como en los procesos y la pantalla, me lo apunto para mirármelo. :)
4. Lo tengo apuntado para incluirlo en futuras versiones.
5. En la versión 1.34.0 hice unas correcciones sobre esto, donde pude localizar un problema que me estaba dando al mover un grafico de sitio y mantenía el espacio ocupado. ¿Te sigue fallando en la versión actual?
6. Ya existe una función para hacer esto o muy similar, donde puedes incluso ajustar el tamaño del grafico en el mapa: texture_in_map().

Un saludo. :)

oskarg

  • Full Member
  • ***
  • Mensajes: 234
  • Karma: 3
Re:Div Games en Html5 y Canvas
« Respuesta #857 en: Noviembre 16, 2020, 08:47:38 am »
Buenos dias,
Explico por encima la mecanica de las tablas en Lua y si ves algo interesante lo meditas... ....:
1.Para declarar una tabla en lua
tabla = {}         --declar una tabla vacia ...no es necesario indicar el tamaño,pues se puede trabajar con tablas dinamicas...
tabla2 = {}       --creo  otra tabla o array
tabla[1] = "uno" ----- le asigno la cadena uno
tabla[2] = "la casa de tio tom" ----- le asigno la  cadena la cas de tio tom
tabla = {"a","b","c"}   inicio la tabla[1]=a ..tabla[2]=b tabla[3]=c

2.Para borrar todos los elementos de una tabla  y de nuevo quede vacia
tabla = nil       --------------ausencia de valor

3.El indice de las tablas puede ser cualquier cosa,por ejemplo incluso una palabra ,no es necesario que sea un valor numerico.
tabla = {}
tabla[1] = "a" --se asigna el valor a al indice 1
tabla["posicion_x"] = 3 -- se asigna el valor 3 a la llave "posicion_x"
tabla.pos = "vaca" --asigna el valor "vaca" a la llave pos

4.Mas ejemplos de inicio de tablas
tabla = { [1] = "a", [2] = "b", [3]= "c" }
tabla2 = { ["pos1"] = "a", ["pos2"] = "b", ["pos3"]= "c" }
5. Devolver la longitud de la tabla

tabla = {"a", "b", "c"}
print(#tabla)   ----con esta muletilla # sabemos la longitud de la tabla...
6.INSERTAR ELEMENTOS DE LA TABLA
table.insert (tabla, [pos], valor) o bien
table.insert (tabla, , valor)
donde [pos] indicamos en que posicion colocamos en nuevo valor a insertar,por defecto pos es la parte final de la matriz.
ejemplo 1.
tabla.insert(tabla,120) ---inserta en la tabla el valor 120 en la ultima posicion.
otro ejemplo definimos una tabla
tabla = {}
tabla = {"a", "c"}
table.insert(tabla, 2, "b") ---inserto en la posicion 2 de la tabla el valor b...
print(tabla[1], tabla[2], tabla[3]) ----con lo cual esto queda a,b,c

otro ejemplo empleando for.............. definimos una tabla
insertamos en cada frame los valores de x e y en la tabla ---aqui actua como si fuera una estructura de una tabla que tiene en sus campos variable_x y variable_y
  table.insert(tabla, {variable_x=x, variable_y=y    }); 

Ahora los leemos...Aqui simplemente le decimos ..ey leeme todos los valores de la tabla ....es un for especial,se puede hacer de forma tradicional,pero es mas sencillo asi,una vez que sabes la mecanica
 for k, v in ipairs(tabla) do
  dibuja_elipse(v.x,v.y)---Aqui vemos como se accede a los elementos de la tabla..v e k son variables que no definimos en ningun sitio donde K dice haz un recorrido de todos los elementos de la
    tabla y  para acceder a los valores de variable_x 
  debemos de hacer v.x .. y para acceder a la variable_y v.y...con lo cual v.x==variable_x v.y=variable_y del primer primer frame k==1.. segundo frame k==2  v.x==x  v.y==y del segundo frame.
 end
 si queremos saber la longitud de la tabla empleamos el  #  por ejemplo empleando un for normal...
for i = 1, #tabla do  ----------hace un recorrido de la tabla desde el elemento 1 hasta el ultimo elemento de la tabla,donde #representa su tamaño.
   --
   --
   --
end

-----------------------------------------------------------------
mas ejemplos de table.insert
table.insert
Sirve para agregar un valor a una tabla creada

tabla = {}     
table.insert(t, 123)
tabla[2] = 321
print(t[1]) ----123  el tamaño ahora es 1.
print(t[2]) ----321 el tamaño ahora es de 2
tabla{}= nil   .....limpiamos la tabla ,la borramos...

También es posible seleccionar el indice al cual agregar el valor

tabla = {"a", "c"}
table.insert(tabla, 2, "b")

-----------------------------------------------------------------
 
ELIMINACION DE UN ELEMENTO DE LA TABLA
table.remove
Elimina un elemeto con el indice a eliminar

tabla = {"a", "b", "c"}
table.remove(tabla, 2)  --renuevo el elemento b de la tabla...en lua el primer elemento empieza por tabla[1]...
print(t[1], t[2)]            --imprimimos resultado a,c
print(#tabla)             ---- y su tamaño # si lo consultamos sera 2..
Tambien en lua se puede concatenar elementos y ordenar la tabla en orden ascendente ,pero como nunca lo he empleado  lo omito.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Sobre el editor...me explico..
Si creo un grafico en una posicion y luego quiero eliminarla no puedo ,vale..entonces lo que hago es cambiar su tamaño x e y a 1 pixel para evitar que ocupe espacio,lo que quiero es que esta imagen que he creado de un solo pixel lo pueda sustituir por una que tengo  en el disco duro,arrastrandola,pues me interesa que se encuentre en tal posicion,pero el editor me lo impide con el simbolo de prohibido.Consecuencia,tengo que crear un nuevo fpg,con un nuevo nombre y una nueva carpeta..no es lo ideal.
Entonces me digo..pues cambio manualmente el  fpg creado en el disco ,lo intento  modificar abriendolo como si fuera un  txt y luego lo guardo en su extension correspondiente,pero no afecta ,no puedo tampoco eliminar tal grafico manualmente ,con lo cual ,ni flowers .
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 525
  • Karma: 17
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #858 en: Noviembre 17, 2020, 02:10:03 pm »
Hola oskarg,

Muchas de las cosas que pones se pueden hacer también con Div GO sin mucha complicación, aquí te pongo un ejemplo de manejo de tablas: https://www.divgo.net/c-ae035f92

Un saludo. :)


oskarg

  • Full Member
  • ***
  • Mensajes: 234
  • Karma: 3
Re:Div Games en Html5 y Canvas
« Respuesta #859 en: Noviembre 17, 2020, 07:35:01 pm »
Hola AmakaSt,
Me ha gustado bastante el ejemplo,he aprendido cosas que desconocia de divgo.
Ejemplos  como estos deberias incluirlo en divgo,sencillos pero muy practicos.
Un saludo.

oskarg

  • Full Member
  • ***
  • Mensajes: 234
  • Karma: 3
Re:Div Games en Html5 y Canvas
« Respuesta #860 en: Noviembre 17, 2020, 09:33:52 pm »
Hola AmakaSt,
He probado texture_in_map,esta muy bien,pero como está implementado no se puede indicar en que lugar quiero que ese trozo de mapa lo tengo que colocar.
deberia ser de este modo :
texture_in_map(file, graph, width, height,  avance_x, avance_y,size_x,size,y,posicion_x,posicion_y);
Un saludo.

panreyes

  • Administrator
  • *****
  • Mensajes: 2259
  • Karma: 82
    • panreyes.com
Re:Div Games en Html5 y Canvas
« Respuesta #861 en: Noviembre 18, 2020, 08:17:15 am »
Hola panreyes,

Me los apunto para revisión, el de from he localizado el problema y es bastante fácil de solucionar. En cambio el de return es un poco más complicado.

Gracias por los reportes. :)

Comunico por aquí que Amakast me dio solución por Discord. El problema del return era que faltaba un frame para evitar que se reiniciase infinitamente el juego 😅

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 525
  • Karma: 17
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #862 en: Noviembre 18, 2020, 01:27:30 pm »
Hola AmakaSt,
He probado texture_in_map,esta muy bien,pero como está implementado no se puede indicar en que lugar quiero que ese trozo de mapa lo tengo que colocar.
deberia ser de este modo :
texture_in_map(file, graph, width, height,  avance_x, avance_y,size_x,size,y,posicion_x,posicion_y);
Un saludo.
Hola oskarg,

La función texture_in_map() se aplica al graph del proceso, como write_in_map(), por lo que se puede posicionar con x, y, z, rotar, animar, aplicar filtros, cambiar alpha, etc... Aquí te dejo otro ejemplo con texture_in_map(): https://www.divgo.net/c-c036842a

Un saludo.

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 525
  • Karma: 17
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #863 en: Diciembre 01, 2020, 10:57:58 pm »
Buenas noches,

Ya está disponible online la versión 1.36.0 de Div GO y las novedades:

funciones:
   - clear();

bugs y mejoras:
   - [ADD] nuevos parámetros opcionales en las funciones collision_box() y collision_circle()
   - [ADD] optimización en sistema de colisiones y nuevo modo debug para collision_box() y collision_circle()
   - [FIX] corregido un leve problema en la función collision()
   - [FIX] funciones draw_stamp() y xdraw_stamp() no estampaba en el background todas las draw() y xdraw() mostradas en el frame
   - [FIX] función texture_in_map() no desplazaba bien la textura dentro del mapa ni se posicionaba en el centro del graph
   - [FIX] solucionado problema con la carga de recursos cuando se hace la llamada dentro de un bloque global o private
   - [CHANGE] posición de pintando de primitivas a +0.5 en el canvas, que quita la línea de suavizado
   - [CHANGE] también en la posición para quitar línea de suavizado en la barra de progreso del bloque loading



Ejemplo de collision_box() con nuevos parámetros opcinales: https://www.divgo.net/c-ae0d0623
Ejemplo de collision_circle() con nuevos parámetros opcionales: https://www.divgo.net/c-1cc72ce1

Un saludo.
« última modificación: Hoy a las 12:12:03 am por AmakaSt »