Javascript 创建一个循环,在敌人死亡后结束

Javascript 创建一个循环,在敌人死亡后结束,javascript,jquery,html,Javascript,Jquery,Html,我如何使用Javascript OOP来创建一个循环,直到玩家打败敌人 var character = {}; character.health = 5; character.damage = 1; var npc = {}; npc.health = 5; do { npc.health = npc.health -= character.damage; document.write(npc.health + "<br>"); } while (npc.hea

我如何使用Javascript OOP来创建一个循环,直到玩家打败敌人

var character = {};
character.health = 5;
character.damage = 1;

var npc = {};
npc.health = 5;

do {
    npc.health = npc.health -= character.damage;
    document.write(npc.health + "<br>");
}

while (npc.health != 0);
    if (npc.health == 0) {
        document.write("Player wins.");
    }
var character={};
性格健康=5;
字符损伤=1;
var npc={};
npc.health=5;
做{
npc.health=npc.health-=角色伤害;
文件。写(npc.health+“
”); } 而(npc.health!=0); 如果(npc.health==0){ 写下(“玩家赢了”); }

当角色伤害设置为1时,此选项有效,但一旦超过1,它将永远循环,浏览器崩溃?我很困惑。还有,我如何让它显示0而不是像-1这样的负数?

如果你的
字符.damage
是2,请考虑循环的迭代次数

第一次迭代后,
npc.health
将为3

第二次迭代后,
npc.health
将为1

第三次迭代后,
npc.health
将为-1

因为您的
while
状况是
npc.health!=0
,您的循环将永远持续,因为
npc.health
永远不会为0,它将继续变得越来越负

while
条件更改为
npc.health>0
可以解决您的问题

要不显示
npc
,在减去
字符.damage
后,只需添加
if
语句,然后再使用
document.write()
显示
npc.health

if (npc.health < 0) {
    npc.health = 0;
}
if(npc.health<0){
npc.health=0;
}

如果您的
字符.damage
为2,请考虑循环的迭代次数

第一次迭代后,
npc.health
将为3

第二次迭代后,
npc.health
将为1

第三次迭代后,
npc.health
将为-1

因为您的
while
状况是
npc.health!=0
,您的循环将永远持续,因为
npc.health
永远不会为0,它将继续变得越来越负

while
条件更改为
npc.health>0
可以解决您的问题

要不显示
npc
,在减去
字符.damage
后,只需添加
if
语句,然后再使用
document.write()
显示
npc.health

if (npc.health < 0) {
    npc.health = 0;
}
if(npc.health<0){
npc.health=0;
}

首先,让我们调整循环,以处理“赢”可能是因为健康状况变为负值的情况

do {
    npc.health -= character.damage;
    document.write(npc.health + "<br>");
} while (npc.health > 0);

if (npc.health <= 0) {
    document.write("Player wins.");
}
在进入此循环之前,您可能还希望检查
character.damage
是否为正值

if (character.damage > 0) while (true) // etc..

最后,NPC攻击玩家时也可以轻松扩展此模式

if(character.damage>0 | | npc.damage>0)//循环将最终结束
while(true){
//查塔克特攻击NPC
npc.健康-=性格伤害;

如果(npc.health首先让我们调整循环,以处理“赢”可能是因为健康状况变为负值的情况

do {
    npc.health -= character.damage;
    document.write(npc.health + "<br>");
} while (npc.health > 0);

if (npc.health <= 0) {
    document.write("Player wins.");
}
在进入此循环之前,您可能还希望检查
character.damage
是否为正值

if (character.damage > 0) while (true) // etc..

最后,NPC攻击玩家时也可以轻松扩展此模式

if(character.damage>0 | | npc.damage>0)//循环将最终结束
while(true){
//查塔克特攻击NPC
npc.健康-=性格伤害;

如果(npc.health根据我的说法,这里有一些逻辑问题。所以我把修改过的程序放在这里,试试你的运气。我还没有测试过这段代码,但我认为它会工作

var character = {};
character.health = 5;
character.damage = 1;

var npc = {};
npc.health = 5;

do {
    npc.health -= character.damage;
    if(npc.health>0)document.write(npc.health + "<br>");
    else break;
}while (npc.health > 0);

if (npc.health <= 0) {
    document.write("Player wins.");
}
var character={};
性格健康=5;
字符损伤=1;
var npc={};
npc.health=5;
做{
npc.健康-=性格伤害;
如果(npc.health>0)文件。写入(npc.health+“
”; 否则就断了; }而(npc.health>0);
如果(npc.health根据我的说法,这里有一些逻辑问题。所以我把修改过的程序放在这里,试试你的运气。我还没有测试过这段代码,但我认为它会工作

var character = {};
character.health = 5;
character.damage = 1;

var npc = {};
npc.health = 5;

do {
    npc.health -= character.damage;
    if(npc.health>0)document.write(npc.health + "<br>");
    else break;
}while (npc.health > 0);

if (npc.health <= 0) {
    document.write("Player wins.");
}
var character={};
性格健康=5;
字符损伤=1;
var npc={};
npc.health=5;
做{
npc.健康-=性格伤害;
如果(npc.health>0)文件。写入(npc.health+“
”; 否则就断了; }而(npc.health>0);
如果(npc.health我想你想把npc.health-=字符.伤害;
改为
npc.health-=字符.伤害;
你可能还想把npc.health的条件改为零以下以避免无限循环我想你想把
npc.health=npc.health-=字符.伤害;
改为
npc.health-=character.damage;
您可能还想将npc.health的条件更改为低于零以避免无限循环。对不起,我以为您将此条件放置在其他位置,删除我的注释谢谢您提供的非常详细的帮助!抱歉,我以为您将此条件放置在其他位置,删除我的注释谢谢您他提供了非常详细的帮助!这并没有解决不显示负数的问题,也没有提供任何解释,也没有比您10分钟前发布的答案增加任何价值。如果
npc.health
不能被
character.damage
整除,则在破解之前仍然会显示负数loop.so更改了我的代码,如果健康状况为负数,则循环将被阻止,负数将不会被打印。这不解决不显示负数的问题,也不提供任何解释,也不会比您10分钟前发布的答案增加任何价值。如果
npc.health
不能被
字符整除。损坏
,在断开循环之前仍会显示负数。因此,更改了我的代码,如果健康状况变为负数,则循环将被制动,ne