This shows you the differences between the selected revision and the current
version of the page.
es:wmebook:ch2 2013/04/07 18:34 | es:wmebook:ch2 2013/04/08 00:19 current | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | =====2. Guía para el sobreviviente de WME scripting===== | + | =====2. Guía para sobrevivir a la creación de scripts con WME===== |
Line 250: | Line 250: | ||
Hemos visto lo básico de las variables, hay mucho mas sobre ellas, pero lo iremos viendo | Hemos visto lo básico de las variables, hay mucho mas sobre ellas, pero lo iremos viendo | ||
conforme vayamos avanzando. | conforme vayamos avanzando. | ||
- | |||
Line 377: | Line 376: | ||
Bueno ya hemos visto lo básico de los arrays, mas adelante haremos referencias a ellos para ir | Bueno ya hemos visto lo básico de los arrays, mas adelante haremos referencias a ellos para ir | ||
viendo las funcionalidades de los scripts en WME. | viendo las funcionalidades de los scripts en WME. | ||
+ | |||
Line 657: | Line 657: | ||
puede tomar un valor entre 0 y 3( debido a la función Random ). Si a es igual a 0, se ejecutan | puede tomar un valor entre 0 y 3( debido a la función Random ). Si a es igual a 0, se ejecutan | ||
las tres sentencias que se encuentran tras el “case 0:” | las tres sentencias que se encuentran tras el “case 0:” | ||
+ | |||
+ | La palabra default, indica que ese bloque se ejecutará en caso de que el valor de la variable | ||
+ | sea diferente a las de los case anteriores. | ||
La palabra reservada break sirve para decirle a wintermute que termine de evaluar el valor | La palabra reservada break sirve para decirle a wintermute que termine de evaluar el valor | ||
Line 693: | Line 696: | ||
definición de una función que contiene el bucle, pero esto lo veremos mas adelante. Solo | definición de una función que contiene el bucle, pero esto lo veremos mas adelante. Solo | ||
comentarlo, no se pueden usar bucles en los switch. | comentarlo, no se pueden usar bucles en los switch. | ||
+ | |||
+ | |||
+ | |||
+ | |||
===== 2.3 Bucles ===== | ===== 2.3 Bucles ===== | ||
+ | Hay veces en las que es necesario repetir una acción o serie de acciones mas de una vez. WME | ||
+ | proporciona varias formas de implementar esto. | ||
+ | |||
+ | **Bucle for** | ||
+ | |||
+ | Empezaremos con la primera forma mediante el comando for, este comando es útil si sabemos | ||
+ | exactamente el número de repeticiones que queremos realizar, veamos como imprimir por | ||
+ | pantalla 10 veces el mensaje infierno: | ||
+ | |||
+ | <code script> | ||
+ | for( var a=0; a < 10; a= a+1) | ||
+ | { | ||
+ | Game.Msg(“infierno"); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Analicemos estas lineas, el comando for se divide en 3 partes separadas por punto y coma. | ||
+ | La primera parte “var a=0” en esta linea definimos e iniciamos la variable que se usará para | ||
+ | recorrer el bucle, en este caso hemos definido una variable a y le hemos dado el valor 0. | ||
+ | |||
+ | En la segunda parte “ a < 10 “ es la condición de fin, lo que indica es cuando terminará el | ||
+ | bucle, en este caso le hemos puesto menor que 10, luego el bucle se ejecutara mientras a sea | ||
+ | menor que 10. | ||
+ | |||
+ | y la ultima parte “ a= a + 1” lo que indica es que la variable “a” del bucle se incrementara en | ||
+ | 1 cada vez que ejecutan las instrucciones encerradas entre llaves, en este caso, | ||
+ | Game.Msg(“infierno”). | ||
+ | |||
+ | En esta ultima parte, la de como se modifica la variable del bucle, se puede usar cualquier | ||
+ | operación, suma, resta, multiplicación, etc, y cualquier valor, es decir no es necesario que vaya | ||
+ | de 1 en 1, puede ir de 2 en 2, también es posible usar atajos, con a++ “a” se incrementará en | ||
+ | 1, y con a-- “a” se decrementará en 1. Por ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | for( var a=0; a<10; a=a+2) | ||
+ | { | ||
+ | acciones; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | De esta forma, el bucle solo se ejecutaría 5 veces, ya que la variable del bucle se va | ||
+ | incrementando en 2 unidades cada vez que se ejecutan las acciones. | ||
+ | |||
+ | <code script> | ||
+ | for( var a=10; a == 0; a= a--) | ||
+ | { | ||
+ | acciones; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Como vemos en este en lugar de ir del 0 hacia arriba, vamos desde un valor hacia abajo, y | ||
+ | cuando la variable cumpla la condición de fin es decir cuando “a” sea igual que 0, el bucle | ||
+ | termina. | ||
+ | |||
+ | Una cosa importante, es el número de veces que se ejecutará el bucle, porque dependiendo de | ||
+ | la condición de fin y de la variación de la variable del bucle, el bucle se nos ejecutará ese | ||
+ | número de veces. Lo mejor es trabajar con ellos para coger soltura en el numero de | ||
+ | repeticiones que requerimos. | ||
+ | |||
+ | Pero veamos algunos ejemplos útiles, ¿recordáis los arrays? Pues los bucles son geniales para | ||
+ | recorrerlos, y no tener que ir uno a uno obteniendo los valores del array. | ||
+ | Veamos un script de ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | var miArray; | ||
+ | miArray[0]=”hola”; | ||
+ | miArray[1]=”¿que tal?”; | ||
+ | miArray[2]=”Adios”; | ||
+ | |||
+ | for( var a=0; a < 3;a= a + 1) | ||
+ | { | ||
+ | Game.Msg( miArray[a] ); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Como puedes ver es fácil imprimir por pantalla todos los elementos de un array. Espero que | ||
+ | estéis entendiendo su uso. Trabajando con ellos veréis que es una herramienta imprescindible | ||
+ | en programación. | ||
+ | |||
+ | **Bucle while** | ||
+ | |||
+ | Otro tipo de bucle es el llamado while. Este bucle es usado cuando no sabemos exactamente | ||
+ | cuantas veces se tendrán que ejecutarse las ordenes incluidas en el bucle. Veamos un ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | var a =0; | ||
+ | |||
+ | while( a != 5) | ||
+ | { | ||
+ | a= Random(0,5); | ||
+ | Sleep(1); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Como vemos, en el script anterior declaramos una variable a inicializada a 0, después tenemos | ||
+ | nuestro bucle while( condición). While significa mientras, luego mientras la condición que se | ||
+ | encierra entre paréntesis, sea verdadera, estaremos ejecutando el bucle. | ||
+ | |||
+ | ¿Cuando terminará el bucle? Pues terminará cuando la función Random(0,5) que esta dentro | ||
+ | del cuerpo del bucle asigne a nuestra variable “a” el valor 5, ya que en la condición | ||
+ | impusimos que el bucle se ejecutara mientras “a” fuera distinto de 5. | ||
+ | |||
+ | En este caso, la declaración y la definición de la variable del bucle, se realiza antes del bucle, | ||
+ | la condición se encuentra entre paréntesis tras la palabra reservada while, y la modificación | ||
+ | de la variable, se realiza dentro del cuerpo del bucle, así, dependiendo de lo que pase dentro | ||
+ | del bucle, este se ejecutara un número de veces, que a priori no conocíamos. | ||
+ | |||
+ | Importante: quizás te estés preguntando que es eso de sleep(1), simplemente es una función | ||
+ | que lo que hace es desactivar el juego durante el tiempo que se le ponga entre paréntesis, en | ||
+ | este caso 1 mili-segundo, esto es para evitar, que el bucle se coma todo el procesador y no deje | ||
+ | paso a los demás procesos del equipo, lo que hace que todo se relentice y pueda dar | ||
+ | problemas, es muy habitual usarlo en programación, pero hablaremos de el mas adelante. | ||
+ | |||
+ | **Bucles infinitos** | ||
+ | |||
+ | ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | while(true) | ||
+ | { | ||
+ | acciones; | ||
+ | Sleep(1); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Este es un bucle en el que la condición siempre es verdadera, por lo que siempre estará | ||
+ | ejecutándose, es muy común usar estos bucles en procesos de fondos, por ejemplo para la | ||
+ | musica, usas en el while una condición que compruebe si la música se esta reproduciendo o si | ||
+ | esta parada, si esta en play no hace nada, pero si no lo esta, podremos volver a reproducir la | ||
+ | misma, u otra canción. Para cosas como esta se usan los bucles infinitos. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== 2.4 Funciones ===== | ||
+ | |||
+ | Como ya hemos visto en el caso de Sleep() y Random(), hay una serie de herramientas | ||
+ | llamadas funciones. Con las funciones tenemos una buena forma de ahorrar tiempo, ya que si | ||
+ | tenemos que hacer algo varias veces a lo largo del juego, es tedioso tener que escribir el mismo | ||
+ | código varias veces. | ||
+ | |||
+ | Imagina el siguiente ejemplo: Se quiere imprimir 10 veces la palabra hola, pero quieres que | ||
+ | esto pase varias veces seguidas, sería tedioso hacer: | ||
+ | |||
+ | <code script> | ||
+ | for(var a=0; a < 10; a=a+1) Game.Msg(“hola”); | ||
+ | for(var a=0; a < 10; a=a+1) Game.Msg(“hola”); | ||
+ | for(var a=0; a < 10; a=a+1) Game.Msg(“hola”); | ||
+ | …. | ||
+ | </code> | ||
+ | |||
+ | Para esto podríamos crear una función: | ||
+ | |||
+ | <code script> | ||
+ | function hola() | ||
+ | { | ||
+ | for(var a =0; a<10;a++) | ||
+ | { | ||
+ | Game.Msg(“hola”); | ||
+ | } | ||
+ | return ; | ||
+ | } | ||
+ | hola();//imprime 10 veces en pantalla el mensaje hola | ||
+ | hola();//imprime 10 veces en pantalla el mensaje hola | ||
+ | hola();//imprime 10 veces en pantalla el mensaje hola | ||
+ | </code> | ||
+ | |||
+ | ¿Veis? esto simplifica el código. Una función es una pieza de código reutilizable, se define | ||
+ | como sigue: | ||
+ | |||
+ | <code script> | ||
+ | function nombre_de_la_funcion(parametros) | ||
+ | { | ||
+ | codigo de la funcion | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | El fin de la función es cuando se encuentra la palabra reservada return que en ciertos casos | ||
+ | podrá devolver algún dato que utilizaremos para controlar el programa. | ||
+ | |||
+ | Pero una función como la del ejemplo anterior no tiene mucha funcionalidad, la funcionalidad | ||
+ | se amplia cuando empezamos a hacer uso de los parámetros. Por ejemplo una modificación | ||
+ | del ejemplo anterior con mayor funcionalidad es el siguiente: | ||
+ | |||
+ | <code script> | ||
+ | function escribeTexto(texto, contador) | ||
+ | { | ||
+ | for( var a=0; a< contador; a++) | ||
+ | { | ||
+ | Game.Msg(texto); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | escribeTexto(“hola”,10); // se muestra 10 veces hola en pantalla | ||
+ | var b=5; | ||
+ | escribeTexto(“ring! Ring!” , b); // se muestra 5 veces por pantalla ring! Ring! | ||
+ | </code> | ||
+ | |||
+ | Como veis, mediante los dos parámetros texto y contador, le damos mucha funcionalidad a | ||
+ | nuestra función, ya que cuando queramos imprimir en alguna parte del juego un texto | ||
+ | repetidas veces en la pantalla podremos hacer uso de esta función, y no tener que hacer un | ||
+ | bucle cada vez que queramos realizar dicho propósito. | ||
+ | |||
+ | En la función escribeTexto(texto, contador), las variables texto y contador solo serán validas | ||
+ | dentro del cuerpo de la función, por lo que solo podremos usarlos dentro de la función, y no | ||
+ | fuera. | ||
+ | |||
+ | Bueno hemos visto como pasar datos a la función para que trabaje, pero ¿como hacemos para | ||
+ | que la función nos devuelva un valor con el que poder trabajar? | ||
+ | |||
+ | Por ejemplo en la función Random(a,b) la función nos devuelve un valor comprendido entre | ||
+ | “a” y “b”, Esto se realiza con la palabra return que indica que es lo que nos devolverá la | ||
+ | función, veamos un ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | function esMayor(number1,number2) | ||
+ | { | ||
+ | var mayor=false; | ||
+ | if(number1>number2) | ||
+ | { | ||
+ | mayor=true; | ||
+ | } | ||
+ | return mayor; | ||
+ | } | ||
+ | |||
+ | esMayor(5,1);//esta funcion devuelve un true | ||
+ | esMayor(2565,5678); //esta funcion devuelve un false | ||
+ | </code> | ||
+ | |||
+ | Como podemos intuir,, esta función comprueba el si el number1 pasado como parámetro, es | ||
+ | mayor que el number2, si esto es cierto, entonces cambia el valor de la variable a true, | ||
+ | mientras que si no es cierta, el valor de la variable mayor sera false como le dimos al | ||
+ | declararla, una vez que ha ejecutado todas las sentencias y llega a la palabra return, la | ||
+ | función, coge el valor que tiene la variable mayor y nos lo devuelve, este valor podríamos | ||
+ | almacenarlo en una variable, y trabajar posteriormente con el. | ||
+ | |||
+ | En este caso al tratarse de un valor booleano lo que devuelve la función, podríamos por | ||
+ | ejemplo emplearlo en condiciones directamente, veamos un ejemplo: | ||
+ | |||
+ | <code script> | ||
+ | if( esMayor(5,1) ) | ||
+ | { | ||
+ | Game.Msg(“el numero es mayor”); | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | Game.Msg(“el numero es menor”); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Como veis hemos metido una función que devuelve un valor booleano dentro de una condición, | ||
+ | conforme practiquéis, aprenderéis rápidamente como usar funciones con bucles, condiciones, | ||
+ | parámetros, arrays, etc. Llegará un momento en que aprenderéis a enlazar unas cosas con otras | ||
+ | y crear buenos trozos de código. | ||
+ | |||
+ | **Sexta regla de sintaxis** | ||
+ | |||
+ | Los nombres de funciones, solo pueden contener caracteres alfanuméricos, y sin espacios entre | ||
+ | caracteres. Ejemplos de nombres: | ||
+ | |||
+ | <code script> | ||
+ | escribirNumero() // correcta | ||
+ | reproducirSonido5() // correcta | ||
+ | escribir_Numero() // correcta | ||
+ | reproducir_Sonido() // correcta | ||
+ | escribir Numero() // incorrecta | ||
+ | reproducir*Sonido() // incorrecta | ||
+ | </code> | ||
+ | |||
+ | Debemos tener todo claro hasta este punto, si no es así, por favor revisa los capítulos | ||
+ | anteriores y podrás continuar sin problemas. Si algo no queda muy claro preguntad en foro | ||
+ | oficial y se contestará o se intentará modificar para aclararlo. | ||
+ | |||
+ | |||
+ | ===== 2.5 Clausula include ===== | ||
+ | |||
+ | Como hemos visto, las funciones ofrecen mucha potencia al programa, pero como no existe | ||
+ | ninguna manera de declarar una función global, como hacíamos con las variables, hay de | ||
+ | hacer que las funciones que están en un script, se puedan usar en otros scripts, para ello hay | ||
+ | dos maneras de hacerlo, mediante la palabra reservada includes, o mediante objetos. Pero | ||
+ | primero veamos como se usa include. | ||
+ | |||
+ | Si has echado un ojo a la demo de WME abras visto que cada script comienza con la linea: | ||
+ | |||
+ | <code script> | ||
+ | #include “scripts\base.inc” | ||
+ | </code> | ||
+ | |||
+ | Con esta linea, lo que estamos haciendo, es decir que queremos incluir este archivo de scripts | ||
+ | en el script donde estamos trabajando, en este caso estamos incluyendo el archivo base.inc que | ||
+ | tendrá una serie de funciones, variables, o trozos de código que podremos usar también en el | ||
+ | script donde lo incluyamos. Por ejemplo, si no quieres declarar tus variables globales cada vez | ||
+ | que las necesitas, puedes crear un fichero inc donde estén todas las variables globales | ||
+ | definidas, y ya con solo incluir este fichero con la palabra include, no tenemos que andar | ||
+ | escribiendo la declaración de las variables globales cada vez que vayamos a usarlas. También | ||
+ | es posible hacer esto con funciones, creas un fichero inc con las funciones, y después lo | ||
+ | incluiremos con la palabra reservada #include “ruta_y_nombre_del_archivo.inc”. | ||
+ | |||
+ | Así no tendremos que copiar el código de la función en cada script donde queramos usarlo. | ||
+ | |||
+ | **Nota:** fíjate que la linea #include “scripts/base.inc” no lleva punto y coma al final, y el nombre | ||
+ | y la ruta del archivo van entre comillas. | ||
+ | |||
+ | Importante: no inicialices nunca las variables en el fichero a incluir, ya que si haces eso, estas | ||
+ | se inicializarán cada vez que hagas una llamada a un script que incluya ese fichero. | ||
+ | |||
+ | |||
+ | |||
+ | ===== 2.6 Objetos ===== | ||
+ | |||
+ | Veamos ahora lo que aporta la mayor funcionalidad a WME, los objetos, bien, empecemos | ||
+ | despacio, imagina que tienes un objeto de la vida real, por ejemplo, una mesa. Pero claro el | ||
+ | termino mesa no nos dice nada, es abstracto, ya que la mesa puede estar echa de plástico, de | ||
+ | madera, de metal, puede tener distintos colores, puede ser cara o barata, etc tiene muchas | ||
+ | propiedades, quizá nos convendría tener todas estas propiedades juntas para una mesa. | ||
+ | |||
+ | <code script> | ||
+ | var mesa; | ||
+ | mesa.material=”madera”; | ||
+ | mesa.color=”negro”; | ||
+ | mesa.precio=100; | ||
+ | Game.Msg(mesa.precio); //se imprimirá el precio de la mesa por pantalla. | ||
+ | </code> | ||
+ | |||
+ | Bien, lo que hemos echo aquí, es definir una variable pero en lugar de acceder a esta variable | ||
+ | directamente, hemos agregado una serie de atributos a la variable, ya no usamos la variable | ||
+ | como un contenedor de un valor, sino que lo usamos para almacenar varias cosas, es muy | ||
+ | parecido a los arrays pero en lugar de acceder por la posición, accedemos por un nombre de | ||
+ | atributo. En el ejemplo anterior accedimos al atributo precio del objeto mesa. | ||
+ | |||
+ | <code script> | ||
+ | Game.Msg(mesa.precio); | ||
+ | </code> | ||
+ | |||
+ | Seguro que estarás pensando esto es fantástico y maravilloso, pero si quiero crear 10 mesas, | ||
+ | ¿necesito declarar 10 variables como esta? No, Seria muy tedioso. | ||
+ | Bien, la magia de los objetos no solo reside en sus atributos, sino que también se pueden | ||
+ | definir funciones para los objetos, todo el tiempo hemos estado trabajando con un objeto, | ||
+ | Game.Msg() y ahora acabas de descubrir que este método, es un método del objeto Game. | ||
+ | |||
+ | WME trabaja mucho con objetos, y conforme te adentres en su funcionamiento, más te darás | ||
+ | cuenta de lo importantes y útiles que son. | ||
+ | |||
+ | Bien, veamos como definir un objeto para algo mas de utilidad que para almacenar atributos. | ||
+ | |||
+ | Bien primero crearemos un fichero donde definiremos un objeto, le llamaremos por ejemplo | ||
+ | mesa.script | ||
+ | |||
+ | <code script> | ||
+ | #include “scripts\base.inc” | ||
+ | method initialize(material, color, precio) | ||
+ | { | ||
+ | this.material=material; | ||
+ | this.color=color; | ||
+ | this.precio=precio; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | **Septima regla de sintaxis** | ||
+ | |||
+ | Si quieres acceder al atributo o funcion de un objeto, usamos un punto como hemos visto en | ||
+ | los ejemplos anteriores. | ||
+ | |||
+ | Usamos la palabra this, ya que como no sabemos a priori como le llamaremos al objeto, pues | ||
+ | this, es una palabra reservada para referirse al objeto el cual estamos creando. | ||
+ | |||
+ | Esta es la manera correcta de definir la inicialización de un objeto. | ||
+ | |||
+ | Veamos ahora una vez que hemos definido el objeto mesa.script como crear un objeto de este | ||
+ | tipo. | ||
+ | |||
+ | <code script> | ||
+ | Var mesa1 = new Object(“mesa.script”); | ||
+ | </code> | ||
+ | |||
+ | De esta manera creamos un objeto de tipo mesa, ahora podemos definir sus propiedades | ||
+ | llamando al método iniciar que creamos en el archivo mesa.script de la siguiente manera: | ||
+ | |||
+ | <code script> | ||
+ | mesa1.iniciar(“madera”,”negra”,100); | ||
+ | </code> | ||
+ | |||
+ | De esta manera en nuestra mesa ya quedarán definidos sus tres atributos, pudiendo acceder a | ||
+ | ellos con el nombre_del_objeto.nombre_del_atributo: | ||
+ | |||
+ | <code script> | ||
+ | mesa1.material: | ||
+ | mesa1.color; | ||
+ | mesa1.precio; | ||
+ | </code> | ||
+ | |||
+ | Podemos ir mas allá, veamos por ejemplo como crear 10 objetos de tipo mesa usando un bucle: | ||
+ | |||
+ | <code script> | ||
+ | for( var a=0;a <10;a++) | ||
+ | { | ||
+ | mesas[a]= new Object(“mesa.script”); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Aquí tenemos que tener cuidado, ya que no podemos hacer mesas[a].iniciar(material,color,precio); | ||
+ | ya que WME no soporta esto, para solucionarlo debemos hacer uso de una variable temporal, que | ||
+ | almacene cada objeto, lo inicialice y después lo vuelva a almacenar en el array. | ||
+ | |||
+ | <code script> | ||
+ | var temp = mesas[a]; | ||
+ | temp.iniciar(“madera”,”negra”,100); | ||
+ | mesas[a]=temp; | ||
+ | </code> | ||
+ | |||
+ | Con estas tres lineas, obtenemos una de las mesas del array, la iniciamos, y después la | ||
+ | volvemos a guardar en el array, esto es necesario ya que como hemos dicho wme no soporta el | ||
+ | acceso a los atributos o métodos de los objetos guardados en un array. | ||
+ | Y ya solo se trata de practicar por unos mismo, y seguir con el tutorial que a partir de aquí | ||
+ | creo que con esto no tendrás problemas para entender lo siguiente. | ||
+ | |||
+ | También es posible crear mas métodos para el objeto mesa, simplemente, en el fichero mesa.script | ||
+ | que habíamos creado, podemos añadir un método por ejemplo para cambiar el color de la mesa. Pues | ||
+ | añadiremos en el fichero del objeto mesa el siguiente método: | ||
+ | |||
+ | <code script> | ||
+ | method cambiarColor(color) | ||
+ | { | ||
+ | this.color=color; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Y cuando creemos un objeto de tipo mesa, podremos cambiar el color de la mesa usando este método. | ||
+ | |||
+ | <code script> | ||
+ | var mesa = new Object("mesa.script");//creamos el objeto | ||
+ | mesa.iniciar("metal","roja",300);// iniciamos sus valores | ||
+ | Game.Msg(mesa.color);//se imprimirá en pantalla roja | ||
+ | mesa.cambiarColor("azul");//cambiamos el color | ||
+ | Game.Msg(mesa.color);//se imprimirá en pantalla azul | ||
+ | </code> | ||
+ | |||
+ | De esta manera podemos crear métodos para los objetos. | ||
+ | |||
+ | **Nota:** Método y función vienen a ser prácticamente lo mismo, con la diferencia principalmente de | ||
+ | que las funciones tienen funcionalidad por si solas, y los métodos siempre actúan sobre algún objeto. | ||