Pues no es un nombre como tal, sino que es una forma de llamar a la habitación, para que el jugador tenga una orientación de donde se encuentra, en mi caso es simplemente llamar a cada cuarto con un numero creado por un sprite, lo que trato de hacer es crear un objeto controlador que me diga en que nivel se encuentra el jugador, lo mas parecido que tengo a esto es el objeto controlador de música fondo, el cual tiene un código que permite tocar la música correspondiente a cada nivel, para hacerse una idea esta seria su estructura
///////////////////////////////ROOM_START
///Musica de fondo
if room=room_Nivel1 {audio_sound_gain(snd_Delightful_D,0.7,1);
audio_play_sound(snd_Delightful_D,0,1);}else
if room=room_Nivel2 {audio_sound_gain(snd_Robobozo,0.7,1);
audio_play_sound(snd_Robobozo,0,1);}else
if room=room_Nivel3 {audio_play_sound(snd_Laser_Groove,0,1);}
////////////////////////////ROOM_END
audio_stop_all();
Por lo que deduzco que tendría que armar una estructura semejante, es decir, si cuarto es X , entonces crea/dibuja el sprite X en las coordenadas x,y, pero como no logro armar de forma correcta este elemento, he preguntado :-\.
Y no te sale mejor dibujar el valor de room_get_name(room)?
Es un código que te vale para todas las pantallas.
Yo cambiaria esto:
if room=room_Nivel1 {audio_sound_gain(snd_Delightful_D,0.7,1);
audio_play_sound(snd_Delightful_D,0,1);}else
if room=room_Nivel2 {audio_sound_gain(snd_Robobozo,0.7,1);
audio_play_sound(snd_Robobozo,0,1);}else
if room=room_Nivel3 {audio_play_sound(snd_Laser_Groove,0,1);}
Por esto, q es mas optimo:
switch(room)
{
case room_Nivel1:
audio_sound_gain(snd_Delightful_D,0.7,1);
audio_play_sound(snd_Delightful_D,0,1);
break;
case room_Nivel2:
audio_sound_gain(snd_Robobozo,0.7,1);
audio_play_sound(snd_Robobozo,0,1);
break;
case room_Nivel3:
audio_play_sound(snd_Laser_Groove,0,1);
}
Y lo mismo para lo otro que queres armar :)
Saludos.
Cita de: bochaPastore en Septiembre 07, 2017, 01:42:48 PM
Yo cambiaria esto:
if room=room_Nivel1 {audio_sound_gain(snd_Delightful_D,0.7,1);
audio_play_sound(snd_Delightful_D,0,1);}else
if room=room_Nivel2 {audio_sound_gain(snd_Robobozo,0.7,1);
audio_play_sound(snd_Robobozo,0,1);}else
if room=room_Nivel3 {audio_play_sound(snd_Laser_Groove,0,1);}
Por esto, q es mas optimo:
switch(room)
{
case room_Nivel1:
audio_sound_gain(snd_Delightful_D,0.7,1);
audio_play_sound(snd_Delightful_D,0,1);
break;
case room_Nivel2:
audio_sound_gain(snd_Robobozo,0.7,1);
audio_play_sound(snd_Robobozo,0,1);
break;
case room_Nivel3:
audio_play_sound(snd_Laser_Groove,0,1);
}
Y lo mismo para lo otro que queres armar :)
Saludos.
Se agradece el ejemplo, pero como he dicho, no me interesa programar la música de los niveles, y es que la ya la tengo, la razón por la que escribí ese código fue para mostrar lo que quiero lograr con la creación de un sprite, por lo que preguntare de nuevo ¿como ago para que el sprite de una sub-imagen "X" se cree cuando la habitación tiene el nombre "X"?
NOTA: Es redundante decirlo, pero mi problema no tiene ninguna relación con la música actualmente.
Cita de: Arcadian en Septiembre 07, 2017, 01:25:30 PM
Y no te sale mejor dibujar el valor de room_get_name(room)?
Es un código que te vale para todas las pantallas.
Y como debería montar el código para que algo como eso se ejecute sin problemas, en la practica es mas difícil hacerlo que decirlo :-\?
Puedes crear un ds_map para relacionar cada room con un numero de subimagen.
Al inicio del juego crea el mapa
[gml]
global.subimg_rooms = ds_map_create();
global.subimg_rooms[? rm_nivel1] = 0;
global.subimg_rooms[? rm_nivel2] = 0;
// etc.
[/gml]
Al iniciar cada room revisa el mapa para ver qué sprite se debe dibujar
[gml]
subimagen = global.subimg_rooms[? room];
[/gml]
Cita de: Clamud en Septiembre 07, 2017, 10:41:23 PM
Puedes crear un ds_map para relacionar cada room con un numero de subimagen.
Al inicio del juego crea el mapa
[gml]
global.subimg_rooms = ds_map_create();
global.subimg_rooms[? rm_nivel1] = 0;
global.subimg_rooms[? rm_nivel2] = 0;
// etc.
[/gml]
Al iniciar cada room revisa el mapa para ver qué sprite se debe dibujar
[gml]
subimagen = global.subimg_rooms[? room];
[/gml]
Así que asociar una global, la verdad es que el objeto es persistente, no estoy seguro de que su método sea muy intuitivo de entender, ademas esto ocurre en el evento room_start, por lo que siempre ara X acción cuando el cuarto sea el que corresponde, pero pensaba en armar algo no tan complicado con palabras en vez de números que a la semana siguiente no tenga idea de su función, de por si ya hay muchos valores con números, pienso en una estructura como la de abajo para entenderla facilmente.
///Nombre nivel
if room=room_Nivel1 (draw_sprite(spr_Icono nivel,0,32,32));
if room=room_Nivel2 (draw_sprite(spr_Icono nivel,1,32,32));
if room=room_Nivel3 (draw_sprite(spr_Icono nivel,2,32,32));
Pero como es de costumbre, hay algo que me falla al momento de realizar este código, ya que puedo llegar a armar 30 niveles y debo ordenarlo como si fuera una lista, de todas formas en un juego que va por versiones y se ara pesado de organizar a futuro, error que cometí de novato en "Red Heart", pero funciona bien :-\.