martes, 23 de julio de 2013

Lección 1: Clases, Métodos y Herencias

Vamos a utilizar mas las clases, métodos y una nueva palabra se nos une que son las herencias.

 Primero les pondre un solo video que esta en Ingles, no se preocupen los que no saben porque hablaremos ahora de lo que dice el video.


------------------------------------   HERENCIA   ----------------------------------------------------------

Herencia: Son todos los datos que recibe nuestra función a partir de otra función, se asignan a la funcion que usamos con el simbolo " < " despues del nombre (ejemplo: Nueva_Informacion < Scene_Base )

-----------------------------------------------------------------------------------------------

 Hoy haremos nuestra primera ventana wuuuuuujuuuuu!!! es para esto que haremos un nuevo script, el anterior si quieren lo guardan (no impide el funcionamiento del que haremos), ahora como siempre definiremos nuestra clase como class seguido de un nombre cualquiera, en mi caso yo le pondré Window_Nuevo.

 A esta nueva clase, le heredaremos los datos de otra funcion que es la más conocida por algunos que intentaron hacer un script, la famosa Window_Base , nos quedaría

class Window_Nuevo < Window_Base

 Que significa esto, que nuestra funcion obtendra todos los datos de la Window_Base, asi como faces, portraits, colores, etc. todos los datos que encontraremos en el script llamado Window_Base.

 Lo que sigue es generar la ventana, para esto como siempre despues de una clase, generaremos el método initialize

class Window_Nuevo < Window_Base
   def initialize

 Y generaremos la ventana, colocando super(x,y,width,height) , donde
                x : posicion en el eje X
                y:  posicion en el eje Y
                width: ancho de la ventana
               height: alto de ventana

Uno le ponde el tamño de la ventana que quiere en esos datos, luego de esto cerraremos el método y la clase, Nos estaría quedando así

class Window_Nuevo < Window_Base
  def initialize
       super(0,0,320,240)
  end
end

Luego de esto llamaremos a otra famosa funcion, por lo que generaremos otra clase pero esta vez le pondremos Scene o escena, yo le pondre Scene_Nuevo y la heredaremos de la famosa Scene_Base
por lo tanto nos queda Scene_Nuevo < Scene_Base.

Crearemos 3 metodos dentro de este, el primero es el que arrancara nuestra pantalla, el segundo hara que se renueve en cada movimiento y el tercero es el que la cerrara

 la primera la definiremos como def start, dentro de ella pondremos una variable de clase que hara que obtenga los valores nuestra ventana @ventana = Window_Nuevo.new   , cerraremos este metodo.

 la segunda la definiremos como def update, dentro de ella haremos que devuelva al mapa donde estabamos antes de abrir nuestra ventana, para ello hay que hacer una aclaracion... son distintos metodos para el rmvx y para el rmvx ace, por tanto pondré las dos formas y de ahi veremos que nos va mejor.


  • RMVX:   Para esta colocaremos nuestra variable de clase seguida de " .update ", quedaria @ventana.update , si queremos que con apretar el boton Z se salga de la ventana podremos if Input.trigger?(Input::C) y debajo de este pondremos que la escena cambia a la escena del mapa, de esta manera $scene=Scene_Map.new
                       class Window_Nuevo < Window_Base

                         def initialize
                               super(0,0,320,240)
                         end
                      end
                      class Scene_Nuevo < Scene_Base
                         def start
                              @ventana=Window_Nuevo.new
                         end
                         def update
                               @ventana.update
                               if Input.trigger?(Input::C)
                                    $scene=Scene_Map.new
                              end
                         end


  • RMVX Ace: ¿Porque son distintos? la verdad no sabría explicar el porque, pero debe tener relacion a que Scene_Base en la parte que dice update, especifica que antes de todo va super(), esta es la forma que tambien tiene cada cosa para poder anotarla en cada script, para que cada una funcione, lo mas probable es que sea asi....    seguimos, para esta colocaremos super() seguido de la variable que pusimos antes con " .update " quedaria asi @ventana.update  , si queremos que con apretar el boton Z se salga de la ventana podremos if Input.trigger?(Input::C) y debajo de este pondremos que la escena cambia a la escena del mapa, de esta manera SceneManager.call(Scene_map) de esta manera llamaremos al mapa en el que estabamos, luego cerramos


                       class Window_Nuevo < Window_Base

                         def initialize
                               super(0,0,320,240)
                         end
                      end
                      class Scene_Nuevo < Scene_Base
                         def start
                              @ventana=Window_Nuevo.new
                         end
                         def update
                               super()
                               @ventana.update
                               if Input.trigger?(Input::C)
                                     SceneManager.call(Scene_map)
                              end
                         end

 Finalmente terminaremos con el ultimo metodo que sera def terminate , abajo de el pondremos nuestra variable @ventana con " .dispose " por lo tanto quedaria @ventana.dispose, de esta manera terminamos cerrando la clase Scene_Nuevo

 Para llamar a la ventana desde el juego, crearemos un evento que tendra llamar script, para el RMVX pondremos $scene=Scene_Nuevo.new   y para el RMVX Ace pondremos SceneManager.call(Scene_Nuevo), finalmente podremos ver la ventana en el juego y asi tendremos nuestra primera ventana ya hecha ^^



Una acotacion... dentro de def initialize podremos colocar las cosas que mostraremos dentro de la ventana, de esta manera podremos por ejemplo colocar la cara del primer personaje del juego, para poder ver como colocarlo, simplemente nos vamos en los scripts, en el que dice Window_Base y buscamos dentro de el draw_face (o mas facil lo buscamos con el buscador de script) vemos la primera linea para ver como se ponde y lo colocamos en el script nuevo que hacemos. De esta manera les dejare la tarea.

---------------------------------------   Tarea ------------------------------------------

 Viendo el video en ingles (que no sera dificil de encontrar tampoco) deberan hacer aparecer la cara del 3 personaje del maker y al lado de este la barra de vida

 Cualquier consulta de esto, me preguntan, de todas manera pondre la solucion en la siguiente leccion

------------------------------------------------------------------------------------------

 ES TODO POR AHORA!! ahora a investigar por ahi, pueden leer el tecto guia de Necrozard que les entregue para ver como colocar mas cosas, asi se les facilitará la vida, por mientras...


                                                         


SOLUCIÓN TAREA: Agregue una cosa extra que es la barra de mp del personaje 3 y agrande la ventana

class Window_Nuevo < Window_Base
  def initialize
    super(0,0,545,415)
    actor = $game_actors[3]
    draw_actor_face(actor, 5, 0)
    draw_actor_hp(actor, 160, 0)
    draw_actor_mp(actor, 160, 50)
  end
end
class Scene_Nuevo < Scene_Base
  def start
    @ventana = Window_Nuevo.new
  end
  def update
    super()
    @ventana.update
    if Input.trigger?(Input::C)
      SceneManager.call(Scene_Map)
    end
  end
  def terminate
    @ventana.dispose
  end

end


                             

2 comentarios:

  1. Vale ya te he mandado por privado el script.
    Esta pagina es muy buena para aprender Rurby, la recomiendo :)

    ResponderEliminar
  2. eeeellla la del blog de la feña
    ella la bloggera
    ella la hola soy germana

    ResponderEliminar