Hola a todos, comencé a trabajar en un juego de rol de clicker, donde ganas experiencia cada vez que haces clic en tu personaje héroe. En este momento lo tengo para que ganes un nivel después de 10 clics, pero pensando en el futuro necesitaré tener cantidades de clics más altas para los niveles altos. No puedo pensar en una manera de implementar esto sin escribir una montaña de código. ¿Cuál sería una forma sencilla? Lo único que se me ocurre es vincular manualmente los niveles de ganancia con la cantidad de clics que tiene la barra de experiencia, pero para eso necesitaría usar un montón de operadores OR.
html
<img id="heroChar" src="hero.png" alt="" onclick="gainExperience()"> <p id="experience-bar"></p> <p id="level-bar"></p>javascript
let experienceMeter = document.getElementById("experience-bar"); let levelMeter = document.getElementById("level-bar") let level = 0; let experience = 0; const gainExperience = () => { experience += 1; experienceMeter.textContent = `Experience: ${experience}` levelMeter.textContent = `Level: ${level}` levelUp(); } const levelUp = () => { if (experience === 9 || experience === 19) { level += 1; } }una propuesta puede ser:
let experienceMeter = document.getElementById("experience-bar"); let levelMeter = document.getElementById("level-bar") let level = 0; let coef = 10.5; let experience = 0; let previousExperience = 0; const gainExperience = () => { experience += 1; experienceMeter.textContent = `Experience: ${experience}` levelMeter.textContent = `Level: ${level}` levelUp(); } const levelUp = () => { var neededExperience = level*coef; if ((experience - previousExperience) >= neededExperience) { level += 1; previousExperience = experience; } } <img id="heroChar" src="hero.png" alt="hero" onclick="gainExperience()"> <p id="experience-bar"></p> <p id="level-bar"></p>Puede usar la experiencia objetivo para el siguiente nivel y volver a calcularla cada vez que sube de nivel.
let experienceMeter = document.getElementById("experience-bar"); let levelMeter = document.getElementById("level-bar") let level = 0; let experience = 0; let next_lvl_xp = <<YOUR_TARGET>>; const gainExperience = () => { experience += 1; experienceMeter.textContent = `Experience: ${experience}` levelMeter.textContent = `Level: ${level}` levelUp(); } const levelUp = () => { if (experience === next_lvl_xp) { level += 1; next_lvl_xp = <<YOUR_PROGRESSION_FUNCTION>>; // example // next_lvl_xp += 10 * level; } }