estuve leyendo un poco el manual que tienen en la comunidad y me encontre con esto
Citar
{
for (i=0; i<=9; i+=1) lista = i+1;
}
arriba explica como funciona, pero para ser sincera no entendi bien :'(
alguno me explica con palabras humanas parte por parte como funciona? pliss :-[
Un ejemplo sencillo te lo explicará todo, es la forma más fácil.
for (i = 0; i < 5; i += 1) {show_message(i);}
eso mostrará estos mensajes en este orden:
0
1
2
3
4
eso lo explica todo. En palabras ese for hace "comenzamos con i=0 y hacemos X cosa, luego sumamos 1 a i, volvemos a hacer X cosa, volvemos a sumar 1 a i... y seguimos haciendo mientras i sea menor a 5. En el momento en que sumamos 1 a i e i valga 5 ya no hacemos X cosa y el for termina". hacer X cosa es lo que hay dentro de los {}. Con este ejemplo parece tontería pero los fors son la cosa más útil del mundo. Yo mismo los estoy usando ahora para programar un juego de cartas: para llevar la cuenta de las cartas de la baraja y tal es MUY necesario.
pd- for (i = 10; i > 20; i -= 1) en este caso este for no tiene sentido, pues comenzamos con i = 10, y como no es cierto que sea mayor que 20 pues falla y termina (como otro ejemplo, vamos xD)
te explico mas o menos de manera simple:
for (i = 0; i < 5; i += 1)
repite algo tantas veces como comprobaciones halla dentro del bucle, primer inicia la variable i a 0 (i=0)para que empieze a repetirse tal cosa desde el numero 0, y hasta que dicha variable no llegue al valor cinco, sumara 1 a i, (i += 1) y ejecutara el codigo dentro del bucle:
ejemplo:
Balas=30;
for(i=0;i<Balas;i+=1) //mientras i sea menor que 30 (Balas)
{
draw_sprite(sprite0,-1,x+(i*15),y+100) //dibujara el sprite0 (Balas), 1 al lado de otra (30), con
//una separacion de i*15, donde i va a ser progresivo, dado que i+=1, implica que cada repeticion
//suma 1 a la variable y por lo tanto va separando la distancia en que se dibuja cada sprite
}
desde mi punto de vista es muy util esta funcion de hecho en mi juego http://www.comunidadgm.org/index.php?topic=17650.0 (The American Conqueror: The Unknow Coast), lo estoy usando mucho, ya sea para dibujar indicadores de municion disponible, menues del juego, menues desplegable y hasta para las cutscenes ultimamente, te recomiento esta funciones tiene infinitas utilidades.- Salu2.-
Balas=30;
for(i=0;i<Balas;i+=1) //mientras i sea menor que 30 (Balas)
{
draw_sprite(sprite0,-1,x+(i*15),y+100)
}
He marcado en rojo lo que quiero explicar, ya que muchos lo hacen pero no saben por que, y un copy paste no es bueno nunca.
Al colocar esto x+(i*15) estas diciendo que la posicion "X" del nuevo sprite a dibujar sea con una separacion de 15 pixeles y la separacion sea igual a la cantidad del valor de "i" osea en palabras mas simples dice esto.
"X+ (valor de "i" tomando en cuenta 15 pixeles") lo que seria la separacion
En calculo matematico seria asi cada vez que dibuje un nuevo sprite Balas:
X+ (i * 15) si si fuera de momento i=1 seria dibujado asi i=15 osea x=15; pero siendo "i" = 30 seria asi el calculo i= al resultado de (30*15) daria esto i=450 entonces "x=450;" aqui se dibujaria el nuevo sprite Balas-.
es lo que puse elvis que se dibujan los sprites con una separacion pero quizas no me supe explicar. gracias por aclararlo.-
ahora si lo comprendí, :D
muchas gracias
DarkKRuleR, the_blade y elviskelley !
de todas formas exiten 4 tipos de ciclos en el game maker
- for(inicion valor , condicion , aumento){ ... }
- do{ ... }until(condicion)
- while(condicion){ ... }
- repear(numero) {}
El "repear" seguramente te sera mas facil de usar al principio.
Cita de: romon_28 en Noviembre 26, 2012, 03:05:53 PM
...
Seguramente quisiste decir "repeat", ¿verdad? :)
¡Saludos!