Java - Problema ao mostrar imagem

galera o que ta faltando para as minhas imagens aparecerem eu acabei bugando no q estava fazendo…

package Pack.Entities;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

import javax.imageio.ImageIO;

import cards.Arqueiro;
import cards.Guerreiro;
import cards.Habilidades;
import cards.Mago;

public class Classe extends Habilidades {

	 private BufferedImage guerreiroImage;
	    private BufferedImage magoImage;
	    private BufferedImage arqueiroImage;
	
	
	static Classe cartaSacada = new Classe();
	boolean drawCard = true;
	Random r = new Random();
	int card = 1; // quantidade de card que se pode usar

	ArrayList<Habilidades> cardBatalha = new ArrayList<>();
	//ArrayList<Skils> skils = new ArrayList<>();
	//ArrayList<Itens> itens = new ArrayList<>();



	 public Classe() {
	        try {
	            guerreiroImage = ImageIO.read(getClass().getResource("/001_.png"));
	            magoImage = ImageIO.read(getClass().getResource("/002_.png"));
	            arqueiroImage = ImageIO.read(getClass().getResource("/002_.png"));
	        } catch (IOException e) {
	            e.printStackTrace();
	        }

	        addAsCartas(); // se não chamar o método aqui a lista vai dar como vazia!
	    }

//
	 public void addAsCartas() {
		    // Verifique se a lista está vazia antes de tentar sortear uma carta
		    if (cardBatalha.isEmpty()) {
		        int cartaSorteada = r.nextInt(3); // 3 opções: Guerreiro, Mago, Arqueiro

		        // Adicione a carta sorteada à lista
		        if (cartaSorteada == 0) {
		            cardBatalha.add(new Guerreiro(guerreiroImage));
		        } else if (cartaSorteada == 1) {
		            cardBatalha.add(new Mago(magoImage));
		        } else if (cartaSorteada == 2) {
		            cardBatalha.add(new Arqueiro(arqueiroImage));
		        }
		    }
		}
	
	

	// Get e Set
	public String getNome() {
		// Verificando se a lista não está vazia
		if (!cardBatalha.isEmpty()) {
			// Acessando o campo 'nome' do primeiro objeto na lista
			return cardBatalha.get(card).nome;
		}
		return null; // Retorna null se a lista estiver vazia
	}
	
	public int getVida() {
		// Verificando se a lista não está vazia
		if (!cardBatalha.isEmpty()) {
			// Acessando o campo 'nome' do primeiro objeto na lista
			return cardBatalha.get(card).vida;
		}
		return 0; // Retorna null se a lista estiver vazia
	}
	
	public int getAgilidade() {
		// Verificando se a lista não está vazia
		if (!cardBatalha.isEmpty()) {
			// Acessando o campo 'nome' do primeiro objeto na lista
			return cardBatalha.get(card).agilidade;
		}
		return 0; // Retorna null se a lista estiver vazia
	}

}

////////////////
package Pack.Entities;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

import javax.imageio.ImageIO;

import cards.Arqueiro;
import cards.Guerreiro;
import cards.Habilidades;
import cards.Mago;

public class Classe extends Habilidades {

 private BufferedImage guerreiroImage;
    private BufferedImage magoImage;
    private BufferedImage arqueiroImage;


static Classe cartaSacada = new Classe();
boolean drawCard = true;
Random r = new Random();
int card = 1; // quantidade de card que se pode usar

ArrayList<Habilidades> cardBatalha = new ArrayList<>();
//ArrayList<Skils> skils = new ArrayList<>();
//ArrayList<Itens> itens = new ArrayList<>();



 public Classe() {
        try {
            guerreiroImage = ImageIO.read(getClass().getResource("/001_.png"));
            magoImage = ImageIO.read(getClass().getResource("/002_.png"));
            arqueiroImage = ImageIO.read(getClass().getResource("/002_.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        addAsCartas(); // se não chamar o método aqui a lista vai dar como vazia!
    }

//
public void addAsCartas() {
// Verifique se a lista está vazia antes de tentar sortear uma carta
if (cardBatalha.isEmpty()) {
int cartaSorteada = r.nextInt(3); // 3 opções: Guerreiro, Mago, Arqueiro

	        // Adicione a carta sorteada à lista
	        if (cartaSorteada == 0) {
	            cardBatalha.add(new Guerreiro(guerreiroImage));
	        } else if (cartaSorteada == 1) {
	            cardBatalha.add(new Mago(magoImage));
	        } else if (cartaSorteada == 2) {
	            cardBatalha.add(new Arqueiro(arqueiroImage));
	        }
	    }
	}



// Get e Set
public String getNome() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).nome;
	}
	return null; // Retorna null se a lista estiver vazia
}

public int getVida() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).vida;
	}
	return 0; // Retorna null se a lista estiver vazia
}

public int getAgilidade() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).agilidade;
	}
	return 0; // Retorna null se a lista estiver vazia
}

}
/////////////

package cards;

import java.awt.image.BufferedImage;

public class Guerreiro extends Habilidades{
	
	 // private BufferedImage imagem;
	
	  public Guerreiro(BufferedImage imagem) {
	        super(imagem);
	        this.nome = "Guerreiro";
	        this.vida = 100;
	        this.agilidade = 50;
	    }

}
///////
package Pack.Entities;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

public class Player1 extends Entiti {
// se a Classe c  statica que esta na Classe classe der errado tiro os // abaixo
// Classe c = new Classe();
	
	//Habilidades dadosP1 = new Habilidades();
	
	
	 private BufferedImage cartaAtual;

	    public Player1(int x, int y, int width, int height) {
	        super(x, y, width, height, null);
	        sortear();
	        cartaAtual = cartaSacada.cardBatalha.get(cartaSacada.card).imagem;
	    }
	// O jogador recebe os atributos da carta sorteada
	    public void addAtributosP1() {
	        int cartaSorteada = r.nextInt(cardBatalha.size());

	        // Use os atributos da carta sorteada
	        nome = cardBatalha.get(cartaSorteada).getNome();
	        vida = cardBatalha.get(cartaSorteada).getVida();
	        agilidade = cardBatalha.get(cartaSorteada).getAgilidade();
	    }

	public void sortear() {

		// De acordo com a vida do player e a quantidade de cardis sorteara uma nova
		// carta!
		if (vida <= 0) { // se eu trocar o sinal de < para > irá entar no looping e criar varias cartas
			card = r.nextInt(cardBatalha.size());
		}

	}
	
	

	public void tick() {
		
	     sortear();
	        cartaSacada.card = card;
	        addAtributosP1();
	       
		// como c e statico nao preciso emvocar!!
	////	cartaSacada.card = card; // Atualizar o valor de 'card' na clas Classe
		

		
		

	}

	public void render(Graphics g) {
		
		 
		        // Renderiza a nova imagem associada à carta
		  g.drawImage(cartaAtual, (int) x, (int) y, width, height, null);
	      
		    
		  

	
		
		Font fonte = new Font("Arial Black", Font.PLAIN, 12);
	    g.setFont(fonte);
		g.setColor(Color.YELLOW);
		g.drawString("P1",(int)x+3,(int) y+13);
		
		//
		 Graphics2D g2d = (Graphics2D) g.create();

	        // Definindo uma cor com transparência (canal alfa)
	        Color corComTransparencia = new Color(0, 0, 255, 50); // Azul com 50% de transparência (128 de 0 a 255)

	        // Definindo a cor do círculo como a cor com transparência
	        g2d.setColor(corComTransparencia);

	        // Desenhando um círculo com a cor e transparência especificadas
	        int diametro = 250;
	       
	        g2d.fillOval((int) x-75, (int) y-75, diametro, diametro);

	        g2d.dispose();
	}

	
	

	
	//

	
	
}

Cadê o código que chama o método render ?

package Pack.Entities;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

import cards.Atributos;
import cards.Guerreiro;
import cards.Mago;

public class OrganizarCards extends Atributos {

int card = 1; // quantidade de card que se pode usar

ArrayList<Atributos> cardBatalha = new ArrayList<>();
// ArrayList<Skils> skils = new ArrayList<>();
// ArrayList<Itens> itens = new ArrayList<>();

public OrganizarCards(int x, int y) {
	this.x = x;
	this.y = y;

	addAsCartas(); // se nao chamar o metodo aqui a lista vai da como vazia!

}

public void addAsCartas() {

	cardBatalha.add(new Guerreiro());
	cardBatalha.add(new Mago());
	// cardBatalha.add(new Arqueiro());

}

// Get e Set
public String getNome() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).nome;
	}
	return null; // Retorna null se a lista estiver vazia
}

public int getVida() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).vida;
	}
	return 0; // Retorna null se a lista estiver vazia
}

public int getAgilidade() {
	// Verificando se a lista não está vazia
	if (!cardBatalha.isEmpty()) {
		// Acessando o campo 'nome' do primeiro objeto na lista
		return cardBatalha.get(card).agilidade;
	}
	return 0; // Retorna null se a lista estiver vazia
}




public void tick() {

}

  public void render(Graphics g) {
        // Verifica se a lista não está vazia
        if (!cardBatalha.isEmpty() && card < cardBatalha.size()) {
            // Obtém a imagem da carta sorteada
            BufferedImage imagemCarta = cardBatalha.get(card).getImagem();
            
            // Desenha a imagem da carta na posição (x, y)
            g.drawImage(imagemCarta, (int) x, (int) y, width, height, null);
        }
    }

}

Essa classe só DECLARA o método render.
Cadê o código que CHAMA, que INVOCA, ou que EXECUTA esse método?