¡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 Manejo Básico de Scripts el Miér Abr 03, 2013 4:16 pm

youkai

avatar
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:
Código:
class Yo < Tu
end
En este caso, la clase Yo sera la subclase de Tu, heredando sus metodos y variables.
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
No importa como quieran escribirlas, siempre que empiecen con $, son 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:
Código:
@actor  @You_Kai    @lol
Al igual que las globales, como quiera que las escribas, mientras empiecen con @, seran variables de instancia.

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
Ejemplo de uso:
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
Ese codigo dejara de llamar al metodo y pasara a ser una variable local de valor 3. Entienden? xD No se preocupen, cuando pasen ese tipo de cosas, lo que se usa para llamar el metodo es:
Código:
self.index
Ya que si agregamos a self entonces buscara obligatoriamente un metodo contenido en la clase que trabajamos o superclase de la que estamos trabajando.

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
Dentro de un metodo es donde se desarrolla la mayor parte de un script. Se crean y se llaman variables. En su interior se realizan calculos, modificaciones a otras variables o lo que quieras hacer. Siempre que son llamados devuelven un valor, el cual puede ser el de la ultima variable escrita en el metodo o el ultimo valor devuelto por cualquier otro metodo llamado desde su interior.
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
Como ven, este metodo te pide que le des un valor para las variables locales x ý y. Si no le pasas valores o argumentos para esas variables resultara en un error. En el ejemplo anterior pueden observar diversas cosas de las que habia hablado, tales como el llamar a otro metodo dentro de un metodo(move_actor_alinfinito) y la forma de pasarle los argumentos a un metodo que los pida. Es importante respetar el orden, en este caso al pasar los argumentos quedo de esta forma: x = 5, y = 3
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

#2 Re: Manejo Básico de Scripts el Jue Feb 06, 2014 9:32 pm

~Night Shade

avatar
Ya habia leido todo eso en maker palace, pero gracias por el tutorial ^^

Es bueno ver que hay scripters aqui.

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.