Septiembre 09, 2017, 05:00:22 AM Ultima modificación: Septiembre 09, 2017, 09:58:23 AM por Naitsabes0
He pensado en algo como lo de abajo para crear un sprite especifico para cada habitación.

///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.

NOTA: Resumí esto así, por que mi problema anterior se alargo y nos desvió del problema principal, ademas de descubrir que no le puedo sumar tiempo a un objeto que se crea.

Sería mejor y más organizado usar mapas.
[gml]
///Evento create
iconos = ds_map_create();

iconos[? room_Nivel1] = 0;
iconos[? room_Nivel2] = 1;
iconos[? room_Nivel3] = 2;
[/gml]
[gml]
///Evento draw
draw_sprite(spr_Icono_nivel, iconos[? room], 32, 32);
[/gml]
alaberga regué el café.

BA:STFW&RTFM

puedo sentir la tecnología fluyendo por mi painis
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

Cita de: NiuWeb en Septiembre 09, 2017, 05:07:06 AM
Sería mejor y más organizado usar mapas.
[gml]
///Evento create
iconos = ds_map_create();

iconos[? room_Nivel1] = 0;
iconos[? room_Nivel2] = 1;
iconos[? room_Nivel3] = 2;
[/gml]
[gml]
///Evento draw
draw_sprite(spr_Icono_nivel, iconos[? room], 32, 32);
[/gml]
Y volvió a copiar y pega el mismo código de la otra vez  :-\, si no escribí

///CREATE
iconos = ds_map_create();

iconos [? room_Nivel1] = 0;
iconos [? room_Nivel2] = 1;
iconos [? room_Nivel3] = 2;

///DRAW
draw_sprite(spr_Icono_Nivel, iconos[? room]. 32, 32);

Es porque no funciona, al grado que de que el juego no corre, por eso busco un sistema que funcione a la larga, y el que muestra no lo entiendo, de hecho nunca he visto esas funciones en tutoriales, ya que parecen ser poco intuitivas.

///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));

Todavía no encuentro que esta mal aquí  :-X.

Pero a ver, sé específico.
¿No corre? ¿Muestra un error o simplemente no se ejecuta nada? ¿Usas GM:S?

Y te puse ese código porque lo creo más intuitivo, más legible y más fácil de modificar.
http://docs.yoyogames.com/source/dadiospice/002_reference/data%20structures/ds%20maps/index.html
alaberga regué el café.

BA:STFW&RTFM

a ver colega Naitsabes0 que hay de malo con tu código tengo una modificación que te va a encantar usando tu código mete todos los sprites de todos los niveles en uno solo ahora crea un objeto control o en ese mismo que ya tienes has lo siguiente

CREATE
image_speed=0

STEP

if room=room_Nivel1 {image_index=1}
if room=room_Nivel2 {image_index=2}
if room=room_Nivel3 {image_index=3}


para dibujarlo depende donde lo pongas en el cuarto
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

Cita de: NiuWeb en Septiembre 09, 2017, 06:19:13 AM
Pero a ver, sé específico.
¿No corre? ¿Muestra un error o simplemente no se ejecuta nada? ¿Usas GM:S?

Y te puse ese código porque lo creo más intuitivo, más legible y más fácil de modificar.
http://docs.yoyogames.com/source/dadiospice/002_reference/data%20structures/ds%20maps/index.html
-Si, no corre mas lejos de la pantalla gris.

-Si tengo GM:S 1.4 (la ultima versión)

-Por lo que ley en su enlace de "Mapas de DS" se resume en una estructura de datos que almacena datos en pares enlazados consistentes en una clave y un valor correspondiente.

-No planeo guardar valores numéricos de ningún objeto, simplemente quiero crear un sprite en pantalla que le indique al usuario, usted esta aquí, es un simple bloque que dice nivel 1, y así hasta llegar a una cantidad indeterminada 1 x 1, lo cual se vería en las sub-imágenes, por eso esa función es mala para esta tarea, tal vez por eso no la he visto que nadie las use en sus proyectos.


¿Así tienes tu código en el proyecto?

Los mapas son muy eficientes, mírale la lógica al código antes de decir que son malos.
alaberga regué el café.

BA:STFW&RTFM

Cita de: NiuWeb en Septiembre 09, 2017, 07:14:36 AM

¿Así tienes tu código en el proyecto?

Los mapas son muy eficientes, mírale la lógica al código antes de decir que son malos.
obj_Jugador
///CREATE
iconos = ds_map_create();

iconos [? room_Nivel1] = 0;
iconos [? room_Nivel2] = 1;
iconos [? room_Nivel3] = 2;

///DRAW
draw_sprite(spr_Icono_Nivel, iconos[? room]. 32, 32);

el sprite se llama: spr_Icono_Nivel, y tiene todas las sub-imágenes.

Es un Arkanoid no un RPG, aquí no es optima esa función, ademas ley la lógica que tiene y me parece rebuscada, no le encuentro lo intuitivo, podría verlo mañana y ya no sabría lo que hacia, si la gente no lo esta usando en los ejemplos, vídeos y otros proyectos que he descargado, debe ser por lo innecesario y poca importancia que tiene, tampoco me queda claro esos signos de interrogación.

Hasta aquí escribo, que ni te hayas tomado la molestia de pensar por qué la imagen que puse tiene un rectángulo rojo apuntando a algún signo por ahí hace ver que esto es una pérdida de tiempo, y si hubieras leído la documentación sabrías qué es el signo de interrogación.
alaberga regué el café.

BA:STFW&RTFM

NIUWEB tiene razón colega no prestas atención al detalle yo te envié una respuesta y no prestaste atención tampoco lo que el quiso decir en su código es que pusiste un punto en ves de una coma por eso lo marco con un rectangulo
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

Cita de: NiuWeb en Septiembre 09, 2017, 08:25:25 AM
Hasta aquí escribo, que ni te hayas tomado la molestia de pensar por qué la imagen que puse tiene un rectángulo rojo apuntando a algún signo por ahí hace ver que esto es una pérdida de tiempo, y si hubieras leído la documentación sabrías qué es el signo de interrogación.

Aunque coloque de forma correcta los valores lógicos, no evita que falle, las funciones de mapas no son optimas para este tipo de géneros (Arkanoid), gracias por la ayuda  :), pero volvimos a desviarnos del tema principal por segunda vez, este era el código y el evento, no se porque se complica tanto en usar CREATE y DRAW para algo tan común como crear un sprite en una habitación X.
///ROOM START
///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));


y porque no pruebas mi metodo nada pierdes con probarlo para ver si te funciona si es que no te convence el ds_ maps
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!

Cita de: cristopher2545 en Septiembre 09, 2017, 08:33:56 AM
NIUWEB tiene razón colega no prestas atención al detalle yo te envié una respuesta y no prestaste atención tampoco lo que el quiso decir en su código es que pusiste un punto en ves de una coma por eso lo marco con un rectangulo
Me enviaba unos códigos que no correspondían a los que he estado mostrando, empezaron con los DS y los eventos CREATE y DRAW, leo el enlace y no me queda nada claro, por eso uso funciones con las que estoy familiarizado, porque al menos se lo que hacen sin meter tantos [{()}] entre palabras y números, me confunden aunque les ponga un comentario  :-\, hay muchas formas de hacer X acción, pero esa me perjudica al momento de programar.
///ROOM START
///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));

mhhh comprendo
Programame! como a una de tus árcades chinas

GET BEHIND ME DOCTOR!