JavaScriptPOOdesafio

Game engine básico

Em jogos reais, você encontra sistemas de batalha por turnos em RPGs como Pokémon ou Final Fantasy. Dominar a modelagem de entidades com classes separadas (jogador, inimigo, item) permite reutilizar e estender comportamentos sem bagunçar o código. Usar encapsulamento com #campo garante que atributos como vida não sejam alterados indevidamente de fora.

O PROBLEMA

Crie engine de jogo RPG: Entity, Player, Enemy, Item. Batalha com turnos, vida, ataque, defesa, itens e XP.

EXEMPLO

const player = new Player("Herói", {vida:100, ataque:20, defesa:10});
player.atacar(goblin) → "Herói causou 15 de dano!"

SOBRE O CONCEITO

A base é uma classe Entity com atributos privados (#vida, #ataque, #defesa) e métodos como receberDano(). Erro comum: dano negativo surge ao subtrair defesa do ataque sem limitar a zero — use Math.max(0, ataque - defesa). Outro erro: atacar um alvo morto. Antes de executar o ataque, verifique se alvo.estaVivo() (método que retorna this.#vida > 0). A herança com extends permite que Player e Enemy compartilhem lógica, enquanto cada um adiciona seus próprios comportamentos (ex: Player ganha XP; Enemy dropa item).

RESOLUÇÃO

Mais exercícios de POO

JSP021 · AvançadoClasse LinkedListJSP005 · BásicoContador de instânciasJSP008 · Básicoinstanceof e verificação de tipoJSP009 · BásicoClasse abstrata simulada
Ver todos os exercícios de JavaScript