-1

タイトルが少しわかりにくいかもしれないので、私の状況を説明させてください。

基本的に私はドラゴンのミニゲームを作りました。機能の 1 つは、コンソールがドラゴンを攻撃した後にメッセージをランダム化できるトーク機能です。ただ、そのトーク機能を存在させて発動させる機能を2つ追加したいのですが、前のターンで既に発動している場合は、機能させずに別のトークメッセージを使用したいです。

したがって、次のようなことを言う代わりに:

ドラゴンをたたいた!ドラゴンをたたいた!ドラゴンをたたいた!ドラゴンに当たりました!

毎回ランダム化し、繰り返さないようにしたい。

ドラゴンをたたいた!ドラゴンに当たりました!ドラゴンをたたいた!ドラゴンに当たりました!

私が使用しているコードは長すぎるので、私ができることのスニペットを提供します。

 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 に答える