Hola comunidad
Soy Carles miembro de Pix Juegos. Soy nuevo en el foro pero gracias a PiXeL sigo de cerca el desarrollo de la comunidad.
Para que veais que soy un tio majo os regalo mi codigo para explosiones, que podeis encontrar en la mayoria de nuestros juegos.
[code language="bennu"]Process explotalo(x,y,z,size,alpha,angle,file,grafico,frames);
Private
ancho;
alto;
a;
b;
c;
tiempo;
struct particula[10000];
pixel;
angulo;
distancia;
velocidad;
end
Begin
ancho=graphic_info(file,grafico,g_width);
alto=graphic_info(file,grafico,g_height);
from b=0 to alto-1;
from a=0 to ancho-1;
if(map_get_pixel(file,grafico,a,b)!=0)
particula[c].pixel=map_get_pixel(file,grafico,a,b);
particula[c].angulo=fget_angle(ancho/2,alto/2,a,b);
particula[c].distancia=fget_dist(ancho/2,alto/2,a,b);
particula[c].velocidad=particula[c].distancia/3+rand(-1,1);
if(particula[c].velocidad==0)
particula[c].velocidad=1;
end
c++;
end
end
end
a=c;
while(tiempo<frames)
graph=new_map(ancho*3,alto*3,16);
from c=0 to a;
map_put_pixel(0,graph,get_distx(particula[c].angulo,particula[c].distancia)+(ancho*3/2),get_disty(particula[c].angulo,particula[c].distancia)+(alto*3/2),particula[c].pixel);
particula[c].distancia+=particula[c].velocidad;
end
tiempo++;
frame;
unload_map(0,graph);
end
end[/code]
Bienvenido, por aquí gente muy maja también. ;D
Yo soy uno de los novatillos, y por lo menos hago bulto.
Saludos.
Programador Divero desde hace.. ¿7 años? Ya podías dignarte a saludar antes! :D
"Welcome to your doom!"
Bienvenido!
Ayer me estuve viciando a tu Garnatron :)
He Pixel me has plagiado la frase >:(
Quote from: FreeYourMind on April 20, 2010, 10:43:37 AM
He Pixel me has plagiado la frase >:(
Lo admito xD
Me hace gracia el juego de palabras, la filosofía implícita y el doble sentido que creo que no le has querido dar a esas palabras.
Welcome to your Doom: Bienvenido a tu pesadilla (se podría traducir así), pero a la vez... Doom es un juego, y aquí se desarrollan juegos. Bienvenido a tu juego.
¡¡Bienvenido a la pesadilla de hacer tu juego!! JAUSJAUSJAUSJAUS!!
Claro que tiene doble sentido hombre, que voy a parir con este saludo a los visitantes o que !? :)
http://www.youtube.com/watch?v=d_yx72yFpTo (http://www.youtube.com/watch?v=d_yx72yFpTo)
Por esa regla de tres yo soy más de:
Wellcome to your quake..
Altered Beast salio antes que el Doom, este todavia no existia, se nota que soy viejuno, juajua...
Pues bienvenido a la comunidad y...
¿El primer mensaje y ya poniendo código para corregir? >:(
:P No nos tomes muy en serio porque aquí, además de frikis, estamos chalados ;D
¿Código para corregir?
ESE "CÓDIGO PARA CORREGIR" ES UNA ESTUPENDÍSIMA FUNCIÓN PARA HACER UNA PEQUEÑA EXPLOSIÓN DE UN GRÁFICO! xD
Eso si, gasta cpu que da gusto xD
Si igual lo decia de coña ;D
Pero vamos tampoco se ha equivocado, la perfección no existe, todo se puede mejorar/corregir :D
Bienvenido...
Quote from: PiXeL on April 20, 2010, 01:44:49 PM
¿Código para corregir?
ESE "CÓDIGO PARA CORREGIR" ES UNA ESTUPENDÍSIMA FUNCIÓN PARA HACER UNA PEQUEÑA EXPLOSIÓN DE UN GRÁFICO! xD
Eso si, gasta cpu que da gusto xD
(Pixel no lo pilla ;D ;D ;D).
Quote from: FreeYourMind on April 20, 2010, 01:59:15 PM
Si igual lo decia de coña ;D
Pero vamos tampoco se ha equivocado, la perfección no existe, todo se puede mejorar/corregir :D
(Free si lo pilla :D)
El código y la idea está genial y el código está muy bien. Obviamente está sujeta a mejoras (uso de punteros, por ejemplo) pero para ser un "primer" código en Bennu está muy currado.
Espero seguir viendo muestras de tu arte por el foro, bienvenido a esta, nuestra comunidad :P
Gracias a todos por la bienvenida.
Tengo varios codigos por el estilo y me gusta la idea de que se puedan mejorar con punteros, ahora me falta aprender a usarlos.
Si alguien me ayuda, publico el codigo para ondular graficos. ;)
Tu ponlo, llevo años buscando ese ejemplo :)
Aqui publiques lo que publiques siempre habrá gente que te intentará ayudar, es lo bueno de esta comunidad.
Si, si, ponlo. ;D
Que los que estamos aprendiendo te lo agradecemos.
Muaaaa.
No! No lo pongas! ES UNA TRAMPA!
Y no publiques nunca nada sobre el proceso colisionador de Garnatron. Quedamos en que eso era secreto entre tú y yo. Aunque sea software libre xD
El código durará más tiempo frente a estos super-destructores que si te enfrentas a la Estrella de la Muerte... espera, esto no iba así.
Aquí todo código se agradece, aunque luego no lo use nadie ;D ;D ;D
PD: lo dicho, locos de atar :D
Vale, aqui esta el codigo para ondular.
radio es lo que se desvia el grafico.
omega es el numero de ondulaciones que sufre(poner valores mayores de 1000 ya que se trata de un angulo)
delta es la velocidad a la que se mueven las ondas(poner valores mayores de 1000)
Si quereis ver un efecto chulo fijaros en el jefe final del PiX Pang, es la unica vez que he usado este efecto.
Tranquilo PiXeL solo queda una copia del Garnatron que usaba ese sistema de colisiones y esta a buen recaudo.
[code language="bennu"]
process ondular(x,y,z,grafico,radio,omega,delta);
private
angulo;
altura;
desfase;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
desfase+=delta;
if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end
frame;
unload_map(0,graph);
end
end
[/code]
Yo tengo un efecto de deformación similar usando también map_block_copy y get_disx. :)
Quizas sería mejor quitar el graphic_info de los bucles de ese código y usar variables, pues grafico va a dar siempre el mismo resultado.
carles, te vas a llevar un karma, porque sobretodo Bomber prometio poner su código aqui y no lo hizo ;)
Yo solo te dije (única y exclusivamente a ti) que tenia intención de hacer un hilo de efectos especiales para poner y depurar codigos, si no esta todavía lo puedes crear tu, no hay problema..
Hombre, espero que no te hayas enfadado :P
Esperamos tu hilo, porque nos gusta aprender de los grandes ;D
Segundo efecto gráfico publicado en 4 mensajes, esto ya se merece un karma ;)
Y sabes que, lo he probado hace rato y le voy a dar otro karma, te crees que es uno de los efectos que llevo soñando poder hacer con Div-likes desde que salio DIV !? Tuvierón que pasar 11 años, hay que jorobarse... :D
Karma UP! :-*
Pongo una versión modificada:
Esta nueva versión hace la distorción inicial y se va normalizando hasta parar (se ve en muchos titulo, como el Toki de Mega Drive).
Esta un poco chapucerá sobre todo la parte final que hace que pare y quede en estado normal, pero funciona, y siempre la podeis mejorar :)
process ondular2(x,y,z,grafico,radio,omega,delta);
private
angulo;
altura;
desfase;
n;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
desfase+=delta;
if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end
delta = delta - 2 * n;
n++;
if (delta <= 0) delta = -20;
omega = omega - 20;
delta++;
if (omega < 0) omega = 0; delta = 0; end
end
frame;
unload_map(0,graph);
end
end
Yo lo llamo de esta forma:
ondular2(320,140,1,MapTitulo,40,1100,20000);
Quote from: FreeYourMind on April 21, 2010, 03:19:32 PM
Pongo una versión modificada:
Esta nueva versión hace la distorción inicial y se va normalizando hasta parar (se ve en muchos titulo, como el Toki de Mega Drive).
Esta un poco chapucerá sobre todo la parte final que hace que pare y quede en estado normal, pero funciona, y siempre la podeis mejorar :)
process ondular2(x,y,z,grafico,radio,omega,delta);
private
angulo;
altura;
desfase;
n;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
desfase+=delta;
if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end
delta = delta - 2 * n;
n++;
if (delta <= 0) delta = -20;
omega = omega - 20;
delta++;
if (omega < 0) omega = 0; delta = 0; end
end
frame;
unload_map(0,graph);
end
end
Yo lo llamo de esta forma:
ondular2(320,140,1,MapTitulo,40,1100,20000);
Hola!
no podia entrar con mi viejo nick y he tenido que dar de alta otro.
free! para hacer lo que dices solo tienes que poner
if(radio>0)
radio--;
end
despues del from aunque quiza se para un poco en seco lo mejora bastante con simplemente eso!
gracias por el codigo a los dos!
estos codigos pueden ser muy utiles, pero para que no se pierdan, ponganlos en posts separados o 1 uno que sea "algoritmo para hacer explosiones con particulas" o algo asi, en la seccion de recursos.
gracias a ambos, y ambos karmas por sus codigos.
ahh, por favor, agreguen un programa de test, listo para compilar y probar.
Me alegra verte por aqui de forma activa, Pablo 28.
Ya verás como te sentiras en casa y con gente muy maja dispuesta a ayudarte en todo ;)
Te acabas de ganar un karma, de una forma tan sencilla has hecho lo que pretendia en su día, y yo haciendo mogollon de ñapas para que la ondulación parase ;D
Pongo tu modificación.
Resumiendo, esta nueva versión hace que la ondulación pare pasado algun tiempo (efecto similar al titulo de Toki, de Mega Drive).
Lo hace de forma perfecta y sencilla.
process ondularhastaparar(x,y,z,grafico,radio,omega,delta);
private
angulo;
altura;
desfase;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
if(radio>0)
radio--;
end
desfase+=delta;
if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end
frame;
unload_map(0,graph);
end
end
Pongo un ejemplo compilado, acompañado de 2 efectos más, uno de ellos utiliza la dll water.
creo que se pueden conseguir cosas chulas con el efecto de ondulacion, añadiendo un contador al efecto anterior para que se detenga en el rango de tiempo que tu desees se detendria menos bruscamente.
saludos!
Si eso me lo pense, pero no he completado el ejemplo porque eso ya resulta fácil, seria sólo poner un parametro de entrada 'tiempo hasta parar' por ejemplo, y que esa variable ejecutará el
if(radio>0)
radio--;
end
cuando fuera 0, por ejemplo.
Lo importante era hacer que parase de forma normal, mi anterior ejemplo hacia ñapas para que parase de forma natural, y no lo conseguia (estaba muy proximo), pero con sólo tu condición esto ocurre de forma natural.
Has hecho un gran aporte, lo que demuestra que en programación es así la vida, a veces damos vueltas y vueltas para hacer algo que se hace en 2 segundos :)
"ñapas?" jaja
creo que tambien lo que pasa a veces es que cojes el problema con la mente mas fresca y te cuesta menos solucionarlo, que despues de haber estado un tiempo sobre el mismo problema.