LIBGDX Anexo tipos de datos

De MediaWiki
Saltar a: navegación, buscar

Introducción

En LIBGDX imos ter varios tipos de datos específicos para manexar os gráficos.

Neste punto imos analizar algúns dos empregados, tanto propios de LIBGDX como de JAVA.

Vector2

  • Clase Vector2: garda dúas variables de tipo float. Empregado sobre todo nos xogos 2D. O primeiro parámetro é a coordenada ou valor x, e o segundo parámetro é a coordenada ou valor y.

Cando o creamos podemos:

  • Facer un new indicando os dous valores:
  1. Vector2 vector = new Vector2(10,10);
  • Asinarlle despois os valores:
  1. Vector2 vector = new Vector2();
  2. vector.set(10,10);


A clase Vector2 ten multitude de métodos (os podedes consultar no enlace indicado arriba, no nome da clase). É moi importante comprender que ditos método afectan ó valor do vector orixinal. Explícome.

  1.             Vector2 vector = new Vector2(10,10);
  2.             Vector2 vectorDevuelto = vector.add(5, 6);

O método add aplicado ó vector engade o número indicado (5,5) a cada variable x,y. Así x pasará a valer 15 e y pasará a valer 16. O método add devolve un punteiro ó mesmo vector. Quere isto dicir que vectorDevuelto é vector.

Rectangle

Clase Rectangle: Permite gardar unha posición e un tamaño (define un rectángulo).

A posición inicial (a definida pola coordenada x,y) é a esquina inferior esquerda.

  1.     private rectangulo = new Rectangle(x,y,width,height);


  1.     private rectangulo = new Rectangle(10,21,100,100);

O utilizamos para definir o tamaño dos controis no noso xogo. Poderíamos usalo en vez de gardar a posición nun Vector2 e o tamaño noutro Vector2.


Circle

Clase Circle: Define un círculo. Entre os datos a enviar necesitamos indicarlle unha posición (coordenada x/y) e un tamaño (radio).

  1.     private circulo = new Circle(x,y,radio);
  1.     private circulo = new Circle(10,30,5);

O utilizamos na clase Intersector para saber se ó premer na pantalla (o representamos cun dedo) tocamos algún dos controis do xogo.

Array

Clase Array: utilizada para gardar un conxunto de obxectos.

Métodos máis importantes:


Para usala:

  • Definir un obxecto desta clase indicando o tipo de clase que vai albergar (isto se indica cos caracteres < e >) da seguinte maneira:
  1.     private Array<Bolboreta> bolboretas;
  • Instanciamos o obxecto no constructor da clase:
  1.     bolboretas = new Array<Bolboreta>();

Nota: Ó utilizar a clase Array vai dar un erro xa que non está importada. Cando a importedes (control +shift+O) vos dará varias opcións:

LIBGDX UD2 7 graficos 3.jpg

Deberedes de escoller com.badlogic.gdx.utils.Array.


  • Engadir novos obxectos:

Debemos de usar o método add.

  1.         bolboretas.add(new Bolboreta());


  • Recorrendo o array:

Para percorrer un array podemos usar:

Exemplo da wiki: https://github.com/libgdx/libgdx/wiki/A-simple-game (buscar por Iterator)
Outro exemplo:
  1. Iterator <Bolboreta> iter = bolboretas.iterator();
  2. while(iter.hasNext()){
  3.   Bolboreta bolboreta = iter.next();
  4. }
  • A través dun for da forma:
  1. for (Bolboreta bolboreta : bolboretas){
  2.   // bolboreta é cada un dos obxectos que están no array bolboretas.
  3. }
  • Borrando un elemento do array:
  • Parámetro T value: é o obxecto a borrar.
  • Parámetro boolean identity: se é true só compara os valores das propiedades do obxecto cos do array. Se é false compara que sexa o mesmo obxecto. Normalmente poñeremos true.

Exemplo de uso:

  1.  bolboretas.removeValue(candela, true);

Este método está sobrecargado polo que tamén podemos borrar por un índice,....

Por exemplo:

Devolve o obxecto eliminado do array polo índice indicado.


  • Obtendo o número de elementos do array:
  • items: accede ós elementos do array.
A través de dito array podemos obter o número de obxectos que temos no array da seguinte forma:


  1. int num = bolboretas.items.length;

Enum

Documentación oficial: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Serve para definir unha variable que vai ter un valor dunha serie de valores predefinidos.

Por exemplo:

  1. public static enum TIPOS_ELEMENTOS {COCHE, AUTOBUS, TRONCO, ROCA};


HashMap

Documentación oficial: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

Permite definir un mapa que ven a ser un obxecto que 'mapea' pares de clave-valor.

Cando definimos un HashMap indicamos o tipo de dato que vai gardar e o valor asociado a ese dito tipo de dato.

Por exemplo:

  1.         public enum Keys {
  2.                 ESQUERDA,DEREITA,ARRIBA,ABAIXO
  3.         }
  4.         HashMap<Keys, Boolean> keys = new HashMap<Keys, Boolean>();


Neste exemplo estamos a definir un obxecto mapa (keys) que ten como claves o tipo de datos enum Keys, quero isto dicir que imos gardar as claves ESQUERDA, DEREITA,.... e cada unha deles vai poder ter como valor true/false. Por exemplo:

            ESQUERDA => false
            DEREITA  => true
            ......




-- Ángel D. Fernández González -- (2015).