-1

我知道标题可能有点混乱,所以请允许我解释一下我的情况。

基本上我做了一个龙小游戏,其中一个功能是谈话功能,它允许控制台在击中龙后随机化一条消息。但是,现在我想添加第二个功能,允许该通话功能存在并激活,但如果它在上一回合已经激活,我希望它不起作用并使用不同的通话信息。

所以不要说这样的话:

我击中了龙!我击中了龙!我击中了龙!我撞到了龙!

我希望它每次都随机化,而不是重复。

我击中了龙!我撞到了龙!我击中了龙!我撞到了龙!

我使用的代码太长了,所以我会给你一个我能做的片段。

 player.TALK = Math.floor(Math.random() * 3);
if (player.HP >= 1) {
if ((player.DAMAGE >= 1) && (player.AIM >= 3) && (player.SPECIALAIM >= 2)){
    npc.HP = npc.HP - player.DAMAGE;
    if (player.TALK === 0) {console.log("PLAYER HP: " + player.HP + " --You hammer the Dragon for " + player.DAMAGE + " hp! " + "It only has " + npc.HP + "hp left!--");
    }
    if (player.TALK === 1) {console.log("PLAYER HP: " + player.HP + " --You slice the Dragon for " + player.DAMAGE + " hp! " + "It only has " + npc.HP + "hp left!--");
    }
    if (player.TALK === 2) {console.log("PLAYER HP: " + player.HP + " --You sever the Dragon for " + player.DAMAGE + " hp! " + "It only has " + npc.HP + "hp left!--");
    }

这是我拥有的较大代码的一小部分,在这里发布太多了。

基本上我想弄清楚的是如何让计算机执行一次语句,当它再次循环回到它时,如果它上次使用它,不再使用它,但不完全破坏它它永远不会再次使用它,就像它上次使用它一样,那么它就不会重复,而是使用不同的谈话选项。

4

1 回答 1

0

您可以使用不时清空的辅助数组,然后重新填充。抛开 hp 和其他东西,它是这样的:

player.TALK=['you pwn the dragon','you kick the dragon','you eviscerate the dragon'];
player.AUXTALK=player.TALK.slice(0);

function killdragon(player) {
    var talkindex = Math.floor(Math.random() * player.AUXTALK.length);
    console.log(player.AUXTALK[talkindex]);
    delete player.AUXTALK[talkindex];
    if (player.AUXTALK.length==0) player.AUXTALK=player.TALK.slice(0);
}
于 2013-09-10T00:24:04.533 回答