用IVs进行口袋妖怪统计计算

时间:2017-11-22 20:44:39

标签: javascript

我正在开发一个网站,允许您通过输入统计数据和关卡来创建自己的宠物小精灵。

我在没有计算IV的情况下工作(个人价值是影响他们成长的所有口袋妖怪的可变数据)。

这是我工作的初始功能

function hpStat(pokemonLevel) {
"use strict";
var baseHP = document.getElementById("baseHP").value;

var hp = Math.floor(((baseHP * 2) * (pokemonLevel / 100)) + 10 + pokemonLevel);
return hp; }

但是当我尝试添加IV计算时,它给了我可笑的高数字。我尝试调整操作的顺序,但我总是得到一个大量的数字。我可以找到我的错误。 新功能:

function hpStat(pokemonLevel) {
"use strict";
var baseHP = document.getElementById("baseHP").value;
var hpIV = document.getElementById("hpIV").value;

var hp = Math.floor((((hpIV + baseHP) * 2) * (pokemonLevel / 100)) + 10 + pokemonLevel);
return hp; }

" hpIV" element是一个范围为0-31的输入标记。

2 个答案:

答案 0 :(得分:0)

将您的值转换为整数。他们以字符串形式运作。

答案 1 :(得分:0)

因此输入元素的.value属性将该值作为字符串返回。然后,如果你在不知不觉中尝试使用字符串进行数值计算,就会发生奇怪的事情。一个例子:

"1" + 1;
// Returns "11" <- string

1 + 1
// Returns 2 <- number

因此,添加IV和基本HP的代码使用字符串,而不是以数字方式添加,而是将字符串连接起来。然后当你乘以2时,它会自动再次转换回数字,导致你的奇怪结果。要修复它,只需确保您的值是get go:

中的数字
// Note that we now wrap these in a Number() call to cast them.
var baseHP = Number(document.getElementById("baseHP").value);
var hpIV = Number(document.getElementById("hpIV").value);

从那里你的代码按原样工作。