Warrior Quest – Descifrando las clases
Filed Under (Ocupación) by Gurk on 01-04-2012
Tags: Programación
En el anterior mensaje justo al final os dije que además de ese esquema de funcionamiento hacía falta al definición de las clases y que estas parecían imitar a una receta. Os voy a explicar como se hace una.
Normalmente estas clases definen elementos de la vida real que se van a plasmar en código. Para empezar, en este juego quien creéis que va a tener fijo, una definición en forma de Clase. Ese sería el héroe o protagonista del juego. Ya tenemos la base, ahora hay que expandirlo indicando sus características y funcionalidades.
Las característica ser refieren a los atributos de la clase, algo así como los indicadores de lo que posee. Estos indicadores por costumbre se colocan en estado de privados. Al estar en privado conseguimos que nadie externo al héroe sepa que posee. Imaginaos la tarta del ejemplo anterior. Si cogéis una tarta, sabéis que tiene ciertos ingredientes, pero no sabéis cuales ni su cantidad. Para saber que tiene meteréis el dedo y lo chupareis, pero eso lo vamos a representar de otra forma.
Para poder tratar con el héroe, éste necesita tener ciertas funcionalidades. Tienen que ser mínimas y las necesarias ya que no sirve de nada permitirle hacer algo que luego no va a hacerlo. También hay que decidir si esas funcionalidades serán públicas o privadas. Una vez mas vuelvo al ejemplo de la tarta. Para poder hacerla necesitamos una funcionalidad que sea mezclar los ingredientes, que será algo publico ya que será algo que nosotros haremos. Pero por ejemplo, reposar para que la levadura haga efecto, eso es algo que la propia tarta hará de por si. Este reposo será algo que se hará internamente y nadie de fuera debería saber que es lo que es.
Volvamos al héroe, empezaremos con sus atributos. Recordemos, que privados. Pensad vosotros también que debería tener a partir de la descripción del juego que os día anteriormente.
Jugador:
– nombre:String
– nivel:int
– experiencie:int
– vida:int
– fuerza:int
– defensa:int
– agilidad:int
He puesto estos pocos, seguro que se os han ocurrido bastantes mas. Estos serán los atributos que definan al héroe. ¿Que es eso de int que viene después? Lo que aparece al final del atributo indica que tipo de información almacenará. Si es un int, indica que guardará un número natural (Los números que usamos para contar, sin decimales) negativo o positivo. Puede ser un String (Con la S mayúscula) que sirve para almacenar una serie de caracteres, como puede ser una frase o en este caso, el nombre. Existen otros cuantos, como el float para guardar ya con los decimales o el booleano, que solamente guarda los estados de Verdadero o Falso.
Los guiones no los he puesto para que la lista quede bonita, ese guion indica que los atributos serán privados y que nadie mas que el podrá trabajar con ellos. Si por alguna extraña razón se necesita que sea público, se indicará con un plus «+» en vez del guion, eso lo vamos a ver ahora con las operaciones.
En las operaciones tenemos que indicar que acciones queremos que nuestro héroe sea capaz de hacer. Según la descripción del juego, podemos deducir que el jugador debe ser capaz de moverse, luchar y ganar experiencia. Así pues, vamos a indicarlos en la descripción de la clase;
Jugador:
– nombre:String
– nivel:int
– experiencie:int
– vida:int
– fuerza:int
– defensa:int
– agilidad:int
——————-
+desplazarse():void
+recibirExperiencia(vExperiencia:int):void
+luchar(vEnemigo:Enemigo):boolean
El primero es sencillo, el jugador se podrá de desplazar. Lo que haya dentro ya se discutirá mas adelante, por ahora, la estructura. Los paréntesis son una forma de distinguir de que esto es una operación. Si entre estas paréntesis aparece algún atributo, significa que la operación tendrá que trabajar con ese datos de alguna forma. Si después de estas operaciones, el programa necesita devolver algún valor al programa, después de los dos puntos se indica que tipo de valor devolverá. Si pone void, es que no devolverá nada. Si miráis el segundo y tercero, veréis que ambos reciben un dato, pero solo uno de ellos devuelve otro. Sin saber programar, seguro que sois capaces de deducir que harán estas dos operaciones mas o menos. La tercera como recibe un Enemigo y devuelve un booleano, se podría pensar de que tras combatir el booleano nos devolverá un Verdadero si ha ganado o un Falso si ha perdido.
Otro detalle, estos son métodos públicos, por lo que el programa será capaz de acceder a estas funcionalidades. Como poder hacerlo os lo explicaré mas adelante. Ahora os pondré las fotos de como están quedando el diagrama de secuencia y el diagrama de clases. Os recuerdo que no es definitivo y aun tenemos que discutir con la profesora ciertos detalles.
En el próximo tema os hablaré del Pseudo-codigo, que es explicar con lenguaje humanoide cotidiano como funcionará el programa. Es muy sencillo y aunque posiblemente ni yo lo este haciendo bien sirve para saber que operaciones se pueden necesitar en el programa. En realidad no es una parte de la asignatura, pero me ha servido para saber como hacer el resto de cosas. Cada uno que se tiene que buscar la vida como puede, supongo.
Finalmente si os habéis fijado habrá una clase que defina al enemigo, pero no habrá solo uno evidentemente, así que si queréis participar de alguna forma en el juego podéis sugerirnos si os apetece que enemigos deberían salir. Incluso podéis hacer algún borratajo del bicho y decir que tipo de ataque se podría tener. Los ataques del juego no son muy complicados, así que posiblemente las adaptaremos. ¡Tenéis la oportunidad de aparecer en los créditos de un juego!