Skip to content

Commit

Permalink
funções attack, lose e a de recomeçar
Browse files Browse the repository at this point in the history
  • Loading branch information
jmtannus committed Mar 1, 2024
1 parent fdd4402 commit 605f10b
Showing 1 changed file with 134 additions and 10 deletions.
144 changes: 134 additions & 10 deletions Aprenda JavaScript-básico-criando-um-jogo-de-RPG/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,26 +68,50 @@ const locations = [
"button functions": [attack, dodge, goTown],
text: "You are fighting a monster.",
},
{
name: "kill monster",
"button text": [
"Go to town square",
"Go to town square",
"Go to town square",
],
"button functions": [goTown, goTown, goTown],
text: 'The monster screams "Arg!" as it dies. You gain experience points and find gold.',
},
{
name: "lose",
"button text": ["REPLAY?", "REPLAY?", "REPLAY?"],
"button functions": [restart, restart, restart],
text: "You die. ☠",
},
{
name: "win",
"button text": ["REPLAY?", "REPLAY?", "REPLAY?"],
"button functions": [restart, restart, restart],
text: "You defeat the dragon! YOU WIN THE GAME! 🎉",
},
{
name: "easter egg",
"button text": ["2", "8", "Go to town square?"],
"button functions": [pickTwo, pickEight, goTown],
text: "You find a secret game. Pick a number above. Ten numbers will be randomly chosen between 0 and 10. If the number you choose matches one of the random numbers, you win!",
},
];






// initialize buttons
button1.onclick = goStore;
button2.onclick = goCave;
button3.onclick = fightDragon;

function update(location) {
monsterStats.style.display = "none";
button1.innerText = location["button text"][0];
button2.innerText = location["button text"][1];
button3.innerText = location["button text"][2];
button1.onclick = location["button functions"][0];
button2.onclick = location["button functions"][1];
button3.onclick = location["button functions"][2];
text.innerText = location.text;
text.innerHTML = location.text;
}

function goTown() {
Expand Down Expand Up @@ -151,21 +175,121 @@ function fightSlime() {
}

function fightBeast() {
fighting = 1;
goFight();
fighting = 1;
goFight();
}

function fightDragon() {
fighting = 2;
goFight();
}

function goFight() { }
function goFight() {
update(locations[3]);
monsterHealth = monsters[fighting].health;
monsterStats.style.display = "block";
monsterName.innerText = monsters[fighting].name;
monsterHealthText.innerText = monsterHealth;
}

function attack() {
text.innerText = "The " + monsters[fighting].name + " attacks.";
text.innerText +=
" You attack it with your " + weapons[currentWeapon].name + ".";
health -= getMonsterAttackValue(monsters[fighting].level);
if (isMonsterHit()) {
monsterHealth -=
weapons[currentWeapon].power + Math.floor(Math.random() * xp) + 1;
} else {
text.innerText += " You miss.";
}
healthText.innerText = health;
monsterHealthText.innerText = monsterHealth;
if (health <= 0) {
lose();
} else if (monsterHealth <= 0) {
if (fighting === 2) {
winGame();
} else {
defeatMonster();
}
}
if (Math.random() <= 0.1 && inventory.length !== 1) {
text.innerText += " Your " + inventory.pop() + " breaks.";
currentWeapon--;
}
}

function getMonsterAttackValue(level) {
const hit = level * 5 - Math.floor(Math.random() * xp);
console.log(hit);
return hit > 0 ? hit : 0;
}

function isMonsterHit() {
return Math.random() > 0.2 || health < 20;
}

function dodge() {

text.innerText = "You dodge the attack from the " + monsters[fighting].name;
}

function defeatMonster() {
gold += Math.floor(monsters[fighting].level * 6.7);
xp += monsters[fighting].level;
goldText.innerText = gold;
xpText.innerText = xp;
update(locations[4]);
}

function lose() {
update(locations[5]);
}

function winGame() {
update(locations[6]);
}

function restart() {
xp = 0;
health = 100;
gold = 50;
currentWeapon = 0;
inventory = ["stick"];
goldText.innerText = gold;
healthText.innerText = health;
xpText.innerText = xp;
goTown();
}

function easterEgg() {
update(locations[7]);
}

function pickTwo() {
pick(2);
}

function pickEight() {
pick(8);
}

function pick(guess) {
const numbers = [];
while (numbers.length < 10) {
numbers.push(Math.floor(Math.random() * 11));
}
text.innerText = "You picked " + guess + ". Here are the random numbers:\n";
for (let i = 0; i < 10; i++) {
text.innerText += numbers[i] + "\n";
}
if (numbers.includes(guess)) {
text.innerText += "Right! You win 20 gold!";
gold += 20;
goldText.innerText = gold;
} else {
text.innerText += "Wrong! You lose 10 health!";
health -= 10;
healthText.innerText = health;
}
}

0 comments on commit 605f10b

Please sign in to comment.