javascript - JS数学导致总和为负

标签 javascript html css

我正在尝试开发一款游戏。

但是我的数学有问题。每次总利润值变为负值。

我该如何解决?

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/

相关文章:

php - 重新加载表格而不刷新php中的整个页面

html - 无法让 Twitter Bootstrap 导航栏工作?

javascript - 我尝试将所有黑色代码更改为白色代码

html - 未对齐的 mailchimp 文本框?

javascript - 如何更改数据表的位置长度菜单?

javascript - 访问 Vue 实例上不存在的属性失败

javascript - 为什么这个 knockout 代码没有获取绑定(bind)到 ObservableArray 的更改?

javascript - 用 jQuery 制作下拉菜单

javascript - 导航栏可以隐藏,之后无法显示

javascript - 大量使用 ajax 问题 - 如何在页面上最初和之后在修改时呈现 html?