learnin-some-vue/proj_1_monster/app.js

80 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-04-14 04:08:16 +00:00
PLAYER = 0;
MONSTER = 1;
var app = new Vue({
el: '#app',
data: {
pHP: 100,
mHP: 100,
gameOn: false,
logs: [],
},
watch: {
pHP(value){
if (value <= 0){
alert("You lose");
this.giveUp();
}
},
mHP(value){
if (value <= 0){
alert("You Win!");
this.giveUp();
}
}
},
methods:{
start(){
this.gameOn = true;
this.mHP = 100;
this.pHP = 100;
this.logs = [];
},
playerAttack(){
console.log("player Attack");
var dmg = this.getRandomInt(1, 10);
var log = {attacker: 'player', dmg: dmg}
this.mHP -= dmg;
this.logs.unshift(log);
this.monsterAttack();
},
specialAttack(){
console.log("special Attack");
var dmg = this.getRandomInt(1, 20);
var log = {attacker: 'player', dmg: dmg}
this.mHP -= dmg;
this.logs.unshift(log);
this.monsterAttack();
},
heal(){
console.log("heal");
var hp = this.getRandomInt(1, 10);
this.pHP += hp;
this.monsterAttack();
},
giveUp(){
this.gameOn = false;
this.logs = [];
},
monsterAttack(){
console.log("attacked");
var dmg = this.getRandomInt(1, 10);
var log = { attacker: 'monster', dmg: dmg}
this.pHP -= dmg;
this.logs.unshift(log);
},
getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
},
computed: {
mHPStyle(){
return {width: this.mHP + "%"};
},
pHPStyle(){
return {width: this.pHP + "%"};
},
}
})