javascript - 如果 X 秒后 A 和 B 相同,则减少 A
问题描述
我目前正在尝试通过创建增量游戏来学习 JavaScript。
如果玩家正在互动或“雇用”新兵,我的变量之一(称为“名誉”)应该总是上升。但是,如果他们闲置并且新兵已经“死亡”,我希望声望缓慢下降,并且随着时间的推移下降速度增加,直到声望为0。
我想我已经找到了著名的减少乘数,但我正在努力解决的部分是“空闲”状态。
这是我目前拥有的代码:
window.setInterval(function () {
var lastrenown = renown;
document.getElementById("lastrenown").innerHTML = lastrenown;
}, 3000);
function renowndeccalc() {
if (renown != 0) {
if (renown == lastrenown) {
renown = renown - (100 * idlerenownmultiplier);
document.getElementById("renown").innerHTML = renown;
idlerenownmultiplier++
}
}
}
setInterval(renowndeccalc, 5000);
这里的目的是每 3 秒更新一次“lastrenown”以匹配 renown。如果玩家或新兵处于活跃状态,lastrenown 永远不应等于 renown。
如果玩家或新兵不活跃,lastrenown 应该等于 renown,此时每 5 秒 renown 减少 100 * 乘数。
实际发生的事情是名声根本没有改变。如果我删除 0 检查,则功能如下:
function renowndeccalc() {
if (renown == lastrenown) {
renown = renown - (100 * idlerenownmultiplier);
document.getElementById("renown").innerHTML = renown;
idlerenownmultiplier++
}
}
5秒后声望会下降100,然后不再重复。
我的理解是 setInterval 应该会导致函数重复您确定的频率,但是逻辑中的某些内容导致我的脚本无法按预期工作。
对此的任何帮助将不胜感激。
解决方案
我最终想通了:我应该使用一个函数并计算其中的所有内容,如下所示:
function renowndeccalc() {
if (renown != 0) {
if (renown <= 0) {
renown = 0;
lastrenown = 0;
document.getElementById("renown").innerHTML = renown;
document.getElementById("lastrenown").innerHTML = lastrenown;
idlerenownmultiplier = 1;
}
else if (renown > lastrenown) {
lastrenown = renown;
document.getElementById("lastrenown").innerHTML = lastrenown;
}
else if (renown == lastrenown) {
var calc = 100 * idlerenownmultiplier;
if (calc > renown) {
renown = 0;
lastrenown = 0;
document.getElementById("renown").innerHTML = renown;
document.getElementById("lastrenown").innerHTML = lastrenown;
idlerenownmultiplier = 1;
}
else {
renown = renown - calc;
lastrenown = renown;
document.getElementById("lastrenown").innerHTML = lastrenown;
document.getElementById("renown").innerHTML = renown;
idlerenownmultiplier++
}
}
}
}
setInterval(renowndeccalc, 5000);
推荐阅读
- html - Web 组件/HtmlElement:单元测试
- c# - 使用给定的肥皂消息构建 WCF 服务的最佳方法
- python - Python:“如果”函数
- javascript - 谷歌地球引擎过滤日期被情节忽略?
- python - Django Serializer 嵌套创建:如何避免对关系的 N+1 查询
- sql - NATURAL JOIN 和 USING 子句的意外结果
- python - Django auth 模型:将多个字段组合成一个 username_field
- c++ - fann_set_bit_fail_limit() 未能实际设置位失败限制,迫使我手动编辑 ANN 文件
- php - foreach 循环返回单个结果集而不是所有结果
- java - 尝试使用 Springs RestTemplate 执行 POST 请求时出现 RestClientException