Hytale Modding
Conceptos básicos de Java

05 - Matrices

Aprende cómo almacenar y gestionar varios datos usando matrices.

Las matrices te permiten almacenar múltiples valores del mismo tipo en una sola variable. Piensa la matriz como una fila de casillas, cada una conteniendo un elemento.

Crear matrices

1° Método: Declarar e Iniciar por separado

int[] numbers;           // Declarar
numbers = new int[5];    // Crear una matriz con 5 espacios

2° Método: Todo a la vez

int[] numbers = new int[5];

3° Método: Con valores iniciales

int[] numbers = {10, 20, 30, 40, 50};
Tamaño de la matriz

Una vez hayas creado una matriz, su tamaño es fijado Una vez hayas creado una matriz, su tamaño es fijado ¡No puedes añadir o eliminar elementos más tarde!

int[] inventory = new int[9];  // Siempre tendrá 9 espacios

Acceder a los elementos de la matriz

Las matrices usan números indexados iniciando desde 0:

String[] players = {"Alicia", "Bob", "Carlos"};

System.out.println(players[0]); // "Alicia"
System.out.println(players[1]); // "Bob"
System.out.println(players[2]); // "Carlos"

Representación visual

Índice012
Valor"Alicia""Bob""Carlos"

Modificar valores de matriz

int[] health = {100, 80, 90};

health[1] = 60;  // Cambiar la vida de Bob a 60

System.out.println(health[0]); // Valor de 100
System.out.println(health[1]); // Valor de 60
System.out.println(health[2]); // Valor de 90

Longitud de la matriz

Usa ".length" para obtener el tamaño de una matriz:

int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // Valor de 5
La longitud no es un método

!Ten en cuenta que no hay paréntesis! Es "nombredematriz.length", pero no "nombredematriz.length()"

Hacer loop en la matriz

Usar el loop "for"

String[] items = {"Espada", "Escudo", "Pocion"};

for (int i = 0; i < items.length; i++) {
    System.out.println(items[i]);
}

Usar loop "for" mejorado (también conocido como "for-each")

String[] items = {"Espada", "Escudo", "Pocion"};

for (String item : items) {
    System.out.println(item);
}
Loop "for" mejorado

El loop "for" mejorado es más simple y seguro, pero no podrás modificar la matriz o saber el índice actual.

// Cuando necesites el índice:
for (int i = 0; i < items.length; i++) {
    System.out.println(i + ": " + items[i]);
}

// Cuando solo necesites los valores:
for (String item : items) {
    System.out.println(item);
}

Matrices multidimensionales

Las matrices pueden contener otras matrices, creando una red de matrices.

int[][] grid = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

System.out.println(grid[0][0]); // Valor de 1
System.out.println(grid[1][2]); // Valor de 6
System.out.println(grid[2][1]); // Valor de 8

Representación visual

012
0123
1456
2789

Hacer loop en matrices de dos dimensiones (2D)

int[][] grid = {
    {1, 2, 3},
    {4, 5, 6}
};

for (int row = 0; row < grid.length; row++) {
    for (int col = 0; col < grid[row].length; col++) {
        System.out.print(grid[row][col] + " ");
    }
    System.out.println();
}

Ejemplos prácticos

Sistema de inventario del jugador

String[] inventory = new String[9]; // 9 espacios de hotbar (barra inferior)

// Añadir items
inventory[0] = "Espada de diamante";
inventory[1] = "Escudo";
inventory[8] = "Comida";

// Mostrar inventario
for (int i = 0; i < inventory.length; i++) {
    if (inventory[i] != null) {
        System.out.println("Espacio " + i + ": " + inventory[i]);
    } else {
        System.out.println("Espacio " + i + ": Vacío");
    }
}

Encontrar la mayor puntuación

int[] scores = {45, 92, 67, 88, 55, 71};
int highest = scores[0];

for (int i = 1; i < scores.length; i++) {
    if (scores[i] > highest) {
        highest = scores[i];
    }
}

System.out.println("Mayor puntuación: " + highest);

Calcular el promedio

double[] temperatures = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;

for (double temp : temperatures) {
    sum += temp;
}

double average = sum / temperatures.length;
System.out.println("La temperatura media es: " + average);

Red de bloques (matriz bidimensional 2D)

String[][] terrain = new String[5][5];

// Llenar con hierba
for (int x = 0; x < 5; x++) {
    for (int z = 0; z < 5; z++) {
        terrain[x][z] = "grass";
    }
}

// Coloca una piedra
terrain[2][2] = "piedra";
terrain[1][3] = "piedra";

// Mostrar cuadrícula
for (int x = 0; x < terrain. ength; x++) {
    for (int z = 0; z < terrain[x]. ength; z++) {
        System.out. rint(terrain[x][z] + " ");
    }
    System.out.println();
}

Operaciones comunes en una matriz

Copiar una matriz

Buscar un valor

String[] items = {"Espada", "Escudo", "Poción", "Arco"};
String target = "Poción";
int foundIndex = -1;

for (int i = 0; i < items.length; i++) {
    if (items[i].equals(target)) {
        foundIndex = i;
        break;
    }
}

if (foundIndex != -1) {
    System.out.println("Encontrado en: " + foundIndex);
} else {
    System.out.println("No se pudo encontrar");
}

Contar ocurrencias

String[] blocks = {"piedra", "tierra", "piedra", "pasto", "piedra"};
String searchFor = "piedra";
int count = 0;

for (String block : blocks) {
    if (block.equals(searchFor)) {
        count++;
    }
}

System.out.println(searchFor + " aparece " + count + " veces");

Limites de una matriz

Tamaño fijo

Las matrices no pueden aumentar o reducir su tamaño Si necesitas flexibilidad, aprenderás sobre listas de matrices después.

int[] numbers = new int[5];
// No puedes añadir un sexto valor

// si necesitas mas espacio, crea una nueva matriz
int[] bigger = new int[10];
for (int i = 0; i < numbers.length; i++) {
    bigger[i] = numbers[i];
}