[英]How to make a monster hit a random player in javascript
我正在嘗試在 vue js 中制作一個游戲,我有坦克、dps 和治療師
data: {
tankHealth: 100,
healerHealth: 100,
dpsHealth: 100,
monsterHealth: 200,
gameRunning: false,
turns: [],
},
我有一個按鈕,當它被點擊時,它會進入一個 setinterval function 每隔 1 秒坦克和 dps 攻擊怪物。 治療者治療其中一名玩家。 但是當怪物攻擊玩家時,我希望怪物隨機攻擊這樣的玩家之一:
var monsterDamage = self.calculateDamage(10,20); // returns a random number between 10 and 20
var number = self.randomNumberFn(1,3);
// get a random number here so i can randomly pick a player to attack
switch(number) {
case 1:
self.dpsHealth -= monsterDamage;
if(self.dpsHealth <= 0) {
self.dpsHealth = 0;
break;
}
break;
case 2:
self.tankHealth -= monsterDamage;
if(self.tankHealth <= 0) {
self.tankHealth = 0;
break;
}
break;
case 3:
self.healerHealth -= monsterDamage;
if(self.healerHealth <= 0) {
self.healerHealth = 0;
break;
}
break;
}
當其中一名球員死亡時,問題就來了。 在這種情況下,我希望怪物只攻擊活着的玩家。 在我現在擁有的 model 中,即使其中一名玩家死了,怪物也會繼續攻擊他
也許像這樣?
do {
var n1 = 1;
var n2 = 3;
var monsterDamage = self.calculateDamage(10, 20);
var number = self.randomNumberFn(n1, n2);
switch (number) {
case 1:
if (self.dpsHealth === 0) { // === checks type too...
n1 = 2;
continue;
}
self.dpsHealth = doDamage(self.dpsHealth, monsterDamage);
break;
case 2:
if (self.dpsHealth === 0) {
continue;
}
self.tankHealth = doDamage(self.tankHealth, monsterDamage);
break;
case 3:
if (self.dpsHealth === 0) {
n2 = 2;
continue;
}
self.healerHealth = doDamage(self.healerHealth, monsterDamage);
break;
}
} while((self.dpsHealth + self.tankHealth + self.healerHealth) === 0)
function doDamage(health, damage) {
if ((health - damage) <= 0) {
return 0;
} else {
return health - damage;
}
}
為了解決這個問題,你可以創建一個數組來保存你的活人,並遍歷所述數組以獲得隨機值。
let livingHumans = [];
if(dpsHealth > 0) {
livingHumans.push({name:'dpsHealth', health:dpsHealth});
}
if(tankHealth > 0) {
livingHumans.push({name:'tankHealth', health:tankHealth});
}
if(healerHealth > 0) {
livingHumans.push({name:'healerHealth', health:healerHealth});
}
// get random value from array
let number = self.randomNumber(1, livingHumans.length)
// once you receive the output,
// you can use the name property to find the player in your object.
name = livingHumans[number].name;
console.log(data[name]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.