# Pokemon Battle

# Pikachu vs Charmander vs Squirtle

Primero, vamos a crear las instancias de los Pokémon:

class Pokemon {
  constructor(name, type, level) {
    this._name = name;
    this._type = type;
    this._level = level;
  }

  get name() {
    return this._name;
  }

  set name(newName) {
    if (typeof newName === 'string') {
      this._name = newName;
    } else {
      console.log('Error: el nombre debe ser una cadena de caracteres');
    }
  }

  get type() {
    return this._type;
  }

  set type(newType) {
    if (typeof newType === 'string') {
      this._type = newType;
    } else {
      console.log('Error: el tipo debe ser una cadena de caracteres');
    }
  }

  get level() {
    return this._level;
  }

  set level(newLevel) {
    if (typeof newLevel === 'number' && newLevel >= 1 && newLevel <= 100) {
      this._level = newLevel;
    } else {
      console.log('Error: el nivel debe ser un número entre 1 y 100');
    }
  }

  attack() {
    console.log(`${this._name} ha atacado`);
  }
}

const pikachu = new Pokemon('Pikachu', 'Eléctrico', 20);
const charmander = new Pokemon('Charmander', 'Fuego', 15);
const squirtle = new Pokemon('Squirtle', 'Agua', 18);

Ahora, vamos a simular la batalla. Para ello, podemos crear una función que tome dos Pokémon como argumentos y los haga atacar entre sí:

function battle(pokemon1, pokemon2) {
  console.log(`${pokemon1.name} (nivel ${pokemon1.level}, tipo ${pokemon1.type}) vs ${pokemon2.name} (nivel ${pokemon2.level}, tipo ${pokemon2.type})`);

  console.log(`${pokemon1.name} ataca a ${pokemon2.name}`);
  pokemon2.level -= 5;
  console.log(`${pokemon2.name} ahora tiene nivel ${pokemon2.level}`);

  console.log(`${pokemon2.name} ataca a ${pokemon1.name}`);
  pokemon1.level -= 5;
  console.log(`${pokemon1.name} ahora tiene nivel ${pokemon1.level}`);

  console.log('¡Fin de la batalla!');
}

Esta función imprime información sobre los dos Pokémon que van a combatir, los hace atacar entre sí y luego imprime el resultado de la batalla.

Finalmente, podemos llamar a esta función para simular una batalla entre Pikachu, Charmander y Squirtle:

battle(pikachu, charmander);
battle(charmander, squirtle);
battle(squirtle, pikachu);