¡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 III el Dom Jun 14, 2015 12:56 am

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

XSerozY

avatar
RGSS3 Para principiantes - Parte III
Por XSerozY

Puedes ver la parte anterior del tutorial , 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.

Peeeeeeeero... y gracias a @orochii por el dato ( Ópalo Reputación para ti), si tienes el XP o el VX, simplemente cambia el msgbox_p por print y te andará correctamente. En un principio estaba pensando en editar mis tutoriales anteriores para hacerlos compatibles con las 3 versiones del Maker, pero había algunas cosas que solo eran válidas para una versión y no para otra, y viceversa.

Métodos, variables, operaciones aritméticas, if, unless y if & unless modifier parecen andar perfectamente en el XP. Del VX no tengo datos, pero al ser Ruby puro, deberían funcionar. En todo caso, cualquier otra info de compatibilidad que me puedan señalar, editaré los tutoriales para agregarla como introducción, tal y como hice aquí.


Ahh otra cosa mas.. Debido a que es molesto estar dándole color a cada script, y para rematar el editor de posts del foro no respeta las tabulaciones que hago en el Maker  Opalo Triste , sacaré fotos a los ejemplos largos. Además, así también los incentivo a poner en práctica el tutorial y no a copiar y pegar mis ejemplos y decir "WOOOAAAH!! FUNCIONA!!" Ópalo Sonrisa Grande Lo digo porque yo haría eso jajajaajaj.


Continuemos con el tutorial, oki?

Muy bien, empezemos:

Argumentos
No, no estoy hablando de un guión de teatro Ópalo Sonrisa Grande
Te acuerdas que en el método "msgbox_p"abríamos paréntesis y dentro de ellos escribíamos un texto?? Ese texto, son los argumentos del método "msgbox_p". En pocas palabras, los argumentos de un método es todo lo que ha estos se les pone entre paréntesis al ejecutarlos.

Como creo un método con argumentos? Así:

def [nombre del método]([Argumentos del método])
 # ....
end

Sip, al momento de crear un método, al lado del nombre abrimos paréntesis, y colocamos todos los argumentos que queramos que el método tenga.

Pero XSerozY, por dios.. Que cosa son los argumentos?? Que debo poner ahí???

Pues... los argumentos son variables. Sip. Variables locales sin ningún valor que se crean en el método.
Nosotros al ejecutar el método, debemos darle valor a esas variables. Creo que con ejemplo se entiende mejor:

def MiMetodo(texto)
 msgbox_p(texto)
end

MiMetodo("Universo Maker!")
MiMetodo("Hola gente!!!")

Vamos por parte.
Creamos un método llamado "MiMetodo", y a la derecha abrimos paréntesis y creamos un argumento. Ese argumento es una variable local (es decir, que solo se puede usar dentro de nuestro método) sin ningún valor. La variable se llama "texto".
Luego, dentro del método, creamos un cuadro de texto que muestre en pantalla el valor de la variable "texto".

Pero, esa variable no tiene ningún valor, cierto?? Aquí es donde se pone interesante. De la misma forma en como ejecutamos "msgbox_p", debemos ejecutar el nuestro, Abriendo paréntesis, y dentro darle el valor a la variable "texto".

Como podrás notar en el ejemplo, ejecutamos dos veces nuestro método, y en cada vez le damos un valor distinto al argumento Opalo Hola

Si no entendiste hasta ahora, detente, deja de leer, que esto es importante, y escríbeme en los comentarios para resolver tus dudas y así poder crear una explicación mejor.

En resumen:  Los argumentos son variables que tenemos que darles valor al momento de ejecutar el método.

Argumentos en acción!!

Hagamos un ejemplo usando argumentos.
Que tal si, por cualquier motivo de la vida, quieres sumar, restar, multiplicar y dividir dos números, y luego mostrar los resultados en pantalla??
Y peor aún, quieres hacer eso con muuuuuuuchos números distintos, pero no quieres estar copiando y pegando toooooodas las operaciones con caaaada uno de los números????

Lo que hacemos es crear un segundo método que podamos ejecutar, así:


Práctico, no? Opalo Hola

Argumentos opcionales

Podemos hacer que algunos argumentos sean opcionales. Como así? Que al momento de ejecutar el método, no sea obligatorio darle valor, ya que si no lo hacemos, este tendrá un valor predeterminado.

Para darle un valor predeterminado a un argumento, simplemente le agregamos un "=" y el valor. Ejemplo:



Espero que eso haya sido fácil Opalo Hola

return

Y que tal si somos orgullosos, y no queremos que el método nos muestre en un texto los resultados, sino queremos usar nosotros mismos aquel resultado?

Para eso, almacenamos el resultado de las operaciones aritméticas en una variable, que la "devolvemos" para poder usarla.
Como hacemos eso? Con la palabra return.

Usemos nuestro ejemplo:



Lo se, puede resultar complicado, pero con tiempo y paciencia se entiende.

return lo que hace es "devolver" el valor que almacenaremos en una variable, para usarla en otro método.
En el ejemplo, el método "Aritmética" sumaba los dos argumentos y el resultado lo almacenaba en una variable. Al final, "devolvemos" esa variable, que como ven, la usamos en el metodo "MiMetodo" para mostrarla como mensaje.

Dato adicional sobre return. Créditos a @kyonides-arkanthos :

A diferencia de otros lenguajes de programación, en Ruby el return no es obligatorio incluirlo al final de un método, porque va implícito, o sea, se sobreentiende que se entregará el último valor ejecutado. Claro que colocar un return antes de tiempo detendría la ejecución del método hasta esa línea, pero deben saber que return puede devolver cualquier valor, si return está solo en la misma línea, su valor es nil, o sea, NADA.

Podemos usarlo para entregar otros valores como un mensaje de error...

return "Error de División Entre Cero"

Una forma de aplicar el dato de @kyonides-arkanthos es deduciendo que:

Código:
def metodo
      msgbox_p("dato lol")
      10
end

es lo mismo que decir:

Código:
def metodo
      msgbox_p("dato lol")
      return 10
end

"detener" métodos

Como yapa, podemos usar return para detener un método, es decir, para dejar de ejecutarlo.

Ejemplo:

VARIABLE == false

def MiMetodo
 return if VARIABLE == true # recuerdas al "if modifier"? aquí también funciona
         msgbox_p("No detuvieron el metodo!! Muahahaha")
end

MiMetodo()

Como pueden ver, para detener un método, colocamos "return" en donde queramos y sin ningún valor a devolver.

En mi ejemplo, el método se detendrá si "VARIABLE es igual a true", condición que no se cumple, ya que "VARIABLE es igual a false", por lo que el método continuará Opalo Hola

Al detener un método, TODO lo que estaba abajo del return, no se ejecutará. Pruebalo cambiando el valor de VARIABLE a true jeje

FIN

Y eso es todo, amigos ! Espero que les haya servido Ópalo Contento

Dudas, críticas constructivas, etc. en comentarios, que la idea es que aprendas Opalo Hola

En el próximo tutorial: ~ Cansado de crear 31212371297 variables?? Yo te doy la solución: Variables array!!
                                          ~ Cansado del copy/paste en tus scripts?? ¡¡Crea un ciclo y olvídate de eso!!
                                          ~ Los "if" te invaden?? ¡¡ Un "case" lo resuelve todo!!

Puedes ir a la siguiente parte del tutorial haciendo clic aquí.



Última edición por XSerozY el Dom Jul 12, 2015 12:52 am, editado 3 veces

#2 Re: RGSS3 Para principiantes - Parte III el Lun Jun 15, 2015 6:58 pm

reyerta

avatar
Excelente clases XSerozY es increíble la cantidad de cosas que se pueden hacer con Ruby... Estas clases son mejores que las de los cursos de Ruby Online *¡Open English!*

Muchas gracias, lastima que no uso Vx Ace. Trataré de aplicar todo al xp y así solucionar un problema que me esta mortificando. Mientas, tengo una pregunta:

¿Como vuelvo a poner a funcionar un método cuando lo he detenido?

#3 Re: RGSS3 Para principiantes - Parte III el Lun Jun 15, 2015 7:36 pm

Tomate

avatar
¡Jajaja! Reyetín, ese "Open English" tiene una publicidad espantosa con su "hospitaliseishon".

XSerozY: Otra vez, mis comentarios son sólo sobre felicitaciones, pues no estoy con tiempo para practicar algo de RGSS. Aunque todos estamos más que agradecidos por contar con semejante maestro y tan buenos aportes en este tema ;D

No creo que alguien haya avanzado tanto en explicar, en nuestro idioma, tantas cosas súper útiles de Ruby y enfocadas para el RPG Maker. ¡No te vayas! Necesitamos que seas nuestro "Dios Scripter". Ópalo Contento

Ópalo Reputación

#4 Re: RGSS3 Para principiantes - Parte III el Mar Jun 16, 2015 2:30 am

XSerozY

avatar
Jajaja gracias chicos xD estaré apoyando todo lo que pueda.. bueno.. estare algo ausente porque me quede sin internet :/ asi que respondo desde mi celu:

@reyerta si detienes un metodo usando "return" , debes volver a ejecutarlo asi:

NombreDeTuMetodo()

Vamos.. como siempre los hemos ejecutado xD
@Tomate gracias por tus felicitaciones, eres mi verdura favorita (? Okno.. xD pues eres uno de los qe mas me apoyan asi que gracias c: cuando tenga un pc a mano hago la otra parte.. ah y animate a tocar el editor de script! Nada es imposiblejeke

Saludos!!

#5 Re: RGSS3 Para principiantes - Parte III el Miér Jul 08, 2015 5:20 pm

Natalie

avatar
Vale, yo tengo una duda antes de seguir con "Argumento en acción" y como soy obediente, dejo de leer y pregunto ^^

def MiMetodo(texto)
msgbox_p(texto)
end

MiMetodo("Universo Maker!")
MiMetodo("Hola gente!!!")

¿No se reescribe el valor de MiMetodo? Ópalo Aturdido  ¿Por qué?

#6 Re: RGSS3 Para principiantes - Parte III el Miér Jul 08, 2015 6:34 pm

Reputación del mensaje :100% (1 voto)

XSerozY

avatar
natalie_cuxi escribió:Vale, yo tengo una duda antes de seguir con "Argumento en acción" y como soy obediente, dejo de leer y pregunto ^^

def MiMetodo(texto)
msgbox_p(texto)
end

MiMetodo("Universo Maker!")
MiMetodo("Hola gente!!!")

¿No se reescribe el valor de MiMetodo? Ópalo Aturdido  ¿Por qué?

No, porque estas 'llamando' (osea ejecutando) al metodo MiMetodo.

Por ejemplo, msgbox_p es un metodo ya creado por Ruby, y como has podido ver, podemos llamarlo varias veces seguidas, ejemplo:

Código:
msgbox_p("hola")
msgbox_p("jeje")
msgbox_p("lala")

Lo que el ejemplo hace es 'ejecutar' el metodo msgbox_p 3 veces, es decir, veremos 3 veces el cuadro de mensaje. ¿Qué es lo que cambia? El mensaje que mostramos, que es el argumento que le damos entre paréntesis.

en el caso de MiMetodo es igual. Recuerda que los argumentos son variables a las que debemos darle un valor cuando lo ejecutamos.

Al hacer:

Código:
def MiMetodo(texto)
msgbox_p(texto)
end

MiMetodo("Universo Maker!")
MiMetodo("Hola gente!!!")

Creamos un metodo llamado MiMetodo que te pide un argumento, es decir, nos pide que le demos valor a una variable llamada 'texto' que es la que está entre paréntesis.

Osea, cuando ejecutas dos veces MiMetodo, solo cambias el valor de esa variable.

Perdon si alargue mucho la explicacion Ópalo Sonrisa Grande
Espero que te sirva

Saludos!

#7 Re: RGSS3 Para principiantes - Parte III el Jue Jul 09, 2015 3:58 pm

Reputación del mensaje :100% (1 voto)

jerkylink

avatar
@natalie_cuxi si lo que quieres es tener es un método con el mismo nombre pero con diferente funcionalidad debes de cambiar los argumentos ya sea de tipo o agregando otro parámetro a ese método, y con respecto a tu pregunta de que porque no se sobrescribe es por que, "los métodos deben contar con diferentes argumentos. y por medio del compilador este decide qué método invocar comparando los argumentos." y a eso es que se le llama sobrecarga de método.

Pero si no estoy mal, lamentablemente Ruby no soporta sobrecarga de métodos, pero no te preocupes puedes utilizar la características de Ruby tales como el valor predeterminado, como por ejemplo:

Código:

def MiMetodo(texto = "Hola", valor)
      msgbox_p(texto + valor)
end

MiMetodo("Gente")
=> Hola Gente

Pero de igual forma puedes utilizar el conocido valor opcional (argumento opcional), ejemplo:

Código:

def MiMetodo(texto = "Hola", * valor)
    .......
end

MiMetodo("Hola a toda la", "gente","de","MU")
=> Hola a toda la gente de MU

Creo que seria de esa manera.

#8 Re: RGSS3 Para principiantes - Parte III el Sáb Jul 11, 2015 8:36 pm

Natalie

avatar
Ah vale...y entonces como decide que argumento invoca primero, ¿por el orden en que se escriba? ¿o hay algún código con el que manipular el orden?

Muchas gracias a ambos por contestar a mis dudas! Ópalo Reputación Ópalo Reputación

#9 Re: RGSS3 Para principiantes - Parte III el Sáb Jul 11, 2015 9:00 pm

XSerozY

avatar
kyonides-arkanthos escribió:Disculpen la intromisión
Intromisión? Nada de eso! Todos estamos para aprender Opalo Hola

kyonides-arkanthos escribió:Bueno debo agregar algo para los que van aprendiendo desde cero y es que ningún nombre de método debería ir en mayúsculas. Verán, en otros lenguajes de programación podrá ser la costumbre, pero no en Ruby ni en RGSS(1/2/3). La forma de Ruby es con minúsculas y si está compuesto por varias palabras, cada palabra se une con un guión_bajo, valga la redundancia. No es recomendado utilizar símbolos o caracteres como vocales tildadas o eñes o cedillas, aunque no quiere decir que provoquen errores.

Debe ser la costumbre, uno se acostumbra a darle un Identificador a un método y recordarlo, no toma en cuenta esos detalles propios del lenguaje de programación. Y lo de los caracteres especiales, siempre me ha parecido un error, aunque el lenguaje lo permita.

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.