Tonteridas raras:
[code language="bennu"]Global
teladearaña;
Begin
teladearaña=tela_de_araña();
elefante();
End
Process elefante();
Private
grav;
Begin
x=300;
y=200;
grav=-20;
graph=load_png("elefante.png");
loop
if(collision(teladearaña))
if(exists(teladearaña))
grav=-20;
elefante();
else
//OMFGLOL
end
end
y+=grav;
grav++;
frame;
end
End
Process tela_de_araña();
Begin
graph=load_png("tela_de_araña.png");
x=300;
y=400;
Loop
Frame;
End
End[/code]
En principio creo que el fallo es que la ñ no se puede utilizar en programación, o si se puede?? Juraría que no.
El programa es por la canción no? :D
No, no es eso...
Primero seria importante definir que llamas por fallo, porque a mi entender, el programa se comporta como lo programaste, asi que no hay fallos...
Pero bueno, dando por supuesto que querias hacer lo que pienso, los fallos son:
1) No incluiste ningun import.
2) No incluiste graficos.
3) Falta set_mode con tamaño mayor a 320x200 que es el default (ya la teladearaña se situa en la posicion 400 y no se ve en pantalla) y profundidad de color adecuado si usas graficos de mayor profundidad que 8.
4) ñ no es posible usarla en los archivos, no los carga.
5) deberias hacer que cuando colisione y cambia la gravedad tambien cambie la "y" para que no siga colisionando en ese frame, y por consiguiente creando nuevos elefantes
6) No se si tu intencion es que cada elefante al colisionar cree otro nuevo elefante o solo queres que se cree 1 por frame... no se, pero bueno, si es asi ese seria otro fallo...
Yo veo que cada vez que toca la tela de araña crea otro elefante como mínimo.
¿Qué es lo que quieres conseguir? y ¿Qué es lo que según tú hace mal?
Quote from: PiXeL on November 05, 2008, 02:16:56 PM
if(collision(teladearaña))
if(exists(teladearaña))
grav=-20;
elefante();
else
//OMFGLOL
end
Ese exists no sirve para nada, si colisiona esta claro que existe. :P
je, eso es cierto, pero no es un fallo...
graph=load_png("elefante.png"); Estas cargando gráficos, y nunca los descargas, cuando termines de crear un montón de elefantitos tendrás un montón de gráficos en memoria. y todo lo demás que observo ya te lo han dicho. Oye, es buena idea, en lugar de poner imágenes que digan ¿Cuál es el problema?, mejor un poco de código y a volar la imaginación. :)
Está clara la intención del programa:
"Un elefante se balanceaba sobre la tela de una araaaaaaaaaaaaña, como veían que no se caía, fueron a llamar a otro elefaaaaaaaaaaante.
Dos elefantes se balanceaban sobre la tela de una araaaaaaaaaaaaaña, como veían que no se caían, fueron a llamar a a otro elefaaaaaaaaaaaante.
Tres elefantes..."
No entiendo lo que dice splintergu de que no incluyó gráficos. No está haciendo load_png??? Lo que has puesto es solo el código, se supone que eso va con unos gráficos.
Y lo que dices de que al chocar con la tela de araña debería cambiar la y además de la gravedad, en realidad no hace falta, pues lo único que hace es ajustar la gravedad a -20 todos los frames hasta que deja de tocar, pero no hace que el elefente se "atasque". Aunque también es verdad que eso hace que salgan tropecientos elefantes de golpe...
Donde estan los graficos??? yo solo encontre en este post el codigo... los graficos no los subio a ningun lado...
No, no lo hace hasta que deje de tocar, es mas, en mis pruebas, colisiona mas de 1 vez en ese momento y despues de actualizar la "grav"... al momento de colisionar la primera vez, la "y" vale 266 y "grav" vale 24... y el ejemplo setea "grav" a -20 y luego usa ese valor para sumarlo a "y", con lo que quedan 4 pixels de diferencia los cuales pueden hacer que colisione nuevamente el grafico, y de hecho en algunos casos lo hace... pero todo esto depende del tamaño de los graficos utilizados, por eso digo, que la primer falla es no incluir los graficos, porque de ellos dependen los resultados...
Y dando mas datos, el ejemplo, asi como esta, si lo ejecutamos 300 frames da 106 elefantes... ahora si al momento de colisionar, hacemos esto:
...
if(exists(teladearaña))
y -= grav;
grav=-20;
elefante();
frame;
continue;
else
...
entonces en los mismos 300 frames obtenemos solo 64 elefantes... o sea, crea realmente 1 solo elefante por momento de colision... y no varias veces hasta salir de la zona de colision... y con el "y -= grav;" lo que haces es descontar de "y" el "grav" que hizo que colisione con la telaaraña... y de paso calcular una nueva gravedad.
pero posiblemente este no sea el error que queria resaltar pixel y solo queria señalar el fallo de la "ñ" como caracter invalido para nombres de archivos... los demas son mas que nada a modo chiste, pero no dejan de ser fallos...
Pixel contesta ya que nos tienes intrigados ;D
Ya lo encontré.
falta un bucle para escapar en el proceso principal :D.
while (!key(_esc))
Frame;
End
let_me_alone();
Hosti, perdón xD
Se me OLVIDÓ totalmente :!
Era una curiosidad, simplemente la canción del elefante y la telaraña pero programada xD
[code language="bennu"]
Global
teladearaña;
Begin
teladearaña=tela_de_araña();
elefante(); //UN ELEFANTE
End
Process elefante();
Private
grav;
Begin
x=300;
y=200;
grav=-20;
graph=load_png("elefante.png");
loop
if(collision(teladearaña)) //SE BALANCEABA SOBRE LA TELA DE UNA ARAÑA
if(exists(teladearaña)) //Y COMO VEÍA QUE NO SE ROMPÍA
grav=-20;
elefante(); //FUERON A LLAMAR A OTRO ELEFANTE
else
//OMFGLOL
end
end
y+=grav;
grav++;
frame;
end
End
Process tela_de_araña();
Begin
graph=load_png("tela_de_araña.png");
x=300;
y=400;
Loop
Frame;
End
End
[/code]
puf! :P
Pixel necesitas vacaciones :D