LIBGDX Anexo tipos de datos

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

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:
Vector2 vector = new Vector2(10,10);
  • Asinarlle despois os valores:
Vector2 vector = new Vector2();
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.

            Vector2 vector = new Vector2(10,10);
            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.

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


    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).

    private circulo = new Circle(x,y,radio);
    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:
    private Array<Bolboreta> bolboretas;
  • Instanciamos o obxecto no constructor da clase:
    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.

    	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:
Iterator <Bolboreta> iter = bolboretas.iterator();
while(iter.hasNext()){
  Bolboreta bolboreta = iter.next();
}
  • A través dun for da forma:
for (Bolboreta bolboreta : bolboretas){
  // bolboreta é cada un dos obxectos que están no array bolboretas.
}
  • 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:

 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:


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:

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:

	public enum Keys {
		ESQUERDA,DEREITA,ARRIBA,ABAIXO
	}
	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
            ......