Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: LuisGM en Enero 04, 2012, 09:28:23 PM

Título: incluir variable dentro de draw_sprite...
Publicado por: LuisGM en Enero 04, 2012, 09:28:23 PM
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!
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: Delios en Enero 04, 2012, 09:42:20 PM
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]
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: LuisGM en Enero 04, 2012, 10:05:09 PM
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 :(
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: Delios en Enero 04, 2012, 10:24:42 PM
 ;)
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]
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: LuisGM en Enero 04, 2012, 10:39:44 PM
 :( no funciona...
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: Delios en Enero 04, 2012, 10:52:25 PM
 :( 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]
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: LuisGM en Enero 04, 2012, 11:24:21 PM
 XD justamente estaba por escribir que lo habia solucionado de esa manera! muchas gracias!
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: Wadk en Enero 05, 2012, 04:50:40 AM
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.
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: NOKAUBURE en Enero 05, 2012, 12:51:05 PM
Por esa razon mi profe siempre decia: en la programacion debeis contar empezando por el 0  XD luego pasa lo que dice Wadk.
Título: Re: incluir variable dentro de draw_sprite...
Publicado por: Wadk en Enero 07, 2012, 02:19:19 AM
Exacto.