gpt4 book ai didi

javascript - 调整这个 RPG 战斗循环?

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:06 24 4
gpt4 key购买 nike

客户端 + 服务器都是用 Javascript 编写的。我没有主游戏循环,因为战斗很少发生,而且游戏中没有其他东西需要循环。当两个玩家开始战斗时,他们会进入这样一个自动攻击循环:

if ( combat key is pressed ) {

check a bunch of stuff;
setTimeout( combatLoop(); 5000 );

}

combatLoop = function() {

attack(player1,player2);

var loop = setTimeout( combatLoop(); 5000 );

if ( skill variable == 1 ) { clearTimeout(loop); skill(); }

}

所以,combatLoop 函数每 5 秒就会被一遍又一遍地调用。攻击函数处理当两个输入玩家互相攻击时发生的事情。如果玩家使用技能,则使用 clearTimeout 跳出循环,并调用相关的 skill() 函数。技能函数可能会也可能不会再次调用战斗循环。

问题一

我是 Javascript 的新手,我想知道你们是否发现这样做有任何重大缺陷?

问题二

我还没有看到任何类似的例子说明我正在尝试做什么,所以我有点把技能按钮部分放在一起。以这种方式让战斗循环“监听”技能按钮按下(技能按钮按下=>设置技能变量= 1)并使用clearTimeout清除主循环是否“错误”?因此,技能会在下一次攻击期间执行(而不是在攻击之间),这对我来说很好。不知道工业标准是什么。 :p

最佳答案

你可以这样做,虽然我不是 setInterval() 的忠实粉丝:

if (keypressed) { //change this to a proper event handler ;)
Engine.combatStart();
}

var Engine = {
combatTimer: null, //timer var
combatStart: function() {
Engine.combatTimer = setTimeout(Engine.combatLogic, 5000);
},
combatLogic: function() {
//calculate attacks etc...

if (skill === 1) {
clearTimeout(Engine.combatTimer);
skill();
}

Engine.combatTimer = setTimeout(Engine.combatLogic, 5000);
}
};

您还可以:

document.addEventListener("keypress", function(e) {
if (e.keyCode === XX) {
clearTimeout(Engine.combatTimer);
skill()
}
});

所以你监听一个keypress,用技能键的keycode替换XX - 然后清除超时循环...:/

关于javascript - 调整这个 RPG 战斗循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com