⚔️ Math Monster RPG ⚔️
Monster HP:
Your HP
🛒 Upgrade Shop
⚔️ Sword
Cost:
🛡️ Shield
Cost:
❤️ HP
Cost:
⚔️ Sword:
🛡️ Shield:
❤️ Max HP:
let hp=20;
let maxHP=20;
let level=1;
let coins=0;
let sword=1;
let shield=0;
let swordPrice=50;
let shieldPrice=50;
let hpPrice=75;
let monsterID=0;
let enemyHP=0;
let enemyMax=0;
let correct=0;
let monsters=[
["Slime","🟢",10],
["Goblin","👺",20],
["Skeleton","💀",35],
["Ogre","👹",50],
["Dragon","🐉",80]
];
function start(){
let m=monsters[monsterID];
monsterName.innerHTML=m[0];
monster.innerHTML=m[1];
enemyMax=m[2]+level*5;
enemyHP=enemyMax;
question();
update();
}
function question(){
let a=Math.floor(Math.random()*12)+1;
let b=Math.floor(Math.random()*12)+1;
if(Math.random()<.5){ correct=a+b; document.getElementById("question") .innerHTML= a+" + "+b+" = ?"; } else{ correct=a*b; document.getElementById("question") .innerHTML= a+" × "+b+" = ?"; } } function attack(){ let guess= Number(answer.value); if(guess===correct){ enemyHP-=sword; coins+=5; message.innerHTML= "⚔️ HIT! +5 coins"; monster.classList.add("damage"); } else{ let damage= Math.max(1,4-shield); hp-=damage; message.innerHTML= "💥 Wrong! Lost "+damage+" HP"; } answer.value=""; update(); if(enemyHP<=0){ coins+=25; level++; monsterID++; message.innerHTML= "🎉 Monster defeated!"; setTimeout(()=>{
if(monsterID
coins-=swordPrice;
sword++;
swordPrice+=25;
message.innerHTML= "⚔️ Sword upgraded!";
}
else{
message.innerHTML= "❌ Need more coins";
}
update();
}
function shieldUpgrade(){
if(coins>=shieldPrice){
coins-=shieldPrice;
shield++;
shieldPrice+=25;
message.innerHTML= "🛡️ Shield upgraded!";
}
else{
message.innerHTML= "❌ Need more coins";
}
update();
}
function healthUpgrade(){
if(coins>=hpPrice){
coins-=hpPrice;
maxHP+=10;
hp=maxHP;
hpPrice+=50;
message.innerHTML= "❤️ HP increased!";
}
else{
message.innerHTML= "❌ Need more coins";
}
update();
}
function update(){
hp=Math.max(0,hp);
document.getElementById("hp").innerHTML=hp;
document.getElementById("level").innerHTML=level;
document.getElementById("coins").innerHTML=coins;
enemyHP=Math.max(0,enemyHP);
document.getElementById("enemyHP").innerHTML=enemyHP;
enemyBar.style.width= (enemyHP/enemyMax*100)+"%";
playerBar.style.width= (hp/maxHP*100)+"%";
swordPrice.innerHTML=swordPrice;
shieldPrice.innerHTML=shieldPrice;
hpPrice.innerHTML=hpPrice;
sword.innerHTML=sword;
shield.innerHTML=shield;
max.innerHTML=maxHP;
}
answer.addEventListener( "keydown", e=>{
if(e.key==="Enter") attack();
});
start();