Div Games en Html5 y Canvas

Started by AmakaSt, September 07, 2012, 03:28:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

hokuto40

Hola amakast,son demasiados ejemplos,me llevaria una tarde entera para descargarmelos,no seria mejor incluir todos los ejemplos en el paquete de descarga.

oskarg

Hola amaka me he quedado astascado en una tonteria...en div antiguo cuando hacia a=7/3  daba a=2...ahora en divgo me da decimales,como hago divisiones enteras?¿?

AmakaSt

Quote from: hokuto40 on October 21, 2018, 09:41:44 AM
Hola amakast,son demasiados ejemplos,me llevaria una tarde entera para descargarmelos,no seria mejor incluir todos los ejemplos en el paquete de descarga.
Actualmente en la carpeta de ejemplos hay unos 40 ejemplos, incluyendo juegos y tutoriales. Incluirlos todos haría la descarga más pesada y difícil de mantener a la hora de actualizar los ejemplos si hay algún cambio. Y también me llevaría una tarde entera descargármelos.
Quote from: oskarg on October 21, 2018, 05:01:35 PM
Hola amaka me he quedado astascado en una tonteria...en div antiguo cuando hacia a=7/3  daba a=2...ahora en divgo me da decimales,como hago divisiones enteras?¿?
Existen las funciones round() y ceil() para redondear a entero los decimales, cada función redondea de forma distinta, por ejemplo ceil() redondea hacia arriba.

Un saludo.


oskarg

#498
Sí...ya me di cuenta . .... Tengo un bug rarísimo...me explico está noche con calma lo intento aislarlo y pasarte el trozo de código que no va bien ...eso espero pq he hecho un simple ejemplo y funciona bien.
Tengo una tabla global donde en un proceso en ciertas posiciones la relleno con valores , pues bien si hago write_int(0,10,10,offset tabla( 8 )) escribe bien el contenido ....pero si hago una variable a=8 y escribo write_(0,10,10,offset tabla (a)) da siempre 0 ...los paréntesis son claudatos escribo por móvil...es un error o bug muy raro y de momento no logro identificar que es lo que falla

oskarg

#499
Ya lo he encontrado a medias....!!! joe.en div2 si pongo el write_int dentro del loop se actualiza las variables,en divgo simplemente no se visualiza se ve un pegote.Entonces como lo hago amaka?¿?

/*
Program's Name: <My Program Name>
Author's Name: <My Name>
Company's Name: <My Company or Group>
*/

program MyProgramName;
global
// declared global variables
   tabla[10];
begin
set_title("My Program Name");
    set_icon("graficos/009.png");

// screen canvas options
set_mode(480, 320);
screen_color(cc_silver);

set_fps(60, 0);

// call a process
Muestra();

loop
if (key(_esc)) exit("Text Exit", 1); end

frame;
end
end

process Muestra();
private
valor;
    i;
BEGIN
    write_int(0,10,10,0,offset valor);
  //  write_int(0,10,40,0,offset tabla[valor]);//Siempre sale 0 COMO LO HAGO PARA QUE VEA Los valores de la tabla?¿?¿?¿?¿?¿?
    for(i=0;i<=9;i++)
          tabla[i]=i;
    end

    loop
      frame;
      valor=valor+1;
      if (valor>=9) valor=0;end
     // write_int(0,10,40,0,offset tabla[valor]);//asi en div2 imprime el valor de la tabla....pero en divgo no funciona..COMO LO HAGO ENTONCES!!!!!!!!!!!!!!!!!
   
    end
   
END   


AmakaSt

Quote from: oskarg on October 22, 2018, 10:58:05 AM
Ya lo he encontrado a medias....!!! joe.en div2 si pongo el write_int dentro del loop se actualiza las variables,en divgo simplemente no se visualiza se ve un pegote.Entonces como lo hago amaka?¿?

/*
   Program's Name:   <My Program Name>
   Author's Name:   <My Name>
   Company's Name:   <My Company or Group>
*/

program MyProgramName;
global
   // declared global variables
   tabla[10];
begin
   set_title("My Program Name");
    set_icon("graficos/009.png");

   // screen canvas options
   set_mode(480, 320);
   screen_color(cc_silver);

   set_fps(60, 0);

   // call a process
   Muestra();
   
   loop     
      if (key(_esc)) exit("Text Exit", 1); end

      frame;
   end
end

process Muestra();
private
   valor;
    i;
BEGIN
    write_int(0,10,10,0,offset valor);
  //  write_int(0,10,40,0,offset tabla[valor]);//Siempre sale 0 COMO LO HAGO PARA QUE VEA Los valores de la tabla?¿?¿?¿?¿?¿?
    for(i=0;i<=9;i++)
          tabla[i]=i;
    end
   
    loop
      frame;
      valor=valor+1;
      if (valor>=9) valor=0;end
     // write_int(0,10,40,0,offset tabla[valor]);//asi en div2 imprime el valor de la tabla....pero en divgo no funciona..COMO LO HAGO ENTONCES!!!!!!!!!!!!!!!!!
   
    end
   
END   


Div hace una cosa un tanto rara, en teoría al meter un write_int dentro de un bucle sin hacer un delete_text() generara objetos de texto hasta que el programa pete o llegue al límite de objetos (en caso de Div creo que son 256) pero he probado y veo que si la llamada está en una posición x, y fija, sin variación, parece ser que se va limpiando solo.  ???

En Div GO el pegote que ves son los números pintados uno encima del otro, hasta verse un pegote. Eso se puede controlar con la id de write_int() y delete_text(id).

Aquí el mismo código con una pequeña variación, funcionan igual en Div y en Div GO, en Div GO no hay límite de creación de write_int hasta ralentizas tu navegador hasta llegar a bloquearlo:

/*
   Program's Name:   <My Program Name>
   Author's Name:   <My Name>
   Company's Name:   <My Company or Group>
*/

program MyProgramName;
global
   // declared global variables
   tabla[10];
begin
   set_title("My Program Name");
    set_icon("graficos/009.png");

   // screen canvas options
   set_mode(480, 320);
   screen_color(cc_silver);

   set_fps(60, 0);

   // call a process
   Muestra();
   
   loop     
      if (key(_esc)) exit("Text Exit", 1); end

      frame;
   end
end

process Muestra();
private
   valor;
   i;
BEGIN
    text_size = 50;
    write_int(0,10,10,0,offset valor);
  //  write_int(0,10,40,0,offset tabla[valor]);//Siempre sale 0 COMO LO HAGO PARA QUE VEA Los valores de la tabla?¿?¿?¿?¿?¿?
    for(i=0;i<=9;i++)
          tabla[i]=i;
    end
   
   i = 10;
   
    loop
      frame;
      valor=valor+1;
      if (valor>=9) valor=0; i+=10;end
      write_int(0, i,40 + valor * 10,0,offset tabla[valor]);//asi en div2 imprime el valor de la tabla....pero en divgo no funciona..COMO LO HAGO ENTONCES!!!!!!!!!!!!!!!!!
   
    end
END   

He localizado con tu código también un fallo en Div GO con la creación de write_int() en el primer frame si vas haciendo delete_text() en el bucle, se muestra el texto cortado por la mitad, hasta el siguiente frame, eso para la próxima versión ya estará solucionado. :)

Un saludo.

AmakaSt

#501
Aquí te dejo como debería ser el código, forma más correcta y controlando el id del write:
/*
   Program's Name:   <My Program Name>
   Author's Name:   <My Name>
   Company's Name:   <My Company or Group>
*/

program MyProgramName;
global
   // declared global variables
   tabla[10];
begin
   set_title("My Program Name");
    set_icon("graficos/009.png");

   // screen canvas options
   set_mode(480, 320);
   screen_color(cc_silver);

   set_fps(60, 0);

   // call a process
   Muestra();
   
   loop     
      if (key(_esc)) exit("Text Exit", 1); end

      frame;
   end
end

process Muestra();
private
   valor;
   i;
   id_txt;
   
BEGIN
    text_size = 50;
    write_int(0,10,10,0,offset valor);
    write_int(0,10,30,0,offset tabla[valor]);//En Div esto tambien muestra 0
   
    for(i=0;i<10;i++)
          tabla[i]=i;
    end
     
    loop
      frame;
      delete_text(id_txt); //controla los ids de los textos para una mejor optimizacion
      valor++;
      if (valor > 9) valor=0;end
      id_txt = write_int(0, 20,30,0,offset tabla[valor]);//asi es la forma correcta
   
    end
END   

En enlace por si lo prefieres recuperar desde tu navegador directamente: https://www.divgo.net/c-68fce0b7

Un saludo.

oskarg

#502
Muchas gracias por el ejemplo....se agradece ,lo habia pensado eso de borrar ,pero no habia caido como hacerlo...deberias ponerlo como tutorial o documentancion base en divgo,pues es bastante ilustrativo.

1.Ya he solventado el problema que tenia ...me falta hacer un par de cosas y termino el tutorial,verás con // comentarios donde no funciona ciertas funciones y las omito ,pues se queda bloqueado divgo cuando lo pongo.....espero que las solventes...

2.Esto es algo para hacerlo más cómodo el editor de texto,aunque me gusta bastante.....cuando pulsara  f10 compilara directamente y también estaria bien que en un futuro se pudiera ocultar el contenido de los procesos y solo saliera su nombre Process ejemplo() Process Nave() etc...


oskarg

#503
Hola amaka...una duda...hay alguna manera de cambiar el color de un grafico determinado?¿?,como ahora trabaja en 32 bits,no se si puedo simular rotacion de paletas de algún modo.
He visto el ejemplo de un fpg que cambia por completo todos los graficos,pero busco poder cambiar el color determinado de un solo grafico.
Otra cuestion,todavia no entiendo que parametro determina que las letras salgan con suavizado....

oskarg

Me autorespondo sobre las letras suavizadas ,si utilizas divgo con xamp o bien online ,hace el suavizado ,con desktop las hace dentadas por qué?¿?¿?

AmakaSt

Quote from: oskarg on October 28, 2018, 02:33:36 PM
Hola amaka...una duda...hay alguna manera de cambiar el color de un grafico determinado?¿?,como ahora trabaja en 32 bits,no se si puedo simular rotacion de paletas de algún modo.
He visto el ejemplo de un fpg que cambia por completo todos los graficos,pero busco poder cambiar el color determinado de un solo grafico.
Otra cuestion,todavia no entiendo que parametro determina que las letras salgan con suavizado....
Hola oskarg,

Actualmente existe un par de funciones para cambiar el color de un graph:
Función color_in_map(): https://www.divgo.net/c-5be06b05
Función paint_in_map(): https://www.divgo.net/c-6508c303

Para la próxima versión habrá una variable local con la que podrás rotar la paleta del gráfico de un proceso.
Quote from: oskarg on October 28, 2018, 06:08:12 PM
Me autorespondo sobre las letras suavizadas ,si utilizas divgo con xamp o bien online ,hace el suavizado ,con desktop las hace dentadas por qué?¿?¿?

La versión desktop es una versión de Chrome que puede que no renderice bien el suavizado de las letras, aunque ahora lo estaba probando y a mi si me está funcionando bien.  ???

Un saludo.

oskarg

#506
Hola amaka...tengo un fondo de un color y quiero ir pegando trozos de un grafico que me haga borrado,transparencias...como lo hago siendo en 32 bits?¿? pues si el grafico es rgb(255,255,255) me pinta los rectangulos en blanco y yo quiero hacer huecos transparentes.....Juego tipico de lemmings...

AmakaSt

Quote from: oskarg on October 29, 2018, 04:36:51 PM
Hola amaka...tengo un fondo de un color y quiero ir pegando trozos de un grafico que me haga borrado,transparencias...como lo hago siendo en 32 bits?¿? pues si el grafico es rgb(255,255,255) me pinta los rectangulos en blanco y yo quiero hacer huecos transparentes.....Juego tipico de lemmings...
Hola oskarg,

Aquí te pongo un ejemplo de un editor gráfico usando las funciones graphic_explorer() y graphic_builder():
https://www.divgo.net/c-dabf3f1c

Cambiando el alpha de 255 a 0 borra la imagen.

Un saludo.

Futu-block

cierto, pero en vez de eso usa rgba(tal,tal,tal,0)
no te olvides de la A

AmakaSt

El mismo ejemplo pero con el alpha a 0 y el pixel que borra / dibuja más grande:
https://www.divgo.net/c-065c7c04