如何使用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.currentHitPointsif((PlayerStats.currentHitPoints=0))
不会测试PlayerStats.currentHitPoints
是否等于0。相反,它会将PlayerStats.currentHitPoints
设置为0。也许你的意思是=
而不是=/code>?