Ajuda com POO em JAVA

Olá pessoal, primeiramente eu gostaria de me desculpar pelo título, eu não consegui pensar em nada melhor.
Bom, eu gostaria de tirar uma dúvida em relação a POO, eu venho trabalhando em um pequeno projetinho de jogo de texto, e atualmente o jogo contem 3 Classes, a classe principal, classe player e a classe inventario. Eu estou enfrentado uma dificuldade que é quando o jogador consome um item, este item não é aplicado diretamente na classe player como deveria ser. O código a seguir explica melhor o que eu quero dizer.

    public class Principal {
	
	Inventario inv = new Inventario();
	Player player = new Player();
	
	public static void main(String args[]) {
		
		new Principal().principal();

	}
	
	public void principal() {

		//... Faz leitura da escolha do jogador
		//Caso ele queira entrar no inventario
		
		inv.inventario();
		
		//... Faz leitura da escolha do jogador
		//Caso ele queira ver sua vida
		
		System.out.println("Sua vida é " + this.player.getVida());
		
	}
}

public class Inventario{
	
	Player player = new Player();
	
	//Quantidade de poções que o Jogador possui
	private int qntPocao = 2;

	//Quantidade de vida que cada poção recupera
	private int hpRegenPocao = 30;

	//Metodo onde mostra todas as opções do inventario
	public void inventario() {		//Não é o construtor
		
		//... Faz leitura da escolha do jogador
		this.usarPocaoHp();
	}
	
	//Utiliza o item poção de vida
	private void usarPocaoHp(){
		
		//Verifica se o jogador possui poções de vida
		if(this.qntPocao > 0)
			this.player.updateVida(hpRegenPocao);
		else
			System.out.println("Você não possui poções de vida!");
		
	}
}

public class Player{
	
	private int vida= 10;
	
	//Atualiza a vida do jogador
	public void updateVida(int vidaRecuperada){
		this.vida += vidaRecuperada;
	}
	
	//Retorna a vida do jogador
	public int getVida(){
		return vida;
	}
}

O pior é que eu entendo exatamente onde está o erro, eu não estou atualizando a vida na “mesma” classe player que se refere a classe principal. O que eu queria era que eu pudesse atualizar a vida do player na classe inventário, e esse valor fosse salvo na classe principal. Não sei se ficou muito claro o que eu quis dizer, mas desde já agradeço pela atenção.

Você instanciou a classe player aqui:

public class Principal {
Inventario inv = new Inventario();
Player player = new Player();

Você intanciou novamente a classe player aqui:

public class Inventario{
  Player player = new Player();

Tente criar um construtor para classe inventário que receba o objeto player:

Públic class inventario{
  private Player player;

  public inventario(Player player){
    this.player = player;
}

Na hora de criar o inventario na classe principal faz:
new Inventario(player)

2 curtidas

Caraca mano!
Funcionou mesmo, valeu de coração em mano. Tmj <3

De nada!:+1:

1 curtida