Javascript 多次运行的Switch语句
我又回来了,就像以前一样难堪。。。我对我的游戏有了进一步的了解,但回顾游戏的一部分,我会检查你是否有药剂,如果你有,并且你尝试使用它,它会计算当前的生命值和药剂的添加量是否超过玩家的最大生命值。如果是,它会告诉你不能喝,如果不是,它会让你喝。然后如果你没有任何药剂,你尝试使用它,它会告诉你你没有 我的问题是它运行了两次,我不知道为什么。下面是Switch语句的一个片段:Javascript 多次运行的Switch语句,javascript,switch-statement,Javascript,Switch Statement,我又回来了,就像以前一样难堪。。。我对我的游戏有了进一步的了解,但回顾游戏的一部分,我会检查你是否有药剂,如果你有,并且你尝试使用它,它会计算当前的生命值和药剂的添加量是否超过玩家的最大生命值。如果是,它会告诉你不能喝,如果不是,它会让你喝。然后如果你没有任何药剂,你尝试使用它,它会告诉你你没有 我的问题是它运行了两次,我不知道为什么。下面是Switch语句的一个片段: while (currentarea == "Hero's Turn") { if (hTurn == true) {
while (currentarea == "Hero's Turn") {
if (hTurn == true) {
switch (classType) {
case "Warrior":
case "Archer":
switch (input) {
case "punch":
case "p":
Punch();
break;
case "kick":
case "k":
Kick();
break;
case "attack":
case "a":
Attack();
break;
case "health potion":
case "h":
HealthPotion();
break;
default:
}
case "Mage":
switch (input) {
case "fire":
case "f":
FireMagic();
break;
case "wind":
case "w":
WindMagic();
break;
case "frost":
case "c":
IceMagic();
break;
case "health potion":
case "h":
HealthPotion();
break;
case "mana potion":
case "m":
ManaPotion();
break;
default:
}
default:
}
return;
}
}
我试着把弓箭手移到自己的路线上,结果它跑了三次。问题在于战士和弓箭手,法师只按预期推送一次信息
这是函数的代码:
function HealthPotion() {
if (healthPotion.AmountOf < 1) {
$("<p>Sorry, you don't have any more of those.</p>").hide().insertBefore("#placeholder").fadeIn(1000);
checkH();
return;
}
if (healthPotion.AmountOf != 0) {
if(battleHealth + healthPotion.Health <= maxHealth) {
$("<p>You regained some Health! You regained " + healthPotion.Health + " HP!</p>").hide().insertBefore("#placeholder").fadeIn(1000);
battleHealth += healthPotion.Health;
document.getElementById("battleHealth").innerHTML = battleHealth;
healthPotion.AmountOf--;
document.getElementById("healthPotion.AmountOf").innerHTML = healthPotion.AmountOf;
checkE();
return;
}
else {
$("<p>Your health isn't damaged enough for that! It would be a waste to use that right now.<br />Press enter to carry on.</p>").hide().insertBefore("#placeholder").fadeIn(1000);
checkH();
return;
}
}
}
这是循环的方向(敌人和英雄检查):
函数检查(){
如果(电子健康>=1){
currentarea=“轮到敌人了”;
document.getElementById(“currentarea”).innerHTML=currentarea;
hTurn=false;
eTurn=true;
返回;
}
否则如果(eHealth=1){
currentarea=“战斗”;
document.getElementById(“currentarea”).innerHTML=currentarea;
eTurn=false;
hTurn=true;
返回;
}
否则,如果(战斗健康你突破了内部开关,那么这个突破对外部开关没有任何作用,所以当你有“战士”时,它会这样做,因为在它的级别上没有突破,它会转到“法师”
开关(类类型){
“勇士”案:
“阿切尔”案:
开关(输入){
案例“冲压”:
案例“p”:
冲压();
打破
案例“踢”:
案例“k”:
踢();
打破
“攻击”一案:
案例“a”:
攻击();
打破
案例“健康药水”:
案例“h”:
健康药水();
打破
违约:
}
打断;//你打断了内部开关,这个打断对外部开关没有任何作用,所以当你有“战士”时,它会这样做,因为在它的级别上没有打断,它会转到“法师”
开关(类类型){
“勇士”案:
“阿切尔”案:
开关(输入){
案例“冲压”:
案例“p”:
冲压();
打破
案例“踢”:
案例“k”:
踢();
打破
“攻击”一案:
案例“a”:
攻击();
打破
案例“健康药水”:
案例“h”:
健康药水();
打破
违约:
}
break;//你知道如何从开发工具中调试吗?你的外部开关
缺少一些break
sw循环条件在哪里变化?除非你调用的函数是changecurrentarea
你有一个infiniate循环。你没有从第一个开关中断,只有嵌套的开关……因此它将进入下一个循环下一步…你知道如何从开发工具中调试吗?你的外部开关缺少一些中断开关循环条件在哪里变化?除非你调用的函数changecurrentarea
你有一个infiniate循环。你没有中断第一个开关,只有嵌套的开关。因此它将进入下一个循环接下来…天哪…我不知道我需要在那里休息。谢谢。我以为我的代码中有其他嵌套的switch语句,但我错了。到目前为止,这是第一个。天哪…我不知道我需要在那里休息。谢谢。我以为我的代码中有其他嵌套的switch语句,但我错了。到目前为止,这是第一个。
var healthPotion = { //Recovers battle HP.
Name: "Health Potion",
Health: 20,
AmountOf: 5,
Value: 30,
}
function checkE() {
if (eHealth >= 1) {
currentarea = "Enemy's Turn";
document.getElementById("currentarea").innerHTML = currentarea;
hTurn = false;
eTurn = true;
return;
}
else if (eHealth <= 0) {
eHealth = 0;
document.getElementById("eHealth").innerHTML = eHealth;
currentarea = "Death";
win++;
document.getElementById("win").innerHTML = win;
hTurn = false;
eTurn = false;
return;
}
}
function checkH() {
if (battleHealth >= 1) {
currentarea = "Battle";
document.getElementById("currentarea").innerHTML = currentarea;
eTurn = false;
hTurn = true;
return;
}
else if (battleHealth <= 0) {
battleHealth = 0;
document.getElementById("battleHealth").innerHTML = battleHealth;
currentarea = "Death";
document.getElementById("currentarea").innerHTML = currentarea;
lose++;
document.getElementById("lose").innerHTML = lose;
return;
}
}
switch (classType) {
case "Warrior":
case "Archer":
switch (input) {
case "punch":
case "p":
Punch();
break;
case "kick":
case "k":
Kick();
break;
case "attack":
case "a":
Attack();
break;
case "health potion":
case "h":
HealthPotion();
break;
default:
}
break; // <-- YOU NEED THIS HERE
case "Mage":
switch (input) {
case "fire":
case "f":
FireMagic();
break;
case "wind":
case "w":
WindMagic();
break;
case "frost":
case "c":
IceMagic();
break;
case "health potion":
case "h":
HealthPotion();
break;
case "mana potion":
case "m":
ManaPotion();
break;
default:
}
break; // <-- YOU NEED THIS HERE IF YOU DO SOMETHING IN DEFAULT
default:
}