Paso A1: Crear la Clase OBJ_botas.java

Esta clase hereda de superObjeto. Su función principal es cargar la imagen del asset y definir el nombre identificador para el sistema de colisiones.

Archivo: src/objetos/OBJ_botas.java

package objetos;

import java.io.IOException;
import javax.imageio.ImageIO;

/**
 * Objeto coleccionable que modifica el atributo de velocidad del jugador.
 */
public class OBJ_botas extends superObjeto {
    
    public OBJ_botas() {
        nombre = "botas";
        try {
            // Carga del recurso visual desde la carpeta res
            imagen = ImageIO.read(getClass().getResourceAsStream("/objetos/zapato.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Paso A2: Registro en el AssetSetter

Para que el objeto aparezca en el mundo, debemos instanciarlo y asignarle coordenadas dentro del array de objetos.

  1. Aumentar capacidad: En PanelJuego.java, asegúrate de que el array objs tenga espacio suficiente (ej. new superObjeto[15]).
  2. Configurar ubicación: En AssetSetter.java, añade el siguiente código:
// Importar la nueva clase
import objetos.OBJ_botas;

public void setObjetct() {
    // ... otros objetos ...

    // Configuración de las Botas de Velocidad
    pj.objs[10] = new OBJ_botas();
    pj.objs[10].worldX = 25 * pj.tamanioTile; // Posición X en tiles
    pj.objs[10].worldY = 15 * pj.tamanioTile; // Posición Y en tiles
}

Paso A3: Lógica de Recolección en Jugador.java

Debemos definir qué ocurre cuando el jugador colisiona con este objeto. Buscamos el método recogerObjeto.

Archivo: src/entidad/Jugador.java

public void recogerObjeto(int index) {
    if (index != 999) { // 999 significa que no hay colisión
        String nombreObjeto = pj.objs[index].nombre;

        switch (nombreObjeto) {
            case "botas":
                vel += 2; // Incremento permanente de velocidad
                pj.objs[index] = null; // Elimina el objeto del mapa
                System.out.println("¡Power-Up! Velocidad actual: " + vel);
                break;
            
            // ... otros casos (llave, puerta, etc.) ...
        }
    }
}