PRGs
>> PRGs >> Cómo hacer una barra de energía by Wakroo.

Una de las dudas que me llegó a raíz del curso de iniciación a DIV/Fenix fue cómo crear una barra de energía. Puesto que yo en su momento me enfrenté al mismo problema os puedo dar una posible solución. Vayamos a lo que interesa.

Si nos paramos a pensar una barra de energía no es más que un gráfico del que se enseña una mayor o menor parte. Por lo tanto, nuestro punto de partida tiene que ser un gráfico del tamaño y forma adecuados. Algunos ejemplos podrían ser (pero bien dibujados, claro):

Una vez que tenemos ese gráfico lo tenemos que poner en pantalla. Podemos poner un proceso que simplemente lo ponga en pantalla y variar la anchura desde otro sitio (luego llegaremos a eso) o hacerlo todo desde un mismo sitio. Eso depende de cada programa y lo tiene que decidir cada uno, pero la filosofía es la misma.

Si lo ponemos tal cual aparecerá el gráfico entero en la pantalla y no podremos regular la anchura. El truco está en las regiones. ¿Qué es una región? Es una zona de la pantalla que podemos definir desde el código. La pantalla completa es la región 0 por definición y eso no se puede cambiar. Pero nosotros podemos crear la región 1 d3 (0,0) a (640,40), por ejemplo. Las regiones tienen que ser cuadradas y se definen mediante la esquina superior izquierda y la inferior derecha. ¿Y qué importancia tiene esto? Pues que mediante la variable local region podemos definir en qué regiones será visible un gráfico. Si hemos creado la región 1 al proceso que pone en pantalla el gráfico le ponemos region=1; y ya está. A partir de ahí la barra se verá en la región 1 y sólo en la 1.

Supongo que ya veréis por dónde va el asunto. A partir de ahí, modificando la anchura de la región podemos hacer que se vea una mayor o menor parte del gráfico. Habría que encontrar una correspondencia entre la energía y la anchura en pixels de la pantalla. Por ejemplo, en el caso de los corazones se podría hacer que fueran desapareciendo de medio corazón en medio corazón, mientras que en el de la barra se podría simplemente ajustar (si tiene el 75% de la energía, el 75% de la barra).

Ahora que ya conocéis la filosofía vamos a pasar al código concreto para hacer todo esto.

..............define_region(region,x,y,ancho,alto);

donde region es el número de región que queremos crear, x, y son las coordenadas de la esquina superior izquierda y ancho, alto es cuánto se tiene que extender la zona (ancho hacia la derecha, alto hacia abajo). Si no recuerdo mal, DIV 2 fallaba si se definían hacia la izquierda, pero Fenix no falla (lo acabo de probar). De todas formas, os recomiendo que lo hagáis siempre de la misma forma para no liaros. No os olvidéis de darle el valor adecuado a la variable local region del proceso que pone el gráfico en pantalla.

Pues en realidad eso es todo. Si usáis algún tipo de variable para saber qué anchura tiene que tener la barra no tenéis más que ponerla en la define_region y llamar a la función cada frame (o cuando tenga que variar la anchura, si queréis optimizar un poco). Daos cuenta que podéis modificar tanto la anchura horizontal como la vertical o las dos, por lo que se pueden hacer barras horizontales, verticales y diagonales con este método.

Aquí tenéis un pequeño ejemplo de cómo hacer una barra de energía. Con los cursores izquierda y derecha podéis variar la amplitud de la barra. Además, se hace una comprobación para avitar situaciones raras, para que no pase del máximo ni del mínimo.

Bueno, pues ya os he contado el truquillo. Seguro que hay más maneras de hacer barras de energía y similares, pero ésta es sencilla y efectiva. De todas formas, si conocéis alguna otra yo soy el primer interesado en conocerla, así que mandadme un mail a lordwakroo@yahoo.es. Un saludo y que la Fuerza os acompañe.