youkaiJue Mar 28, 2013 3:22 pm
Moderador
Bueno, como pueden leer en el título de este post; el amigo youkai intentará, si, intentará hacer un tuto en español de como manejarse un poco con los scripts xD
Let's begin!
Vocabulario
Lo pongo primero para que desde ya sepan que es lo que voy a estar hablando.
Bloque de código: Es un conjunto de lineas de códigos agrupadas bajo una misma condición o bajo un mismo llamado.
Bucle: Bloque de código que se repite una X cantidad de veces.
Metodo: Es el bloque de códigos que empieza en def y termina en end.
Compilar: Es el proceso que realiza la maquina para traducir todos los códigos a lenguaje de maquina para de esta forma poder ejecutarlos.
Compilador: El que realiza la compilación. (y de este tema no me pregunten mucho mas que no lo domino bien xP)
clase: Una clase es un bloque de codigos que define objetos mediante metodos y otros bloques de codigos.
objeto: En Ruby casi todo son objetos. Todo lo que se cree mediante una clase se convierte en un objeto. Game_Actor, Scene_Menu, Window_Status, todo eso son objetos.
subclase: Es una clase la cual se deriva de otra adquiriendo los metodos y variables de su superclase o clase padre. La forma de definir una subclase es usando el operador '<', ejemplo:
Un ejemplo en el maker se ve esto en:
Game_Player, Game_Event que son subclases de Game_Character.
superclase: Es la clase padre de una subclase. Es aquella que va a pasar a sus subclases sus metodos y variables.
Pseudo Variables
nil: Significa nulo.
self: Se refiere a la propia clase en ejecución.
Estructura del Editor de Scripts y la forma en que funciona:
Como pueden haberse dado cuenta, el editor de scripts esta formado por diversas paginas que contienen bastantes lineas y bloques de códigos. Como quiza piensen, la maquina NO EJECUTA los codigos de arriba hacia abajo, los lee, pero no los ejecuta; de hecho, se empieza desde Main. Los codigos se leen en un orden logico y ordenado. Si se fijan, en Main encontraran una linea que dice:
$scene = Scene_Title.new
Eso significa que empieza a ejecutar desde Scene_Title. Si quieren ver que es lo que llamara después, lean en Scene_Title.
Dentro de un bloque de codigos es que se leen de arriba a abajo.
Variables de Ruby:
El procedimiento de asignacion de valores a las variables se hace de la siguiente forma:
variable = valor
Las variables SOLO PUEDEN GUARDAR UN VALOR.
Ruby tiene diversos tipos de variables: globales, de instancia, locales y globales.
Globales: Toda variable que empiece con el simbolo de dinero($) se considera una variable global. A todas las variables globales se puede acceder desde cualquier parte del programa para leerlas o modificarlas.
Ejemplo de variables globales:
De Instancia: Toda variable que empiece con una arroba(@) es considerada una variable de instancia. A este tipo de variable solo se pueden acceder desde cualquier metodo de su clase o subclase.
Ejemplo:
A todas estas variables explicadas anteriormente si se les intenta llamar sin haberles asignado un valor, tomaran automáticamente como valor nil.
Constantes: Las variables que comiencen con la letra inicial mayuscula son consideradas variables constantes. Su valor no se le puede modificar una vez asignado, si intentas modificarles su valor desde otra parte del programa, resultara en un error. Si se intenta llamar a una constante indefinida tambien resultara en un error.
En toda clase o metodo en que se defina una constante, se les puede llamar desde una subclase, clase que incluya el metodo en que fue creada o desde el mismo metodo. Para llamar una constante de fuera de su clase o metodo, se usa el operador '::' (sin comillas)
Ejemplo:
Locales: (Este tipo de variable es un poco pesada de explicar...xD pueden ser confusas)
El problema con las variables locales es que coinciden con las llamadas de metodos. Por ejemplo, en las Windows index es el metodo que determina la posicion del cursor, pero si hacemos esto:
Entonces, volviendo al tema. Las variables locales y llamadas a metodos empiezan con letra minuscula o '_'. Intentar llamar a una variable local indefinida resultara en una llamada a metodo.
Metodos:
Los metodos, como explique anteriormente, son aquellos bloques de codigo que empiezan en def y terminan en end.
Tambien ellos pueden pedir argumentos para funcionar. En este caso serian de esta manera:
Pero si hubiesemos pasado los argumentos al reves hubiese sido: x = 3, y = 5
Si hubiesemos pasado un argumento de mas daria error, al igual que si hubiesemos dejado uno.
Errores clásicos en los scripts:
SyntaxError: Ocurre tras un error de sintaxis en la programacion. Un end que falte, un parentesis extra o cualquier cosa que sea de agrupamiento de datos que no este cerrado.
ArgumenError: Ocurre al intentar pasarle a un metodo un numero incorrecto de argumentos.
NameError: Ocurre al intentar llamar a una variable local o constante indefinida.
NoMethodError: Ocurre al llamar un metodo inexistente.
ZeroDivisionError: Ocurre al intentar realizar una division por 0.
Bueno...creo que eso es suficiente como para fundirlos a todos y que no entiendan nada xDD De todas forma, que conste que yo hice lo mejor posible para ser explícito...
Saludos,
¥oukai
PD: Perdónenme la ortografía, yo quería escribir bien, pero escribí demasiado. xD
Let's begin!
Vocabulario
Lo pongo primero para que desde ya sepan que es lo que voy a estar hablando.
Bloque de código: Es un conjunto de lineas de códigos agrupadas bajo una misma condición o bajo un mismo llamado.
Bucle: Bloque de código que se repite una X cantidad de veces.
Metodo: Es el bloque de códigos que empieza en def y termina en end.
Compilar: Es el proceso que realiza la maquina para traducir todos los códigos a lenguaje de maquina para de esta forma poder ejecutarlos.
Compilador: El que realiza la compilación. (y de este tema no me pregunten mucho mas que no lo domino bien xP)
clase: Una clase es un bloque de codigos que define objetos mediante metodos y otros bloques de codigos.
objeto: En Ruby casi todo son objetos. Todo lo que se cree mediante una clase se convierte en un objeto. Game_Actor, Scene_Menu, Window_Status, todo eso son objetos.
subclase: Es una clase la cual se deriva de otra adquiriendo los metodos y variables de su superclase o clase padre. La forma de definir una subclase es usando el operador '<', ejemplo:
- Código:
class Yo < Tu
end
Un ejemplo en el maker se ve esto en:
Game_Player, Game_Event que son subclases de Game_Character.
superclase: Es la clase padre de una subclase. Es aquella que va a pasar a sus subclases sus metodos y variables.
Pseudo Variables
nil: Significa nulo.
self: Se refiere a la propia clase en ejecución.
Estructura del Editor de Scripts y la forma en que funciona:
Como pueden haberse dado cuenta, el editor de scripts esta formado por diversas paginas que contienen bastantes lineas y bloques de códigos. Como quiza piensen, la maquina NO EJECUTA los codigos de arriba hacia abajo, los lee, pero no los ejecuta; de hecho, se empieza desde Main. Los codigos se leen en un orden logico y ordenado. Si se fijan, en Main encontraran una linea que dice:
$scene = Scene_Title.new
Eso significa que empieza a ejecutar desde Scene_Title. Si quieren ver que es lo que llamara después, lean en Scene_Title.
Dentro de un bloque de codigos es que se leen de arriba a abajo.
Variables de Ruby:
El procedimiento de asignacion de valores a las variables se hace de la siguiente forma:
variable = valor
Las variables SOLO PUEDEN GUARDAR UN VALOR.
Ruby tiene diversos tipos de variables: globales, de instancia, locales y globales.
Globales: Toda variable que empiece con el simbolo de dinero($) se considera una variable global. A todas las variables globales se puede acceder desde cualquier parte del programa para leerlas o modificarlas.
Ejemplo de variables globales:
- Código:
$scene $game_variables $DEBUG $YouKaI
De Instancia: Toda variable que empiece con una arroba(@) es considerada una variable de instancia. A este tipo de variable solo se pueden acceder desde cualquier metodo de su clase o subclase.
Ejemplo:
- Código:
@actor @You_Kai @lol
A todas estas variables explicadas anteriormente si se les intenta llamar sin haberles asignado un valor, tomaran automáticamente como valor nil.
Constantes: Las variables que comiencen con la letra inicial mayuscula son consideradas variables constantes. Su valor no se le puede modificar una vez asignado, si intentas modificarles su valor desde otra parte del programa, resultara en un error. Si se intenta llamar a una constante indefinida tambien resultara en un error.
En toda clase o metodo en que se defina una constante, se les puede llamar desde una subclase, clase que incluya el metodo en que fue creada o desde el mismo metodo. Para llamar una constante de fuera de su clase o metodo, se usa el operador '::' (sin comillas)
Ejemplo:
- Código:
GLOBAL Global YouKai
- Código:
class Youkai
Me = 5
end
class Tu < Youkai
p Me # => 5
end
p Youkai::Me # => 5
Locales: (Este tipo de variable es un poco pesada de explicar...xD pueden ser confusas)
El problema con las variables locales es que coinciden con las llamadas de metodos. Por ejemplo, en las Windows index es el metodo que determina la posicion del cursor, pero si hacemos esto:
- Código:
index = 3
- Código:
self.index
Entonces, volviendo al tema. Las variables locales y llamadas a metodos empiezan con letra minuscula o '_'. Intentar llamar a una variable local indefinida resultara en una llamada a metodo.
Metodos:
Los metodos, como explique anteriormente, son aquellos bloques de codigo que empiezan en def y terminan en end.
- Código:
def initialize
@foo = 5
if @foo == 5
@foo
end
for e in 0..@foo
@foo = @foo + e
end
end
Tambien ellos pueden pedir argumentos para funcionar. En este caso serian de esta manera:
- Código:
def mov(x, y)
if x == 5 and y == 3
move_actor_alinfinito
end
end
def algo
mov(5, 3)
end
Pero si hubiesemos pasado los argumentos al reves hubiese sido: x = 3, y = 5
Si hubiesemos pasado un argumento de mas daria error, al igual que si hubiesemos dejado uno.
Errores clásicos en los scripts:
SyntaxError: Ocurre tras un error de sintaxis en la programacion. Un end que falte, un parentesis extra o cualquier cosa que sea de agrupamiento de datos que no este cerrado.
ArgumenError: Ocurre al intentar pasarle a un metodo un numero incorrecto de argumentos.
NameError: Ocurre al intentar llamar a una variable local o constante indefinida.
NoMethodError: Ocurre al llamar un metodo inexistente.
ZeroDivisionError: Ocurre al intentar realizar una division por 0.
Bueno...creo que eso es suficiente como para fundirlos a todos y que no entiendan nada xDD De todas forma, que conste que yo hice lo mejor posible para ser explícito...
Saludos,
¥oukai
PD: Perdónenme la ortografía, yo quería escribir bien, pero escribí demasiado. xD