Hola! me explico, tengo varios sprites y necesito seleccionar y dibujar uno de ellos al azar, yo lo estoy realizando de la siguiente manera:
Create:
[gml]
//selecciona el nombre del sprite al azar
irandom_range(1, 4);
switch(num){
case 1:  {tcar = "car1"; break}
case 2:  {tcar = "car2"; break}
case 3:  {tcar = "car3"; break}
case 4:  {tcar = "car4"; break}
}
[/gml]
y luego en Draw coloco lo siguiente:
[gml]
draw_sprite(tcar,-1,x,y);
[/gml]
Creo que mi problema es que el codigo draw_sprite esta tomando el nombre de la variable "literalmente" y no el contenido de ella... como podria solucionarlo?

Saludos y gracias!

#1 Enero 04, 2012, 09:42:20 PM Ultima modificación: Enero 04, 2012, 09:46:40 PM por Delios
Pon esto en el evento create  :):

[gml]
a=ceil(random(4));
if a=1{sprite_index=car1;}
if a=2{sprite_index=car2;}
if a=3{sprite_index=car3;}
if a=4{sprite_index=car4;}[/gml]

Hola Delios, gracias por responder! lo que ocurre es que dibujo varias cosas en el evento draw como sombras y ese tipo de cosas y tu sabes que cuando uno utiliza el evento draw no se dibuja el sprite :(

#3 Enero 04, 2012, 10:24:42 PM Ultima modificación: Enero 04, 2012, 10:28:54 PM por Delios
 ;)
S?, cierto, entonces (creo que es la forma m?s sencilla) podrias cambiar el nombre de los sprites: "car1" por "1","car2" por "2", etc.
As? el valor de la variable corresponder? al sprite  :)

Otra manera seria poner esto en el event Draw:
[gml]
var a;
a=ceil(random(4));
if a=1{draw_sprite(car1,-1,x,y);}
if a=2{draw_sprite(car2,-1,x,y);}}
if a=3{draw_sprite(car3,-1,x,y);}}
if a=4{draw_sprite(car4,-1,x,y);}}[/gml]


 :( Cierto, me equivoqu?.
Pon esto en Create:
[gml]a=ceil(random(4));[/gml]

y esto en Draw:
[gml]if a=1{draw_sprite(car1,-1,x,y);}
if a=2{draw_sprite(car2,-1,x,y);}
if a=3{draw_sprite(car3,-1,x,y);}
if a=4{draw_sprite(car4,-1,x,y);}[/gml]

 XD justamente estaba por escribir que lo habia solucionado de esa manera! muchas gracias!

Una nota extra: En vez de usar
[gml]a = ceil(random(4));[/gml]
es recomendable usar
[gml]a = floor(random(4)) + 1;[/gml]
porque random puede devolver 0, y ceil(0) es 0.
Es poco probable, pero si random llega a devolver 0 en el c?digo que postearon antes, no se ejecutar?a ninguno de los ifs consiguientes.
Vim.

Por esa razon mi profe siempre decia: en la programacion debeis contar empezando por el 0  XD luego pasa lo que dice Wadk.
Noka siempre responde a los temas con 0 respuestas ^^