Javascript 输入值变成无限循环(RPG战斗)
我想进行一场回合制战斗(RPG风格),直到我或对手的血量降到0,每回合通过表单输入一个数字 问题是,一旦加载index.js文件,我就得到了一个无限循环。我无法在表单中输入任何内容。我试图退出函数以从循环中获取值。我现在可以输入一个数字,但它在循环中不起作用。我尝试在函数()中定义所有代码的范围,并使用回调函数 代码如下:Javascript 输入值变成无限循环(RPG战斗),javascript,jquery,Javascript,Jquery,我想进行一场回合制战斗(RPG风格),直到我或对手的血量降到0,每回合通过表单输入一个数字 问题是,一旦加载index.js文件,我就得到了一个无限循环。我无法在表单中输入任何内容。我试图退出函数以从循环中获取值。我现在可以输入一个数字,但它在循环中不起作用。我尝试在函数()中定义所有代码的范围,并使用回调函数 代码如下: while((opponant.health>0)和&(player.health>0)){ $(“#按钮”)。单击(函数(){ attDef=$('#battleinpu
while((opponant.health>0)和&(player.health>0)){
$(“#按钮”)。单击(函数(){
attDef=$('#battleinput').val();
控制台日志(attDef);
opponantAttDef=Math.floor(Math.random()*2)+1;
if(attDef==1&&opponantAttDef==1){
opponant.health=opponant.health-player.force;
player.health=player.health-opponant.strength;
$(“#战斗日志h3 ol”).append(“你攻击”+opponant.name+“+opponant.health+”剩余血量。
“+opponant.name+”攻击你。你得到了“+player.health+”剩余血量
”;
}else if(attDef==2&&opponantAttDef==1){
player.health=player.health-(opponant.strength/2);
$(“#战斗日志h3 ol”).append(“你保护自己。
”+opponant.name+“攻击你。你得到了剩余的“+player.health+”
”);
}else if(attDef==1&&opponantAttDef==2){
opponant.health=opponant.health-(player.strength/2);
$(“#战斗日志h3 ol”)。附加(“你攻击“+opponant.name+”,但它会自我防御。你的伤害减半。你的敌人仍然有“+opponant.health+”生命。
”;
}else if(attDef==2&&opponantAttDef==2){
$(“#战车h3 ol”)。追加(“你们都站在窗台上。什么都没发生…
”);
}否则{
$(“#作战日志h3 ol”)。追加(“错误输入”
”);
}
})
}
Yataaaa!!!
你的战斗日志:
正如我在评论中所说:
while((opponant.health>0)和&(player.health>0))
在加载时为true
,因此您的脚本在上无限添加一个事件侦听器
事实上,您的while
循环并不适合使用。您应该在点击按钮后检查演员的HP,然后在该功能中执行不同的过程
非常简单,将while
语句替换为if
条件,单击按钮时将检查该条件
在这种情况下,停止脚本的其余部分并删除事件侦听器
看看下面我做了什么。我允许自己在玩家或对手死亡时添加一个战斗日志(并且我纠正了许多细节,比如用替换
)
//此块仅用于确保代码段正常工作。
const Actor=函数(名称、hp、str){
this.name=名称;
这是健康=马力;
这个强度=str;
};
康斯特对手=新演员(“对手”,10,2),
玩家=新演员(“玩家”,10,2);
//上面的代码块只是为了使代码段正确工作。
$(“#按钮”)。单击(函数(){
//当玩家死亡时:
if(player.healthwhile((opponant.health>0)和&(player.health>0))
在加载时为true
,因此您的脚本在#battlebutton
上无限添加一个事件侦听器。事实上,您的while
循环不适合使用。您应该在单击按钮后检查演员的HP,然后在该功能中执行不同的过程。我尝试了,但没有成功。我尝试了一个功能在与参数的斗争中,我必须错过一些东西……没有任何东西会改变循环中while条件的值,因此Javascript除了循环中的内容(一个毫无意义的内容)之外,永远不会做任何事情。