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.

oskarg

#510
Gracias por las respuestas...
¿?no podria ser mas sencillo hacerlo en un futuro.....?¿?...me explico hacer  un map_put_pixel(file1,grafico,x,y,color); donde color=rgba(0,0,0,0);Lo encuentro demasiado enrevesado como está planteado.

PROGRAM example_map_put_pixel_borrado;
PRIVATE
    file1;
    coord_x;
    coord_y;
    colour;

BEGIN
set_mode(m320x200);
    file1=load_fpg("graficos/help");
    graph=1;
    x=160;
    y=100;
    size=180;
    file=file1;
    colour=rgb(0,0,0,0);//simplemente indicamos que queremos borrar...
    LOOP
        coord_x=rand(0, 320);
        coord_y=rand(0, 240);
       
        map_put_pixel(file1, 1, coord_x, coord_y, colour);//y asi se borraria,pero claro,no esta de este modo implementado y no funciona.

        FRAME;
    END
END




O crear una nueva serie de funciones donde fueran map_clear_pixel ....etc...

AmakaSt

Vale, ahora te he entendido, pensé que querías manipular un gráfico por pixel obteniendo su contenido en un array.

Tengo una mala noticia... ya existía eso desde hace muchas versiones atrás, son las funciones: clear_map(), clear_map_put() y clear_map_xput() y los cambios son acumulativos.

Ejemplo de clear_map_put(): https://www.divgo.net/c-2dff40ae
Ejemplo de clear_map_xput(): https://www.divgo.net/c-f11c03b6

Esta también en el listado de funciones.

Con las funciones graphic_builder() y graphic_explorer() puedes hacer infinidad de cosas, un editor grafico por ejemplo, pero es más jodido... está claro.

Un saludo.

oskarg

 ;D
Muchas gracias...mañana con tranquilad lo miro,he de madrugrar para ir a trabajar :P

oskarg

#513
Perfecto!! ya lo he solventado...otra cuestion...
Entiendo por que se corta el valor de la variable cuando lo imprimo al cambiar el tamaño,lo que no entiendo porqué no variando su centrado ...ya sea del 0 al 8 como expresa tu documentancion...no logre solventar el problema

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

program Ejemplo_Texto;
global
// declared global variables
    Valor = 108;

    puntos_id;

begin
set_title("My Program Name");
 
set_mode(320,240);
screen_color(rgb(255,0,0));
Puntos(240, 160);

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

frame;
end
end

process Puntos(x, y);

BEGIN
text_color=rgb(255,255,255);
text_style = 2;
text_size = 40;
loop
delete_text(puntos_id);
text_size=text_size+1;
if (text_size>60) text_size=40;end
puntos_id = write_int(0, 78,64,0,offset Valor);//da igual que valor tenga el centrado que siempre se corta el valor....

frame;
end
END




//me imagino que si pusiera centrado en el centro no deberia cortarse las letras o su contenido.
Deberia poder indicar centrado en el medio y que pudiera escalarlo sin que se truncara..

AmakaSt

Te respondo con una cita propia.
Quote from: AmakaSt on October 22, 2018, 08:34:11 PMHe 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. :)

Cambia write_int() por write() y verás que eso no pasa, sacaré una versión de correcciones en breve que corrige eso mismo y un bug importante con unload_fpg() desde hace bastante tiempo, que hace que no limpie ningún fpg cargado previamente.  :o

Un saludo.

oskarg

Gracias,me toca ser paciente para ver los Bugs corregidos: writeint , Fade,newmap ,unloafpg  y el ;
Sugerencia: el mapclear estaría bien que se pudiera determinar el grado de opacidad de borrado.
Ahh !!! Y espero esa nueva función que permita cambio de color de un gráfico determinado quiero hacer un efecto de explosión en toda la pantalla como hacían ciertos juegos de atary
Un saludo

AmakaSt

Exactamente, habrá correcciones de: write_int(), fade(), new_map(), unload_fpg().

Sobre lo de la nueva variable que comente, ya existe en la versión actual, se me fue de la cabeza  ::) , la local tone: https://www.divgo.net/c-d0f6267a

Aquí otro ejemplo: https://www.divgo.net/c-da067b6c

Un saludo.


oskarg

Hola Amaka,
Lo de la variable tone es todo un acierto y muy potente la idea,pero es muy limitado como esta planteado.......Me varia toda la tonalidad del fpg y no quiero tal cosa....solo quiero variar  en ciertos momentos,ciertos  map_put. cuando se cumple cierta condicion.Pongo un codigo recortado para que se comprenda mejor...

for(i=0;i<anchura_t;i++)
for(j=0;j<altura_t;j++)
                                  if (j==altura_t-1)//Si he dibujado el ultimo grafico que quiero.
                                    tone=tone+5;//Entonces cambiamos la tonalidad...pero lo que hace es cambiar toda la tonalidad de los graficos...y no quiero tal cosa...deberia poder dibujar cada         columna con una tonalidad diferente...
                                 end
                             map_put(File1,300,colore,i*16+16*6,220-j*8);//.
                             frame;//queremos que se vea como se dibuja .

end                       


AmakaSt

Hola oskarg,

No varía toda la tonalidad del fpg, solo la del graph que se está utilizando en el proceso, lo mismo que hace las variables alpha, size, angle..., aquí otro ejemplo con distintos procesos usando distinta tonalidad:
https://www.divgo.net/c-68deba7d

Por cierto, el valor de tone va de 1 a 100, si pones -50 equivale a 50 y si pones 150 lo mismo.

Un saludo.

oskarg

Hola amaka...gracias por el ejemplo pero te explico...
Este ejemplo que me has mostrado crea tantos procesos como tonalidades diferentes  quiera mostrar...
Lo que yo sugiero es crear un solo proceso donde defina un grafico dentro de este proceso  lo pego en el fondo con map_put,una vez realizado cambio su tonalidad ,lo vuelvo a pegar y asi sucesivamente.....No se si me he explicado bien...
Ahora me has dado una idea, lo pruebo y te digo,creo un proceso,lo pego en el fondo,lo elimino,creo otro proceso cambio su tonalidad,lo pego en el fondo y lo vuelvo a eliminar a ver...ya te digo algo si funciona la idea  XD


AmakaSt

Nueva versión 1.16.4 de Div GO ya disponible online, las novedades:



bugs y mejoras:
   - [FIX] renderizado de write_int() cortaba las letras en el primer frame
   - [FIX] unload_fpg() no eliminaba los fpgs cargados previamente
   - [CHANGE] cambios en el funcionamiento de fade(), new_map(), texture_in_map() y write_in_map()
   - [CHANGE] optimización de código y funcionamiento de map_get_pixel()




Un saludo.

oskarg

#521
Gracias por la actualizacion...te pongo ejemplo simplificado de lo que he pensando pero tampoco funciona,quiero pegar cada proceso con diferente color en el mismo grafico,pero siempre obtengo el mismo color

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

program MyProgramName;
global
// declared global variables
    points = 0;
    hi_score = 0;

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);

text_size = 50;
    text_color = cc_black;
write(0, 240, 10, 4, "[SPACE] para quitar tonalidad y [ENTER] para volver a ponerla");

    my_process(120, 100, 0);
my_process(200, 100, 10);
    my_process(280, 100, 20);
    my_process(360, 100, 30);
    my_process(120, 220, 50);
my_process(200, 220, 60);
    my_process(280, 220, 70);
my_process(360, 220, 80);
    fondo2();
   
loop
if (key(_esc)) exit("Text Exit", 1); end

frame;
end
end

process my_process(x, y, tonalidad);
private
//declared private variables
    energy = 100;
    life = 3;
   
begin
graph = 9;
size  = 80;
z   = 10;
    tone  = tonalidad;
    Fondo(graph);

loop
     break;
     frame;
end
end
Process Fondo(grafico)
private
ax;
ay;


BEGIN
ax=rand(0,320);
ay=rand(0,240);

map_put(0,32,grafico,ax,ay);

END


Process Fondo2 ()
BEGIN
graph=32;//AQUI DEBERIA MOSTRARME EL FONDO CON DIFERENTES TONES....pero no funciona como yo quiero....
x=320/2;
y=240/2;
loop
frame;
end

END




hokuto40

Hola Amakast,he propuesto un debate para ver si se puede solucionar el abandono de los lenguajes div y ver si se puede volver a unir toda la comunidad.

Te apetece participar,tambien para oscarg.Otra cosa,se agradece la nueva actualizacion de divgo. ;)

Te pongo el enlace a la propuesta.
http://forum.bennugd.org/index.php/topic,4735.0.html

oskarg

#523
Hola Amaka,
terminé el tutorial,me gustaria que me ayudaras en algo...
cuando quieras te paso por privado el ejemplo,los graficos no son definitivos,pues quiero que los rayos del sol tenga movimiento y hacerlo mas dinamico,cambiar las explosiones para hacerlas mas espectaculares,cambiar la jugabilidad ,aunque como ejemplo basico de sobra cumple...

Falta crear una tabla de records y efectos de puntuacion,pero por problemas de write lo descarte....hasta que no pueda bajar la nueva actualizacion de divgo....

Aun no lo publiques o te lo paso mas adelante ,porque quiero añadir  mejoras que has incorporado ,new_map,fade..etc o si quieres,lo publicas y vas mostrando las diferentes betas que vaya elaborando,como lo veas mas conveniente....pero como tutorial,pues lo encuentro practico y quiero ir aportando de menos a mas juegos mas elaborados,para que la gente nueva se anime y no se agobie o se asuste al principio.

Otra cuestion,veras que los edificios se construyen poco a poco y yo quiero que cada edificio tenga diferente color,te puse un ejemplo ,pero no funciona con tone,podria crear procesos y simplificar el concepto,pero pretendo mostrar una forma de programar a base de tablas..please dime como hacer tal cosa,sino me veo obligado a cargar graficos iguales innecesariamente de diferente color para luego pegarlos en un fondo.

Otra cuestion,no dejes de lado el proyecto ,aunque haya un revuelo ahora muy grande sobre que futuro tiene los derivados de div,yo encuentro este engine genial y me permite  aportar juegos antiguos con aire moderno ,mejorando la jugabilidad y la grafica sin tener que pelearme por aprender un lenguaje que desconozco,pues se  basicamente c o pascal y no me considero mal programador por no querer aprender otro lenguaje,simplemente es cuestion de comodidad  ;D

Solo ,bajo mi punto de vista  ,requiere que a poco a poco,sin prisa,pero sin pausa,siga este engine progresando y dandole apoyo,mimos,pues es un enfoque diferente al resto y lo encuentro el mas innovador aunque tenga ciertas flaquezas y puede vivir de sobras entre otros engines.

Debes intentar que la gente se anime ha realizar juegos,permitiendo colgar sus juegos facilmente  y cambiar por completo la pagina de divgo ,hacerla mas visual,tipo phaser,se que requiere mucho esfuerzo,pero bajo mi punto de vista merece la pena.

Otra cuestion diferente..creastes si no mal recuerdo una pagina de juegos emulados,una critica constructiva,La encuentro perfecta,pero personalmente me van lentos los juegos y son escasos y por ello si juego online a retros...lo hago en otra pagina.
Un saludo.

hokuto40

Hola.

Oskarg!,no hay ningun revuelo,lo que pasa es que yo queria crear un debate para dar algunas ideas para mejorar los lenguajes y cada cual a empezado a decir lo que le ha parecido y no he podido dar mis ideas,pero no hay ningun problema, y yo tampoco quiero que amakast deje de actualizar divgo.

Pasemos a otro tema mas interesante,me gustaria darte una idea amakast aunque ya lo he intentado con dos personas pero no les convence,a ver si a ti te parece util.

La forma en la que tiene el lenguaje div de crear los niveles me parece un poco liosa y esto desmotiva a cualquiera que empieza,por eso creo que se deberia de crear algun proceso especial o introducir una clase especial que se encargue de manejar los niveles.

Seria como un contenedor donde meter los objetos/procesos y cuando pases de nivel esta clase/proceso se encargaria de eliminar los objetos automaticamente para que el siguiente nivel estuviera limpio para cargar los recursos del siguiente nivel.

Tambien estaria bien un par de funciones para manejar esto,una funcion para hacer lo de pasar de nivel y otra para reiniciar el nivel,algo como lo que tiene gamemaker y unity.

Creo que esto motivaria a gente a que usara divgo y les resultara mas facil empezar,por que creo que lo de los niveles puede desmotivar a cualquiera que empiece sin saber mucho de programacion.

Dime si seria posible introducir esto o es algo muy complicado o no te parece necesario.