martes, 30 de julio de 2013

Conceptos Básicos III: Boolean, Arrays y return


 Dejaremos de lado un rato la lección 2, debido a que debemos aprender más conceptos básicos antes de seguir, es por eso que de ahora en adelante para aprender nuevas cosas, las haremos mediante el titulo de "Conceptos Básicos" , para luego dar paso a la leccion....

 Es por eso que de ahora en adelante y lo más probable es que los conceptos básicos se aprendan con las ventanas de windows, antes de meterse al juego a apretar en un evento a que salga algo..

 una cosa importante para los que usan el rmvx ace, lo mas probable es que los resultados no les salga al apretar probar juego, para que les salga el resultado hay que activar la ventana "mostrar consola", esta se encuentra en la pestaña juego

 Con esta reseña, aprenderemos lo que son boolean, arrays y returns

------------------------------- BOOLEAN -------------------------------------

 ¿Qué es el boolean? es simplemente una manera para que nos diga si lo que estamos comparando es cierto o no, se le puede poner cualquier nombre aunque preferentemente es mejor ponerle el nombre boolean, seguido de las variables que se van a comparar, el resultado sera que entregue un true si es verdad la sentencia o un false si es falso, ejemplos:

def ejemplo
  local1=13
  local2=56
  boolean = local1 <= local2
  print boolean
end
ejemplo()

 De paso... el ejemplo anterior se puede hacer tambien colocando sentencia if ( si, condicional) de esta manera tambien podria quedar

def ejemplo
  local1=13
  local2=56
  if local1 < local2
     print true
  else # esto significa de otro modo, o sea si no se cumple el if se hara lo siguiente
     print false
  end
end
ejemplo()

------------------------------ ARRAY ------------------------------------------

  Es lo que se le denomina "matriz", se le pueden colocar numeros, frases, true, false, etc; dentro de ella se le pone un nombre cualquiera seguido de un igual y de [ ], adentro de estos se le colocan los datos, ejemplo

matriz = [1,2,3,4,5]

la posicion que lleva cada numero dentro de la matriz parte del 0, entonces el numero 1 lleva la posicion 0 de la matriz o array por lo tanto si quiero ver que numero esta en la primera posicion, el primer numero tendria que poner matriz[0].

ejemplo en el maker
class Mensaje
  def initialize
 
  end
  def ejemplo
    matriz = [300, 1234, 21, 4321, 5]
    print matriz[0]
    print matriz[3]
  end
end
Mensaje=Mensaje.new
Mensaje.ejemplo

¿Porqué en matriz[3] salio el cuarto número?....

La matriz puede ser tan grande como uno quiera, incluso seguir poniendo numeros despues de apretar enter, siempre y cuando el final de la matriz termine con un "]" despues de eso, significa que la matriz termino

se puede saber el tamaño de la matriz poniendo print matriz.size

class Mensaje
  def initialize
 
  end
  def ejemplo
    matriz = [300, 1234, 21, 4321, 5]
    print matriz.size
  end
end
Mensaje=Mensaje.new
Mensaje.ejemplo

  Tambien se pueden modificar los valores dentro de la matriz, simplemente llamando al valor que queremos y colocandole una igualdad con el otro valor que queremos matriz[0] = false

  Se pueden agregar cosas a la matriz, llamando a la matriz luego el tamaño y luego lo que queramos, de esta manera

class Mensaje
  def initialize
 
  end
  def ejemplo
    matriz = [300, 1234, 21, 4321, 5]
    print matriz.size
    matriz[matriz.size] = "miro"  # aqui agregamos una palabra, por lo que cambio de 5  a 6
    print matriz.size
  end
end
Mensaje=Mensaje.new
Mensaje.ejemplo

 de esta manera ahora la matriz pasó de ser tamaño 5 a 6...



-----------------------------  RETURN ------------------------------------------

 Los return se podrian llamar retornos o quiebres, seran quiebres si no llevan nada a su lado y serán retornos si llevan algun valor, ejemplo de esto seran asi

de quiebre:

def ejemplo
  return
  local1=13
  local2=56
  result = local1 + local2
  print result
end
ejemplo()

de retorno:

class Mensaje
  def initialize
 
  end
  def ejemplo
    local1=13
    local2=56
    return(local1+local2)
  end
end
Mensaje=Mensaje.new

Mensaje.ejemplo



-------------------------------------- TAREA ----------------------------------------------


  Les dejare una tarea bastante pensadora, pero se entretendrán mientras estoy haciendo la leccion 2, tendran que hacer 2 arrays, el primero tendra 6 numeros y el segundo tendra 5 valores. La idea es que compare, el primer valor con el segundo y si este es menor, que coloque en la segunda matriz true, de no ser menor, tendra que colocar en la segunda matriz false...  cualquier duda me preguntan y les pondre en la leccion2 la solucion :)) , si les crea problemas que la segunda tenga 5 valores pueden hacerla de 6, aunque no es la idea ;)


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

 Ahora si me despido y espero que sigamos aprendiendo, lamento los atrasos, yo tampoco quería atrasarme, pero hay fuerza mayor en este caso u_u , cualquier problema o aclaracion con el tutorial me avisan al correo o lo ponen en el comentario, inviten amigos para que nos sigan que ya no paramos hasta hacer algo bueno como script :)) por lo demás POR FIN puedo decir...



Problemas

 Les informo que no eh subido nada porque mi otro comptador murio y en el que estoy ahora no tiene el rpg maker, encontre uno en español, pero al intentar ver los script y hacerlos no me lo reproduce, siendo que ya los habiamos visto, es por eso si tienen el instalador del rmvx ace por favor haganmelo llegar al correo o envienme un mp a mi usuario... es de suma urgencia o sino nos retrasaremos mas y mas :(

domingo, 28 de julio de 2013

Proximamente

  Les informo que estoy atrasado con las lecciones, debido a que mi computador se esta hechando a perder y no me deja ver cosas en la pantalla y por eso no eh subido nada ultimamente, por mientras espero que sigan aprendiendo de cosas extras que trae el libro de necrozard que les envie y que vean el siguiente video que es este y solamente para los que sepan ingles la siguiente leccion hablaremos de lo que dice que son 2 videos largos pero son bastante buenos, espero tener lista la leccion antes del martes y asi poder seguir lo mejor posible, lo siento y espero que tampoco se vayan y vean continuamente la pagina...


miércoles, 24 de julio de 2013

ANEXO I : Cosas del Window_Base

 Para ayuda en la tarea de la lección 1 pondremos acá todas las cosas que pueden ir en la clase Window_Base, un acotacion será que estas cosas funcionan si o si para el rmxv, pero no se si en realidad para el vx ace, aunque en intentarlo no hay nada de malo:

text_color(n): Con este método puedes cambiar el color de un texto cualquiera. Indicando en n
el número del color.
draw_icon(icon_index, x, y): Este método sirve para dibujar en la ventana un icono cualquiera,
donde icon_index, indica el ID del icono, x e y, las coordenadas para situarlo.
draw_face(face_name, face_index, x, y): Este método sirve para dibujar la Cara (Face) de
cualquier persona o héroe dentro de la ventana, donde face_name va el nombre del archivo de
las faces (Actor1, People1, etc), donde face_index, ahi va el ID de la Face dentro de la imagen
de Faces, y después x e y como coordenadas para la ubicación.
draw_character(character_name, character_index, x, y): Dibuja el gráfico de un character
(personaje), donde character_name va el nombre del gráfico donde esta el character que quieres
poner, donde character_index es el ID del personaje dentro de la imagen, y posteriormente las
coordenadas x e y.
draw_actor_graphic(actor, x, y): Dibuja el gráfico de uno de los personajes, donde actor debes
indicar que actor es, pero no su ID, debes indicarlo de una forma de más compleja. En actor
debes poner: $game_actors[id], ahora si, donde id, va el ID, del personaje, puedes asignarlo a
una variable para no tener que ponerlo cada vez que uses un comando que requiera el ID del
actor.
draw_actor_face(actor, x, y): Dibuja el gráfico de la cara de cierto personaje, donde actor, va lo
mismo que dijimos en el método anterior: $game_actors[id], después las coordenadas x e y para
la posición.
draw_actor_name(actor, x, y): Dibuja el nombre de cierto héroe, donde actor va lo mismo que
dijimos en el método anterior, después las coordenadas x e y.
draw_actor_class(actor, x, y): Dibuja la clase de cierto personaje, donde actor va de que héroe
quieres que se sepa la clase, y posteriormente las coordenadas.
draw_actor_level(actor, x, y): Dibuja el nivel de cierto personaje dentro del grupo, donde actor
va de que héroe quieres saber el nivel, y los siguientes las coordenadas.
draw_actor_state(actor, x, y): Dibuja el estado de cierto héroe, donde actor va de que héroe
quieres que se sepa el estado, y después las coordenadas x e y.
draw_actor_hp(actor, x, y): Dibuja el HP/VIDA, de cierto personaje, donde actor va de que
héroe quieres que se sepa el HP/VIDA, y posteriormente las coordenadas para su posición.
draw_actor_hp_gauge(actor, x, y): Dibuja la barra de vida de cierto personaje, donde actor va de
que héroe quieres que se sepa la vida, y después las coordenadas x e y.
draw_actor_mp(actor, x, y): Dibuja el MP/PODER MAGICO, de cierto personaje, donde actor
va de que héroe quieres que se sepa el MP/PODER MAGICO, y posteriormente las coordenadas
para su posición.
draw_actor_mp_gauge(actor, x, y): Dibuja la barra de poder de cierto personaje, donde actor va
de que héroe quieres que se sepa el poder mágico, y después las coordenadas x e y.
draw_actor_parameter(actor, x, y, type): Dibuja cierto parametro indicado en type, donde actor
va de que héroe quieres que se sepa el parámetro, x e y las coordenadas, y en type va un numero
del 0 al 3, donde: 0 = ATK; 1 = DFS; 2 = SPI; 3 =AGI
draw_item_name(item, x, y): Dibuja el nombre de cierto item, donde item, se indica el ID del
item, posteriormente las coordenadas x e y.


**  Hay ciertos métodos que necesitan un parámetro actor, alli debes indicar lo siguiente:
$game_actors[id]
Donde id, va el ID de la Base de Datos de la sección Personajes, si es el principal, es 1.**


Gracias al libro de Necrozard :))


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


                             

Introduccion: Conceptos Básicos II

 Esta parte es muy corta, se trata de operadores aritméticos, les dejo el video único en español y seguimos:


---------------------------  OPERADORES ARITMÉTICOS ------------------------------------

 Vamos a ver 5:

- Suma: va con el símbolo "+" entre dos números o variables.
- Resta: va con el símbolo "-" entre dos números o variables.
- Multiplicación: va con el símbolo " * " entre dos números o variables.
- División: va con el símbolo " / " entre dos números o variables, cabe decir que no imprimirá después de la coma o sea no pondrá decimales 0.33,0.5,etc.
- Exponente: va con el símbolo " ** " entre dos números o variables, cabe decir que el primer numero de la izquierda sera la base y el de la derecha el exponente.

  Se puede colocar también variables entre los operadores de esta manera:

###########################################################
class Window_Sample
  def initialize
  end
  def refresh
    a= 2
    b= 3
    print a ** b
  end
end
ventana = Window_Sample.new
ventana.refresh
##########################################################

 y el resultado que saldrá por pantalla sera la exponencial de base a con exponente b

 Hay que tener también ojo, que si se utiliza mas de una operación no olvidar colocar paréntesis para que el resultado sea el esperado

ESO ES TODO EN ESTA INTRODUCCIÓN

lunes, 22 de julio de 2013

Introducción: Conceptos Básicos

Los conceptos basicos los pueden ver con este video en ESPAÑOL que son los 2 primeros videos



Y como datos extras, en INGLES para los que sepan estará acá




Conceptos básicos


  Como dice el video tenemos algunas cosas que son básicas en los scripts, veamos mejor con un ejemplo que hice

############################################################################

class Window_Ejemplo
  def initialize
    @saludo="hola mundo"
  end
  def saludo
    print @saludo
  end
end
ventana=Window_Ejemplo.new
ventana.saludo

############################################################################

 Bien en este ejemplo podremos ver "class" que es esto, es una entrada a la funcion que haremos,puede se llamada como nosotros queramo (tenerlo presente para despues); y los def son de definir en este caso y siempre será initialize (que es un método), los def siempre deben terminar con un end que por lo general se colocan solitos al mismo nivel de los def, debajo de initialize pondremos lo que queremos, en este caso puse un @saludo, estas son variables, las variables son espacios que se pueden colocar lo que queramos nosotros desde letras hasta numeros y se pueden ir reemplazando con el tiempo.

------------------------------     VARIABLES    ------------------------------------------------
hay 3 tipos de variables hasta ahora, porque puede que despues hallan más:

- $Variable: Esta es una variable global, estas variables se pueden llamar en cualquier lado si estan declaradas (declaradas = que tienen algo en ella), siempre llevan el simbolo de dolar "$"

-@Variable: Esta es una variables de clase, significa que tiene un alcance solo dentro de la clase
donde fue asignada. Puede ser modificada dentro de cualquier metodo de la misma clase, pero no desde otra clase.

-Variable: Esta variable de método o local, es una palabra a la que se le declara algo y simplemente se usa y se puede modificar en un metodo de la clase y NO dentro de otras clases, ni metodos

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

  Sigamos con el ejemplo... ustedes se preguntaran ¿Qué hace, este mágico código?, pues ah probarlo si quieres, nosotros seguiremos con la explicacion primero y luego un pantallazo ok?

 Debajo del método initialize coloque una variable ¿de que tipo?.... De clase, bieeen, y le puse una frase muy bonita para el ejemplo, como se la asignamos, siempre asignaremos una variable con el simbolo de igualdad (=), para todas las frases que queramos colocar, siempre deben ir entre comillas y los numeros seran puestos normalmente sin comillas.

luego puse otro método que se puede llamar de cualquier forma que quieras (pero tenlo presente para despues), en este caso saludo, en este metodo vamos hacer que la variable de clase saludo se imprima por pantalla, o sea, lo que le pusimos a @saludo saldra en la pantalla con print que es imprimir.

 Finalmente se cierra la clase, vamos a generar una variable local, al cual asignaremos nuestra clase y le agregaremos la extension ".new" la que buscara la clase que le pusimos al principio y luego colocaremos la variable local con un punto y luego el metodo que queremos que se genere, en este caso el def saludo, pero se colocara sin el def, solo el nombre. De esta manera si corremos el juego nos tendria que salir esto:


FELICITACIONES YA GENERASTE ALGO EN RUBY Y QUE MEJOR AUN EN EL MAKER!!

P: pero wtf esto no me sirve de nada, que fome tu tutorial
R: pues vete D:< aca aprenderemos de a poco

Esto se diran que no es mucho, pero deben entender bien como llamar a las funciones antes de seguir, es por eso que les dejare una "TAREA" para que hagan, no es necesario que la muestren, sino que aprendan por ustedes, es muy simple:

TAREA

Tendrán que hacer lo mismo, imprimir en pantalla una frase y un numero, pero con los tres tipos de variable uno cada uno




CON ESTO me despido hasta otra lección y será mas pronto de lo que piensan por mientras....





Bienvenidos

 Holiwis a todiwis los que van a participar en estas "clases" aunque no serán dictadas por un profesor sere yo el que les dará las cosas para aprender y mas que nada aprendamos entre todos, lo ideal es que visiten este blog a diaria porque puede que suba alguna clase nueva, no significa que lo haga todos los días también, puesto que como eres también tu, soy yo, así puedo tener alguna cosa que hacer y no podre subirla.

 Entonces más que nada es para decirles que espero que podamos ayudarlos, cualquier duda o alguna idea nueva sería interesante verla y todo, me pueden mandar un mensaje al foro http://www.rpgmkrvx.com/ como usuario monito486  ó  me pueden mandar un correo electrónico al correo neophoenix91@hotmail.com para lo que tengan dudas e intentaremos resolverlo de alguna manera.

 Lo otro es que les dejaré algunas "tareas" para que la hagan ustedes, puede que alguna tarea no salga así que no se preocupen, ni tampoco se quiebren la cabeza pensándolo. Por cierto esta demás decirle que si no les esta gustando pueden retirarse y avisarme para dejar de tenerlos en cuenta, también pueden decirles a sus amigos que vean el blog, no tengo problemas para que aprendan con nosotros, pero eso si no responderé a algún mensaje de ellos, SOLO DE USTEDES, porque hago esto, porque si vamos aumentando de gente que empieza a ver el blog por alguna razón, puede que lean esto y empiecen a llegarme muchos correos y no podre solucionar todos los problemas que tengan.

 Por lo contrario no significa que no dejaré que más personas interesadas puedan unirse a este grupo, pero deben avisarme y por cierto mantenerse en contacto lo mas que puedan para seguir juntos.

 Bueno eso sería todo, espero que sigamos juntos y si nos va bien podríamos tener hasta nuestro propio sistema de batalla.

Saludos :)