我正在尝试开发一款游戏。
但是我的数学有问题。每次总利润值变为负值。
我该如何解决?
var gameProfit = 10000;
var tinyOwned = 0;
var tinyCost = 10000;
var tinyIncome = 0;
function buyTiny(){
if (gameProfit >= tinyCost){
tinyOwned += 1;
document.getElementById('tiny-owned').innerHTML = tinyOwned;
document.getElementById('current-profit').innerHTML = "Profit : $ " + (gameProfit -= tinyCost * tinyOwned);
document.getElementById('tiny-cost').innerHTML = "Next Cost : $ " + (tinyCost * tinyOwned + 10000);
document.getElementById('tiny-income').innerHTML = "Income : $ " + (tinyIncome = 15000 * tinyOwned);
}
}
var timer = 0;
var timeInterval = 10;
window.setInterval(function gameTimer() {
if (timer >= 0) {
timer++;
document.getElementById('timer-value').style.width = timer + "px";
}
if (timer >= 600) {
timer = 0 + 1;
document.getElementById('timer-value').style.width = "0px";
tinyIncome = 15000 * tinyOwned;
gameProfit += tinyIncome;
document.getElementById('current-profit').innerHTML = "Profit : $ " + (gameProfit);
}
}, timeInterval);
谁能看出我代码中的问题? gameProfit 变量变为负数如何解决?
最佳答案
您允许某人在以下情况下购买:gameProfit >= tinyCost
但是您可以像这样减少 gameProfit:gameProfit -= tinyCost * tinyOwned
所以你拿的比你最初检查的多!修复:
if (gameProfit >= tinyCost * tinyOwned){
数学看起来真的很乱,尤其是因为它与设置 InnerHtml 混在一起。我强烈建议先做数学运算,然后更新 Html.InnerHTML
Offtopic:如果你打算将其用于多人游戏,请确保转义你的数据,否则人们可以跨脚本编写它(Can I escape html special chars in javascript?),但这是你实际上不必担心的事情阶段。
关于javascript - JS数学导致总和为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790002/