¡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.]

#1 RGSS3 Para principiantes - Parte V el Mar Jul 07, 2015 6:25 pm

Reputación del mensaje :100% (4 votos)

XSerozY

avatar
RGSS3 Para principiantes - Parte V
Por XSerozY

Puedes ver la parte anterior del tutorial aquí , o si deseas empezarlo desde cero, puedes ver la primera parte aquí.

OJO: RGSS3 es el lenguaje usado en RPG Maker Ace, en XP, VX, etc, no funcionará! Aunque algunas cosas si son compatibles, pero el tutorial lo he hecho basándome en RGSS3. Puedes probar esto en otras versiones del Maker, pero no prometo que todo te funcione. Sin embargo, si sabes solucionar algún problema de compatibilidad, dímelo porfa n.n

No puedo creer que haya llegado a la parte V de algo! Ópalo Sorprendido

Ciclos con 'while'

Intentaré ser breve. Un ciclo es una lista de acciones que se repiten.

Pues bien, el ciclo 'while' lo que hace es repetir una lista de acciones mientras cierta condición se cumpla. Es bien simple declararlo:


while [condicion]
        # acciones que se repiten...
end

Un pequeño ejemplo:



Aquí lo que hacemos es mostrar en pantalla los números del 0 al 9. ¿Por qué? Repasemos línea a línea:

 -Primero, creamos la variable local i y le damos un valor de 0.
 -Luego, iniciamos el ciclo con while, y escribimos la condición a la derecha (i < 10).
 -Dentro del while, mostramos con msgbox_p el valor de i.
 -Aumentamos el valor de i en 1.

ESO ES IMPORTANTE!! El ciclo se seguirá repitiendo MIENTRAS la condición sea verdadera, es decir, mientras i < 10. Si no aumentamos el valor de i la condición siempre será verdadera , creando un ciclo infinito que crasheará tu juego.

Finalmente, terminamos el ciclo con end.

Variables array

Ya sabemos que dentro de una variable podemos guardar una cosa para usarla después.
Pero... ¿Y si queremos guardar una lista de cosas? ¿Tendremos que crear muuuuchas variables para guardar cada una?

No necesariamente. Podemos guardar una lista de cosas dentro de una misma variable, sin importar si esta es global, local, constante o de instancia.

Para hacerlo, en el momento en que le demos valor a la variable, debemos abrir corchetes [ y, separados con coma, guardamos todos los elementos de la lista. Al final, cerramos los corchetes ].

[nombre de la variable] = [[cosa1, cosa2, cosa3...]]

Podemos guardar todo lo que queramos en una misma variable. Esto es lo que se conoce como variable 'array' o 'matriz', 'tabla', 'lista', o como quieras llamarle Ópalo Sonrisa Grande.

Ejemplo:



Como notarás, puedes guardar diferentes cosas (separadas con coma) dentro de una misma variable.

Para usar un elemento de la lista, se hace así:

[nombre de la variable][[id]]

En donde 'id' es el elemento de la lista. Me explico: cada cosa de nuestra lista tiene un 'id' que se asigna a cada elemento de izquierda a derecha. El 'id' es un numero entero que comienza con 0.

En nuestro ejemplo, los id serían:



Entonces, si queremos mostrar aquel texto "Hola gente!" en la pantalla, haríamos esto:

Código:
msgbox_p(variable[2])

Ya que '2' es el id del mensaje "Hola gente!" en la variable.

Si queremos sumar los números de la lista haríamos así:

Código:
variable[0] + variable[3] + variable[4]

Se entiende? Ópalo Contento

Contar los elementos de una lista

Existe un ciclo, el for, que cuenta todos los elementos de una lista. Se declara así:

for [elemento] in [lista a contar]
          # acciones del ciclo..
end

Donde 'elemento' es una variable que solo se puede usar dentro del bloque 'for', y representa al elemento de la lista que se está contando en ese momento. Y 'lista a contar' es la variable array que contiene los elementos a contar.

Un ejemplo: mostremos en pantalla TODOS los elementos de la lista que creamos antes:



Aquí vemos que 'cosa' se usa como variable para referirse al elemento de la lista que estamos contando, o en este caso, el elemento que mostramos en pantalla.

Espero que se entienda c:

'break' y 'next'

Como dato adicional, hay dos funciones que podemos usar con nuestros ciclos 'while' o 'for'.

break lo que hace es detener el ciclo, tal como return detiene un método. Un ejemplo de uso con while:



Aquí, ayudado con un 'if modifier', detenemos el ciclo cuando i sea igual a 5. (Es decir, sin importar lo que diga la condición, el ciclo dejará de ejecutarse con un 'break').

Otra función que podemos usar con nuestros ciclos es next. Lo que hace es 'saltarse' la repetición de un elemento y continuar con el siguiente. Un ejemplo de uso con for:



Vemos el mismo ejemplo que usamos antes.

Al igual que antes, se mostrará en pantalla todos los elementos de la lista, menos el numero 4653, es decir, el elemento en variable[3], ya que, gracias a un 'if modifier', cuando contamos ese numero, next se salta todo lo que sigue en el ciclo, y continua contando el siguiente valor que es variable[4].

Se entiende? Ópalo Contento Tanto 'break' como 'next' se pueden usar ya sea en 'while' como en 'for'. Experimenta!

Fin

Esto se pone interesante, en el próximo capítulo hablaré sobre las clases Ópalo Buscapleitos y será el paso definitivo a la creación de scripts para tu juego.

Por ahora, practica estos elementos básicos de Ruby que hemos visto en los capítulos anteriores Ópalo Contento

Puedes ver la siguiente parte aqui.

Dudas? Preguntas? Correcciones? Críticas constructivas? Por favor, házmelas saber, no te quedes callado, la idea es que aprendas.

Si algo de esto no te funciona correctamente en VX o en XP , dímelo y trataré de solucionarlo Ópalo Contento se que estos tutoriales son exclusivos para Ace pero mi objetivo es que todos aprendan, así que problemas de compatibilidad te los resolveré en los comentarios n.n

Saludos!



Última edición por XSerozY el Vie Jul 10, 2015 7:49 pm, editado 1 vez

#2 Re: RGSS3 Para principiantes - Parte V el Mar Jul 07, 2015 8:08 pm

reyerta

avatar
XSeroY tus tutos son increíbles. La verdad nunca dejas dudas para nada. Pero me queda una cuestión sin resolver:

¿En los ciclos el proceso siempre debe terminar? Me refiero, en tu ejemplo el valor de i aumenta en 1, es decir cuando llegue a i=9 ¿finaliza el ciclo no?

Es una súper tonteria lo se. Pero es que me causa interés...

¡Gracias por siempre brindar estas clases a todos nosotros! cuando acabes deberías hacer el compendio y pasarla a los moderadores por pdf, para así publicarlo cuando la revista vuelva.

#3 Re: RGSS3 Para principiantes - Parte V el Mar Jul 07, 2015 10:34 pm

XSerozY

avatar
@reyerta escribió:¿En los ciclos el proceso siempre debe terminar? Me refiero, en tu ejemplo el valor de i aumenta en 1, es decir cuando llegue a i=9 ¿finaliza el ciclo no?

Claro, el ciclo finaliza cuando la condición del 'while' se deje de cumplir.

Lo normal es evitar ciclos infinitos, ya que si no los controlas bien, pueden causar lag o crashear tu juego, lo cual es un bug super grande Ópalo Aturdido

Pero si por razones de la vida la condición nunca se llegara a cumplir, recuerda que con break también puedes detener tu ciclo.

Saludos!! Y suerte con los scripts Ópalo Contento

#4 Re: RGSS3 Para principiantes - Parte V el Lun Jul 13, 2015 9:27 pm

Centoller

avatar
Explicame lo del next mejor

#5 Re: RGSS3 Para principiantes - Parte V el Lun Jul 13, 2015 11:28 pm

XSerozY

avatar
@Centoller escribió:Explicame lo del next mejor

Tienes 5 manzanas, y te las vas a comer todas, menos una, porque está podrida.

¿Que haces? Te las comes todas, pero cuando llegas a la podrida, te la saltas (osea, la omites) y continuas con la siguiente.

Explicado en un ciclo while, sería algo como esto:

Código:
manzana_actual = 0
while(manzana_actual <= manzanas_totales)
        manzana_actual += 1
        next if manzana_actual == manzana_podrida
        comer(manzana_actual)
end

Nos vamos comiendo cada una de las manzanas, pero cuando llegamos a la podrida, la omitimos con next y continuamos con la siguiente.

Entonces, next lo que hace es omitir todo lo que sigue en el ciclo si se cumple una condición, que especificamos por medio de if o unless, y vuelve a repetir el ciclo.

En el ejemplo, la condición sería cuando manzana_actual sea igual a manzana_podrida.

Saludos!

#6 Re: RGSS3 Para principiantes - Parte V el Mar Jul 14, 2015 12:55 am

Ledai

avatar
@XSerozY escribió:
Tienes 5 manzanas, y te las vas a comer todas, menos una, porque está podrida.

¿Que haces? Te las comes todas, pero cuando llegas a la podrida, te la saltas (osea, la omites) y continuas con la siguiente.



Por favor; porfa, habré un taller escuela!!! Te necesitamos con urgencia, Um te necesita; Yo necesito explicaciones así para entenderlo todo *.*




Entérate de todas las novedades

#7 Re: RGSS3 Para principiantes - Parte V el Mar Jul 14, 2015 8:54 pm

XSerozY

avatar
Leda escribió:Por favor; porfa, habré un taller escuela!!! Te necesitamos con urgencia, Um te necesita; Yo necesito explicaciones así para entenderlo todo *.*

@Leda Yo con gusto ayudo al foro, pero.. como va eso del taller escuela? Como se hace? Que requiere? Ópalo Aturdido

#8 Re: RGSS3 Para principiantes - Parte V el Mar Jul 14, 2015 10:17 pm

Ledai

avatar
Pues como cada quien es libre de hacer lo que quiera mientras esto no perjudique a nadie; yo soy libre de suplicar por ayuda para aprender Script, XSerozY es libre de ser profesor de su propio taller de Script, todos lo que quieran son libres de apuntarse si es su deseo, kyonides es libre de expresar tu disconformidad con la idea (? Ópalo Sonrisa Grande), y cada quien es libre de dejar el curso cuando sus circunstancias cambien; esto no es una carrera universitaria o así, es un pasatiempo al fin y al cabo... y así todos contentos ^_^

@XSerozY Para abrir un taller puede hacerlo en la sección pertinente del foro:
http://www.universomaker.net/f27-talleres
Puedes revisar la normas:
http://www.universomaker.net/t2665-como-crear-un-taller

El taller puede ser de lo que quieras, así que si quieres hacer un taller escuela, puedes hacerlo con total tranquilidad siempre y cuando no interfiera con las normas generales del foro, pero no creo que sea el caso.

Me alegro de que quieras enseñar ^_^!!

Un saludo a todos Opalo Hola .




Entérate de todas las novedades

#9 Re: RGSS3 Para principiantes - Parte V el Mar Jul 14, 2015 10:29 pm

XSerozY

avatar
Estoy de acuerdo con ambos @kyonides-arkanthos y @Leda Ópalo Sonrisa Grande

Bueno, ahora he tenido mucho tiempo libre y si puedo crear uno, pero pronto no lo estaré, y se me ha ocurrido (si es que lo llego a crear) dividir aquel taller por niveles.

Por ejemplo: Estos días comienza el nivel 1 y terminaría en una o dos semanas.
Una o dos semanas después comenzaría el nivel 2, y así sucesivamente, así me comprometo con un horario fijo que sepa que pueda cumplir, y la gente no tendría por qué abandonar el curso/taller por inactividad (al menos que de verdad no cumpla aquel horario)

Se puede hacer eso? O hay que ser constante? Ópalo Sonrisa Grande

#10 Re: RGSS3 Para principiantes - Parte V el Miér Jul 15, 2015 12:40 am

Centoller

avatar
yo creo que ay que ser constante

#11 Re: RGSS3 Para principiantes - Parte V el Miér Jul 15, 2015 12:30 pm

Ledai

avatar
Yo pienso que todo depende de la disponibilidad de los usuarios, y siendo tu taller, tú pones las normas; y siendo el profesor, tú pones el modo y el horario... bajo mi punto de vista, es lo que yo haría y a quien no le guste que no se apunte ^_^




Entérate de todas las novedades

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.