如何使用javascript在两个函数之间切换?

如何使用javascript在两个函数之间切换?,javascript,Javascript,我目前正在做一个小游戏,并且处于开始阶段。到目前为止,我有两个函数可以执行以下操作: function playerAttack() { var newEnemy1HP = (EnemyOneStats.currentHitPoints -= PlayerStats.strength); EnemyOneStats.currentHitPoints = newEnemy1HP; } function enemyAttack() { var newPlayer1HP = (Playe

我目前正在做一个小游戏,并且处于开始阶段。到目前为止,我有两个函数可以执行以下操作:

function playerAttack() {
  var newEnemy1HP = (EnemyOneStats.currentHitPoints -= PlayerStats.strength);
  EnemyOneStats.currentHitPoints = newEnemy1HP;
}

function enemyAttack() {
  var newPlayer1HP = (PlayerStats.currentHitPoints -= EnemyOneStats.strength);
  PlayerStats.currentHitPoints = newPlayer1HP;
}
然后利用这些函数运行它们:

function playerAttackSim() {
  console.log("Player attacks!");
  playerAttack();
  console.log("Enemys HP:  " + EnemyOneStats.currentHitPoints);
}

function enemyAttackSim() {
  console.log("Enemy attacks!");
  enemyAttack();
  console.log("Players HP:  " + PlayerStats.currentHitPoints);
}
我想在两个玩家之间轮换,直到一个玩家“死亡”,但似乎找不到这样做的方法。我尽量让逻辑保持简单

function fightTest() {
  playerAttackSim();
  if (EnemyOneStats.currentHitPoints > 0) {
    enemyAttackSim();
  } else if ((EnemyOneStats.currentHitPoints = 0)) {
    console.log("Enemy fainted. Player Wins!");
  } else if (EnemyOneStats.currentHitPoints < 0) {
    console.log("Enemy fainted. Player Wins!");
  }
  enemyAttackSim();
  if (PlayerStats.currentHitPoints > 0) {
    playerAttackSim();
  } else if ((PlayerStats.currentHitPoints = 0)) {
    console.log("Player fained. Enemy wins.");
  } else if (PlayerStats.currentHitPoints < 0) {
    console.log("Player fained. Enemy wins.");
  }
}
功能战斗测试(){
playeratacksim();
如果(EnemyOneStats.currentHitPoints>0){
enemyAttackSim();
}否则如果((EnemyOneStats.currentHitPoints=0)){
控制台。日志(“敌人晕倒了。玩家赢了!”);
}否则如果(EnemyOneStats.currentHitPoints<0){
控制台。日志(“敌人晕倒了。玩家赢了!”);
}
enemyAttackSim();
如果(PlayerStats.currentHitPoints>0){
playeratacksim();
}否则如果((PlayerStats.currentHitPoints=0)){
控制台日志(“玩家受骗,敌人获胜”);
}否则如果(PlayerStats.currentHitPoints<0){
控制台日志(“玩家受骗,敌人获胜”);
}
}

我尝试了这一点,因为我是伪编码,但这并没有正确的交替。相反,我和玩家、敌人、敌人、玩家打交道,然后它停止了,没有记录结果。有什么建议吗?谢谢

这就是你想要做的吗

function fightTest() {
  while (true) {
    if (PlayerStats.currentHitPoints > 0) {
      playerAttackSim();
    } else {
      console.log("Player fained. Enemy wins.");
      break;
    }

    if (EnemyOneStats.currentHitPoints > 0) {
      enemyAttackSim();
    } else {
      console.log("Enemy fainted. Player Wins!");
      break;
    }

    console.log("----------------------");
  }
}

您可以简单地将这两者放在一个循环中:

while (true) {
  playerAttackSim();
  console.log('Player attacked; enemy hp:', EnemyOneStats.currentHitPoints);
  
  enemyAttackSim();
  console.log('Enemy attacked; player hp:', PlayerStats.currentHitPoints);
}
当然,这将得到一个无限循环。只要一个实体设法杀死另一个实体,我们就可以打破循环:

while (true) {
  playerAttackSim();
  console.log('Player attacked; enemy hp:', EnemyOneStats.currentHitPoints);
  if (EnemyOneStats.currentHitPoints <= 0) break;

  enemyAttackSim();
  console.log('Enemy attacked; player hp:', PlayerStats.currentHitPoints
  if (PlayerStats.currentHitPoints <= 0) break;
}
console.log('Fight is over');
while(true){
playeratacksim();
console.log('Player attacked;敌军hp:',EnemyOneStats.currentHittpoints);
if(EnemyOneStats.currentHitPoints
if((PlayerStats.currentHitPoints=0))
不会测试
PlayerStats.currentHitPoints
是否等于0。相反,它会将
PlayerStats.currentHitPoints
设置为0。也许你的意思是
=
而不是
=/code>?