¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

mrhawi

avatar
Buenas, traigo un tutorial que hice hace un tiempo:

Un día de ocioso me puse a pensar en las variables a variables del maker y se me ocurrió hacer un tutorial de ésto, porque no he visto tutoriales sobre éste apartado de éste maker en internet, o al menos no una aplicación, y creo que muchos se habrán preguntado para qué diablos me servirá esto?:



Bueno, yo cuando empecé a trastear con las variables del maker, me pregunté en su momento, ¿Habrá alguna manera de manejar las variables del maker, mediante variables?, y la respuesta es sí, y es precisamente utilizando lo que he mostrado en la imagen (es algo bastante similar a los punteros, para los que han visto algún lenguaje de programación, yo la verdad de programar realmente sé bastante poco xD).

En Fin Después de ésta introducción a lo que por facilidad y analogía llamaré variables puntero, explicaré un ejemplo de aplicación (tomé el viejo engine de menú personalizado que había subido al foro y lo edité de manera de poder trabajarlo como tutorial.

Paso 1, llamar al menú:

Lo primero es lo básico, crear la "función" llamar menú, para ésto creamos un evento común en proceso paralelo con algún interruptor de inicio, y la primera instrucción del evento será el comando "asignar teclas" que se encuentra en la tercera pestaña de los comandos de eventos, al cual le pondrán la opción "esperar a pulsar tecla", para que el maker no haga nada hasta que se pulse la tecla en éste evento, para éste caso le puse la tecla cancelar (cuyo valor en variable es el 6). Luego, utilizando condiciones y efectos, que creo que se encuentran en la misma pestaña, se verifica si se pulsó la tecla, se muestran las imágenes y se activa un interruptor que iniciará un evento con condición de inicio "inicio automático" (lo cual dejará estático al personaje) en el cual se controlará el menú. Además, en el muestreo de imágenes se llamará a otro evento "Mostrar Objetos", que explicaré más adelante. Hasta ahora el engine debería quedar así:



Paso 2, el menú funcionando:

Para éste caso, lo que haremos será, primero inicializar unas variables, las cuales serán Cursor_Pos, que indicará qué objeto está apuntando el cursor del menú, y CursorX y CursorY las coordenadas en pantalla de la imágen del cursor. Luego se entrará a un ciclo, en el cual se manejará el menú, comenzamos con un "asignar teclas", para el cual utilizaré las teclas, arriba, abajo, aceptar, y cancelar para ir moviendo el cursor y seleccionar objetos o volver al juego. Utilizando nuevamente condiciones y efectos, verificamos qué tecla fue pulsada, en el caso de que se apretó arriba, primero verificaremos que el cursor no se encuentre en su primera posición, ésto, mediante otro condiciones y efectos, si la posición del cursor es 0 y se presiona arriba, entonces la posición del cursor ahora debiese ser la posición final (para hacer lo típico de llegar al final de la lista de objetos o al inicio), ahora sino, simplemente se le resta uno a dicha variable (Pos_Cursor), análogamente se hace lo mismo para la variable CursorY, que sería la posición en pantalla de la imágen del cursor, se hace lo contrario en el caso de apretar abajo. En el caso de presionar cancelar, entonces se borran las imágenes, se rompe el ciclo y se vuelve todo a la normalidad (se activan y desactivan los interruptores correspondientes), deberían ahora tener algo así:



Notarán que hice un "refresco" de la pantalla, al final de cada iteración del ciclo (llamando nuevamente al evento mostrar objetos), ésto lo hago en el caso de que el menú tuviera una barra de scroll (que no agregué esa función en este caso porque me hubiera salido muy largo), se mostrarían las imágenes de los objetos que debieran mostrarse xD.

Paso 3, El tan suda sangre muestreo de objetos:

Antes de explicar de lleno todo, mostraré cómo hago esta parte yo, ésta imagen resume todo:



Lo que hago es ver las variables como un "arreglo gigante", me refiero a que le asigno a unas tantas variables, las ranuras o espacio para cada objeto, y también otro para la cantidad de objetos, basandome en una especie de arreglo bidimensional, en palabras más simples:

Objeto | Cantidad
Obj1 | Cant1
Obj2 | Cant2
Obj3 | Cant3
.
.
.
Objn | Cantn

Pero el truco ahora está con los punteros, porque aunque el maker no lo sepa, yo sí sé desde donde empiezan los objetos y donde terminan, al igual que la cantidad de los mismos, lo que hago es decirle al maker que lea éstas variables solamente.

Entonces primero tomo una variable, la llamaré "Objeto Seleccionado", le pondré valor 22, porque esa es la "dirección" de la variable del objeto 1 (con dirección me refiero al numerito que sale al lado de la variable). Luego inicio un ciclo, el cual utilizaré para recorrer las "ranuras" que mencioné antes. Lo primero es saber cuando termina, para el caso del ejemplo que hice, sólo mostraré 3 imágenes (solo mostraré 3 objetos xD), por lo tanto si ya mostré todas las imágenes, significa que no tengo que verificar qué objeto tengo que mostrar. Ahora viene el truco, cómo leo qué objeto se encuentra en dicha ranura?, pues utilizando los punteros como se muestra en la imágen:



Ésto significa, que a la variable Id de objeto le doy el valor de lo que está en la dirección que tiene la variable Objeto Seleccionado, por ejemplo, si me encuentro en el primer objeto, la variable objeto seleccionado vale 22, es decir que la variable ID objeto valdrá lo que vale la variable 22 (que como se mostró antes es la variable Objeto1).

Análogamente y sin explicar mucho porque es lo mismo, creo otra variable que agarre los valores de las "cantidades de Objetos" y haga lo mismo que se hizo anteriormente. Luego utilizó un llamar evento, para que el "código" se vea más ordenado, en éstos eventos están la muestra de imágenes de los objetos y sus cantidades. Ahora bien, para qué demonios usé la variable "n_img_mostradas", pues por la sencilla razón de qué tengo que mostrar más de una imagen, y dicha imágen puede ser distinta en cada caso. Para ésto sólo me limitaré a dar como ejemplo el muestro de los nombres de los objetos:



Los valores que toma la variable n_img_mostradas van del 2 al 4, ésto lo hice para recordarme que el número de imágen que uso con el comando mostrar imágen es el 2 el 3 y el 4 (sólo tenía 3 imágenes para los objetos xD).

Finalmente el evento de la muestra de objetos quedaría así:



Paso 4, Tengo objetos, ahora ¿Cómo los uso?:

Ésta parte es relativamente simple, similar a lo anterior, nos vamos a la "dirección" del primer objeto, luego le sumamos la variable "Cursor_Pos" que indicará donde finalmente estamos ubicados en cuanto a las ranuras de los objetos. Una vez tenemos la posición, verificamos, nuevamente usando punteros, qué objeto es, y finalmente le damos el efecto que queramos, lógicamente, necesitamos también restarle 1 a la cantidad del objeto, ésto lo hacemos de forma similar al caso anterior. Ahora se presenta otra interrogante, ¿y si me queda 1 objeto?, bueno, aquí lo que yo hago es luego de realizar todas las operaciones, a una variable llamada "Se acabaron objetos?", le doy el valor de la variable cantidad de objetos, luego si ese valor es 0, entonces al objeto en cuestión (la ID del objeto), le doy el valor 0, que para mí será como que no hay objeto en esa ranura, cómo se hace ésto?, de la siguiente forma:



En la imagen lo que se hace, es darle a la variable "Se acabaron objetos?" el valor que se encuentra en la "dirección" del valor de la variable Cantidad_Objeto, finalmente el evento debiera quedar mas o menos así:



Paso final, Agregar Objeros:

Puesto que ya este menú es más personalizado, no se puede usar el comando que trae por defecto el maker para realizar ésta acción, debemos crear otro evento al cual llamaremos cuando necesitemos añadir un objeto. Al igual que en los casos anteriores, vamos a la dirección de la primera ranura de los objetos y empezamos a recorrerla utilizando un ciclo. En el caso de encontrar un objeto que uno ya tenga, se le suma 1 simplemente a la cantidad correspondiente, en el caso de no tener el objeto, se agrega el objeto y se le suma 1 a su cantidad. Ésta parte me dió pereza hacerla por completo (ahí se tendrán que preguntar que pasa si hay un espacio vacío antes de un objeto que tengo en posesión, la solución rápida sería recorrer dos veces todos los objetos, una para ver si tengo el objeto y y agregarlo, o en caso de no tenerlo agregarlo a la primera ranura vacía que encuentre, eso queda de tarea Ópalo Contento ). El evento queda así:



y para crear un cofre:



Notas Finales:

Dejo la descarga para que lo vean desde el maker:

Tutorial

En fin espero que les sirva para entender ésta útil función del maker, que sirve para hacer engines muchísimos más complejos. En RMXP y VX se puede hacer también (pero de otra forma, "emulando" estas variables con los comandos básicos, o metiendo scripts), pero en estos maker no vale la pena, porque hay scripts, que es mucho mejor, espero que les sirva, saludos =)

Razor

avatar
Los rumores de que los engines en el rm2k3 son mejores y mas complejos que en otros maker son verdad... Para hacer esto en el XP habría que recurrir a otros métodos más raros, se ve que le pillas a esta área del maker.

Muy buen tutorial lo realice con la reliquia que tengo guardado y casi no uso de ese maker, pero me salio decente.

¡Gracias y un saludo!
Out~





Todos mis aportes por Mediafire tienen contraseña, esa es: www.universomaker.net
Esto es para evitar plagio, asegúrense de copiar y pegar la contraseña.

Makera

avatar
Muy buen tuto , me das permiso para colgarlo en mi blog ?

mrhawi

avatar
Pues cuélgalo si quieres, pero no te olvides de quién lo hizo xD, saludos!

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.