2021-01-20 22:50:24 +01:00
|
|
|
"use strict";
|
|
|
|
|
2021-01-22 19:49:46 +01:00
|
|
|
function getRandomValue(min, max) {
|
2021-01-20 22:50:24 +01:00
|
|
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
|
|
}
|
|
|
|
|
|
|
|
const app = Vue.createApp({
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
playerHealth: 100,
|
|
|
|
monsterHealth: 100,
|
|
|
|
battleLog: [],
|
2021-01-21 12:28:31 +01:00
|
|
|
currentRound: 0,
|
2021-01-22 19:50:36 +01:00
|
|
|
winner: null,
|
2021-01-20 22:50:24 +01:00
|
|
|
};
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
monsterBarStyles() {
|
|
|
|
return { width: this.monsterHealth + "%" };
|
|
|
|
},
|
|
|
|
playerBarStyles() {
|
|
|
|
return { width: this.playerHealth + "%" };
|
|
|
|
},
|
2021-01-21 12:28:31 +01:00
|
|
|
specialAttackAllowed() {
|
|
|
|
return this.currentRound % 3 !== 0;
|
|
|
|
},
|
2021-01-22 19:50:36 +01:00
|
|
|
playerWon() {
|
|
|
|
if (this.winner === "player") {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
monsterWon() {
|
|
|
|
if (this.winner === "monster") {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
draw() {
|
|
|
|
if (this.winner === "draw") {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
playerHealth(value) {
|
|
|
|
if (value <= 0 && this.monsterHealth <= 0) {
|
|
|
|
this.winner = "draw";
|
|
|
|
} else if (value <= 0) {
|
|
|
|
this.winner = "monster";
|
|
|
|
}
|
|
|
|
},
|
|
|
|
monsterHealth(value) {
|
|
|
|
if (value <= 0 && this.playerHealth <= 0) {
|
|
|
|
this.winner = "draw";
|
|
|
|
} else if (value <= 0) {
|
|
|
|
this.winner = "player";
|
|
|
|
}
|
|
|
|
},
|
2021-01-20 22:50:24 +01:00
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
attackMonster() {
|
2021-01-21 12:28:31 +01:00
|
|
|
this.currentRound++;
|
2021-01-22 19:49:46 +01:00
|
|
|
this.monsterHealth -= getRandomValue(5, 12);
|
2021-01-20 22:50:24 +01:00
|
|
|
this.attackPlayer();
|
|
|
|
},
|
2021-01-21 12:28:31 +01:00
|
|
|
specialAttackMonster() {
|
|
|
|
this.currentRound++;
|
2021-01-22 19:49:46 +01:00
|
|
|
this.monsterHealth -= getRandomValue(10, 25);
|
|
|
|
this.attackPlayer();
|
|
|
|
},
|
2021-01-22 19:50:16 +01:00
|
|
|
healPlayer() {
|
|
|
|
this.currentRound++;
|
|
|
|
const healValue = getRandomValue(8, 20);
|
|
|
|
if (this.playerHealth + healValue > 100) {
|
|
|
|
this.playerHealth = 100;
|
|
|
|
} else {
|
|
|
|
this.playerHealth += healValue;
|
|
|
|
}
|
2021-01-21 12:28:31 +01:00
|
|
|
this.attackPlayer();
|
|
|
|
},
|
2021-01-20 22:50:24 +01:00
|
|
|
surrender() {},
|
|
|
|
attackPlayer() {
|
2021-01-22 19:50:16 +01:00
|
|
|
this.playerHealth -= getRandomValue(8, 15);
|
2021-01-20 22:50:24 +01:00
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
app.mount("#game");
|