所以,我想编写用随机统计数据创建单位的代码。
这是Enemy Constructor:
function Enemy(name, atk, def, hp, mp, xp_val){
this.name = name;
this.atk = atk;
this.def= def;
this.hp = hp;
this.max_hp = hp;
this.mp = mp;
this.max_mp = mp;
this.xp_val = xp_val;
totalEnemies++;
}
这是创建随机敌人的补充代码。
function createEnemy(name, difficulty){
var atk = getIntBetween(5, 10);
var def = getIntBetween (0, 5);
var hp = getIntBetween(15, 25);
var mp = getIntBetween(0, 7);
var xp_val = getIntBetween(5, 10);
var multiplier;
if (difficulty === 1 || difficulty.toLowerCase() === "easy"){ multiplier = 1; }
if (difficulty === 2 || difficulty.toLowerCase() === "average"){ multiplier = 2; }
if (difficulty === 3 || difficulty.toLowerCase() === "challenge"){ multiplier = 4; }
if (difficulty === 4 || difficulty.toLowerCase() === "damn"){ multiplier = 7; }
if (difficulty === 5 || difficulty.toLowerCase() === "nightmare"){ multiplier = 11; }
atk *= multiplier;
def *=multiplier;
hp *= multiplier;
mp *= multiplier;
xp_val *= multiplier;
return new Enemy(name, atk, def, hp, mp, xp_val);
}
我尝试用:
创建一个实例var goblin_02 = createEnemy("Goblin Dirtbag", 2);
我在标题中收到错误。这一切都是为了规避JS'缺乏重载的构造函数,我哪里出错?
答案 0 :(得分:1)
我想它就在这里:
if (difficulty === 1 || difficulty.toLowerCase() === "easy"){ multiplier = 1; }
您正在为2
传递difficulty
。它不等于1
,因此您接下来基本上会调用2.toLowerCase()
。不出所料,这不是真的。
答案 1 :(得分:0)
我在代码中做了一些更改,但它已经有效了。
<script>
var totalEnemies = 0;
function Enemy(name, atk, def, hp, mp, xp_val){
this.name = name;
this.atk = atk;
this.def= def;
this.hp = hp;
this.max_hp = hp;
this.mp = mp;
this.max_mp = mp;
this.xp_val = xp_val;
totalEnemies++;
}
function createEnemy(name, difficulty){
var atk = getIntBetween(5, 10);
var def = getIntBetween (0, 5);
var hp = getIntBetween(15, 25);
var mp = getIntBetween(0, 7);
var xp_val = getIntBetween(5, 10);
var multiplier;
if (((typeof(difficulty) === "number") && (difficulty === 1)) || ((typeof(difficulty) === "string") && (difficulty.toLowerCase() === "easy"))){ multiplier = 1; }
if (difficulty === 2){ multiplier = 2; }
if (difficulty === 3){ multiplier = 4; }
if (difficulty === 4){ multiplier = 7; }
if (difficulty === 5){ multiplier = 11; }
atk *= multiplier;
def *=multiplier;
hp *= multiplier;
mp *= multiplier;
xp_val *= multiplier;
return new Enemy(name, atk, def, hp, mp, xp_val);
}
function create() {
var goblin_02 = createEnemy("Goblin Dirtbag", 2);
console.log(goblin_02,totalEnemies);
}
function getIntBetween(i,j){
var number = Math.floor((Math.random() * j) + i);
return number;
}
</script>
</head>
<body onload="create()">
</body>
您只需要更改所有if块的if条件。