Bueno ya lo habia consultado con otro usuario pero vi un video que me confundio, me refiero a la utilizacion de "=" y "==" creo, que "=" es para darle un valor a una variable, mientras que "==" es para comprobar si la variable es cierta o no.
la segunda consulta es sobre la funcion draw_text(16,16*i,i)
esta inserta en un ciclo for y esta asi "For (i=0;i<=10;i+=1){draw_text(16,16*i,i)}
esta funcion dibuja una lista vertical de numeros, pero mi pregunta en concreto es, ¿por que en la coordenada de y, en vez de que todos los numeros se dibujen amontonados uno sobre otro, se dibujan la cantidad de veces de i? digo, el valor de i no deberia multiplicar el valor de "y" y resultar en otro valor? por ejemplo, cuando i llega a 2, la coordenada de y no deberia ser 32? pero en cambio se corre la cantidad de pixeles de los valores de x e y, no lo entiendo :( y me confunde mucho. es tonta la pregunta?
Tengo entendido que solo se puede hacer una pregunta a la vez.
Pero te contesto de todas formas.
Los programas que se usan para hacer software complejos (ej.: C#, Dev,etc) utilizan el "==" para devolver un valor booleano (true,false), que es lo que necesita el "if". Por suerte game maker no tiene muchos tipos de variables; solo cuanta con 2 real (double) y string (texto). Ya que carece de valores booleanos game maker usa el "=" en un "if" como un "=".
es decir:
if speed=2 { /*Accion*/ }
es igual a:
if speed==2 { /*Accion*/ }
En cuanto al "for":
for(i=0;i<=10;i+=1) { draw_text(16,16*i,i) }
veamos:
"i" inicia en "0", el ciclo se ejecutara hasta que i<=10 e i aumentara en 1 por cada vuelta del ciclo.
es decir que i va a tomar los siguientes valores (un valor por cada vuelta):
0
1
2
3
4
5
6
7
8
9
10
ahora cuando multiplicamos a "i" por 16 nos damos que los resoltados son:
0*16 = 0
1*16 = 16
2*16 = 32
3*16 = 48
4*16 = 64
5*16 = 80
6*16 = 96
7*16 = 112
8*16 = 128
9*16 = 144
10*16 = 160
osea que el resultado de es multiplicacion va a ser la posicion en "y" de donde se va a dibujar.