DnDJSHTML5 / index.html
awacke1's picture
Update index.html
4cca48c
<!DOCTYPE html>
<html>
<head>
<title>Dungeons & Dragons</title>
<style>
body {
font-family: Arial, sans-serif;
}
#output, #characterSheet {
white-space: pre-wrap;
background-color: #f0f0f0;
padding: 10px;
margin-top: 10px;
border-radius: 5px;
}
</style>
</head>
<body>
<h1>Dungeons & Dragons: Adventure Awaits</h1>
<button id="createCharacter">Create Character</button>
<button id="startAdventure">Start Adventure</button>
<button id="attack">Attack</button>
<button id="castSpell">Cast Spell</button>
<button id="useItem">Use Item</button>
<div id="output"></div>
<div id="characterSheet"></div>
<script>
let character = {};
let inventory = ["health potion", "magic potion", "mysterious key"];
let monsters = [
{ name: "Goblin", health: 30, strength: 5, armor: 2, magicResistance: 1, treasure: 10 },
{ name: "Orc", health: 50, strength: 10, armor: 5, magicResistance: 2, treasure: 20 },
{ name: "Dragon", health: 100, strength: 20, armor: 10, magicResistance: 5, treasure: 50 }
];
let currentMonster = null;
document.getElementById("createCharacter").addEventListener("click", createCharacter);
document.getElementById("startAdventure").addEventListener("click", startAdventure);
document.getElementById("attack").addEventListener("click", attack);
document.getElementById("castSpell").addEventListener("click", castSpell);
document.getElementById("useItem").addEventListener("click", useItem);
function createCharacter() {
character = {
name: "Hero",
class: "Warrior",
level: 1,
health: 100,
magic: 50,
strength: 10,
intelligence: 5,
armor: 5,
magicResistance: 3,
gold: 0,
inventory: [...inventory]
};
updateCharacterSheet();
display(`Character Created: ${character.name}, the ${character.class}`);
}
function startAdventure() {
currentMonster = monsters[Math.floor(Math.random() * monsters.length)];
display(`You encounter a ${currentMonster.name} on your adventure.`);
}
function attack() {
if (!character.name) {
display("You need to create a character first!");
return;
}
if (!currentMonster) {
display("There is no monster to attack!");
return;
}
let damage = Math.floor(Math.random() * character.strength) - currentMonster.armor;
damage = damage < 0 ? 0 : damage;
currentMonster.health -= damage;
display(`You attack the ${currentMonster.name} dealing ${damage} damage.`);
if (currentMonster.health <= 0) {
character.gold += currentMonster.treasure;
display(`You defeated the ${currentMonster.name} and found ${currentMonster.treasure} gold!`);
currentMonster = null;
} else {
monsterAttack();
}
updateCharacterSheet();
}
function castSpell() {
if (!character.name) {
display("You need to create a character first!");
return;
}
if (!currentMonster) {
display("There is no monster to cast a spell on!");
return;
}
if (character.magic < 10) {
display("Not enough magic points to cast a spell.");
return;
}
const spells = [
{ name: "Fireball", damage: 20, cost: 10 },
{ name: "Healing Light", healing: 15, cost: 10 },
{ name: "Shadow Strike", damage: 15, cost: 10 }
];
const spell = spells[Math.floor(Math.random() * spells.length)];
character.magic -= spell.cost;
if (spell.damage) {
let damage = spell.damage - currentMonster.magicResistance;
damage = damage < 0 ? 0 : damage;
currentMonster.health -= damage;
display(`You cast ${spell.name} dealing ${damage} damage to the ${currentMonster.name}.`);
} else if (spell.healing) {
character.health += spell.healing;
display(`You cast ${spell.name} and heal yourself for ${spell.healing} health.`);
}
if (currentMonster.health <= 0) {
character.gold += currentMonster.treasure;
display(`You defeated the ${currentMonster.name} and found ${currentMonster.treasure} gold!`);
currentMonster = null;
} else {
monsterAttack();
}
updateCharacterSheet();
}
function useItem() {
if (!character.name) {
display("You need to create a character first!");
return;
}
if (character.inventory.length === 0) {
display("Your inventory is empty!");
return;
}
const item = character.inventory.pop();
switch (item) {
case "health potion":
character.health += 20;
display(`You use a ${item} and restore 20 health.`);
break;
case "magic potion":
character.magic += 20;
display(`You use a ${item} and restore 20 magic points.`);
break;
case "mysterious key":
// Implement effect of mysterious key
display(`You use a ${item}, but nothing happens.`);
break;
default:
display(`You use a ${item}.`);
break;
}
updateCharacterSheet();
}
function monsterAttack() {
let damage = Math.floor(Math.random() * currentMonster.strength) - character.armor;
damage = damage < 0 ? 0 : damage;
character.health -= damage;
display(`The ${currentMonster.name} attacks you dealing ${damage} damage.`);
}
function updateCharacterSheet() {
let sheet = `Name: ${character.name}\nClass: ${character.class}\nLevel: ${character.level}\nHealth: ${character.health}\nMagic: ${character.magic}\nStrength: ${character.strength}\nIntelligence: ${character.intelligence}\nArmor: ${character.armor}\nMagic Resistance: ${character.magicResistance}\nGold: ${character.gold}`;
document.getElementById("characterSheet").textContent = sheet;
}
function display(message) {
document.getElementById("output").textContent += message + "\n";
}
</script>
</body>
</html>