Introducción a la programación en Argentum Online parte 3

  Introducción a la programación en Argentum online (parte 3):

En esta entrega vamos a ver las estructuras de toma de decisión en vb6, "If", "IIf" y "Select case".
Como vimos en la primera entrega, todas las estructuras en basic empiezan y terminan con palabras reservadas (marcadas por defecto en azul por el entorno integrado de desarrollo) pero existen muchas formas de escribir una misma sentencia lógica, hoy vamos a ver las distintas formas que se pueden aplicar en cada caso.

¿Qué es un Select case?

La estructura "Select case" utiliza una variable como sujeto para ejecutar distintas órdenes según su valor, vamos a verlo en un ejemplo donde la variable contiene un número correspondiente a la edad de una persona y según este valor vamos a asignar una descripción en palabras - una variable de tipo string (cadena de caracteres) - a otra variable que en este primer ejemplo contendrá el nombre de la clase a la que asistirá la persona según su edad.

La estructura permite también concadenar con "," distintos valores en un mismo case, por ejemplo:











También podemos detonar el case con un rango entre un valor y otro usando la palabra reservada "to", por ejemplo:





También podemos usar "Else" en el último caso para todos los valores que no estén especificados, por ejemplo:











Por último, la estructura Select case también permite una asociación directa entre el caso y la orden mientras que esta sea de una única linea, utilizando ":" de esta forma:






¿Qué utilidad tiene en el código del Argentum?

Las estructuras select case se usan en muchos procedimientos básicos del código, para tomar decisiones de forma organizada y agradable a nivel visual, simple de muchas formas.
Veamos un fragmento del procedimiento "CheckUserLevel" encargado de modificar los datos del usuario al subir de nivel, en caso de que la experiencia sea suficiente:






Como podemos ver, se usa como valor la clase del usuario, según la clase (Guerrero, cazador, pirata), se aumenta el HIT y la STA de distinta forma (Si, como verán el cazador y el guerrero comparten datos, podrían estar como: "Case eClass.Warrior, eClass.Hunter" en un solo case.)
El aumento del HIT está determinado por otra estructura, una estructura de toma de decisiones muy interesante que se escribe en una sola linea: IIf(,,).

¿Qué es un IIf()?

Es una función muy útil que permite, a partir de tres parámetros, determinar un valor.
Se coloca una expresión y se especifica que valor devolver en caso de que esta expresión se cumpla y que valor devolver en caso de que no lo haga.
En el ejemplo podemos ver que especifica: Si el nivel del usuario (.stats.elv) es mayor a 35 entonces el aumento de golpe será de 2 puntos, sino de 3 puntos.

Esto podría tranquilamente escribirse como un condicional "If" tradicional de la siguiente forma:






Las estructuras If también pueden dictarse en una sola linea si la orden contiene una sola expresión para cada caso, cuando se utiliza esta forma de estructurar un If no se utiliza End If, aquí un ejemplo:




Incluso pueden contener una orden concadenada con ":", sin embargo es poco recomendable ya que empobrece la calidad de la lectura, esto se ve de la siguiente forma:




Esto no es lo único que deberías saber sobre las estructuras If, de hecho, existen varias minucias más.

¿Qué otras formas de estructurar un If existen?

Las estructuras If tienen la opción, bien conocida, "Else" que permite establecer qué sucede cuando una condición no se cumple, pero algo que no vimos todavía en este blog fue el uso de "Elseif", un tercer personaje que funge muchas veces de forma parecida a los cases del Select case, sin embargo, su lógica difiere ligeramente de la estructura previamente vista en este artículo, veamos un ejemplo de elseif, pero primero ¿Qué significa exactamente?
If significa "Si", else significa "Si no", elseif significa "Si no, si":




De esta forma especificamos que si la clase es Guerrero entonces haga tal cosa, si no, si es cazador, tal otra, si no, si es pirata, otra. También podríamos referirnos a todo el resto de clases combinando If, elseif y else, de esta forma:




Ahora que conocemos las distintas formas de estructurar la toma de decisiones en visual basic, es posible utilizar un dato para hacer que se corra una instrucción u otra según lo que nosotros consideremos necesario, veamos un ejemplo escrito en el subprocedimiento "UserDañoUser", vamos a usar la función RandomNumber(Nro mínimo, Nro máximo) para obtener un número al azar entre 1 y 10 para hacer que los jugadores de raza enana tengan 10% chances de dar un golpe con +50% de daño:

























Eso fue todo por esta entrega, hasta la próxima!


























Comentarios

Entradas populares de este blog

Introducción a la programación en Argentum Online parte 1

Lección 1: Creando una poción de experiencia.

Introducción a la programación en Argentum Online parte 2