1
resposta

o método da classe mago não está sendo aplicado

Olá, no meu método da classe mago, quando eu crio um objeto com levelMagico >=5 e inteligencia >= 5 também, não está retornando o esperado e na tela aparece "mago iniciante"

abaixo deixo meus código dessas duas classes

// CLASSE PERSONAGEM

export class Personagem {
    nome
    vida = 100
    mana = 100
    level
    tipo
    descricao

    constructor(nome, level) {
        this.nome = nome
        this.level = level
    }
    
    obterInsignia() {
        if (this.level >= 5) {
            return  `IMPLICÁVEL ${this.tipo.toUpperCase()}`
        } else {
            return `${this.tipo.toUpperCase()} INICIANTE`
        }
        
    }
} 

// CLASSE MAGO

import { Personagem } from "./personagem.js"

export class Mago extends Personagem{
    elementoMagico
    levelMagico
    inteligencia
    tipo = 'Mago'

    constructor(nome, level, elementoMagico, levelMagico, inteligencia) {
        super(nome, level)
        this.elementoMagico = elementoMagico
        this.levelMagico - levelMagico
        this.inteligencia = inteligencia
    }

    obterInsignia() {
        if (this.levelMagico > 4 && this.inteligencia > 4) {
            return (`MESTRE DO ${this.elementoMagico.toUpperCase()}`);
        } else {
            return super.obterInsignia();
        }
    }
}
1 resposta

Olá, Israel!

Acredito que tenha um pequeno erro no seu código, primeiro. Você usou um sinal de menos (-) em vez de atribuição (=) ao definir this.levelMagico na classe Mago.

Isso faz com que this.levelMagico não seja corretamente inicializado. Aqui está a correção:

// CLASSE MAGO

import { Personagem } from "./personagem.js"

export class Mago extends Personagem{
    elementoMagico
    levelMagico
    inteligencia
    tipo = 'Mago'

    constructor(nome, level, elementoMagico, levelMagico, inteligencia) {
        super(nome, level)
        this.elementoMagico = elementoMagico
        this.levelMagico = levelMagico // Corrigido aqui
        this.inteligencia = inteligencia
    }

    obterInsignia() {
        if (this.levelMagico > 4 && this.inteligencia > 4) {
            return (`MESTRE DO ${this.elementoMagico.toUpperCase()}`);
        } else {
            return super.obterInsignia();
        }
    }
}

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!