Javascript JS:如何创建赢得';同一件东西不能挑两次?

Javascript JS:如何创建赢得';同一件东西不能挑两次?,javascript,random,Javascript,Random,我正在为一个游戏制作一个随机挑选英雄的工具,这个工具将为玩家随机挑选英雄。我想添加一个功能,让它为整个3人团队挑选英雄,但我不知道如何才能让同一个英雄不会被挑选不止一次。下面是我为玩家随机挑选英雄的代码示例。提前谢谢你 <script language="JavaScript"> function pickhero(){ var imagenumber = 16 ; var randomnumber = Math.random() ; var rand1 = Math.round(

我正在为一个游戏制作一个随机挑选英雄的工具,这个工具将为玩家随机挑选英雄。我想添加一个功能,让它为整个3人团队挑选英雄,但我不知道如何才能让同一个英雄不会被挑选不止一次。下面是我为玩家随机挑选英雄的代码示例。提前谢谢你

<script language="JavaScript">

function pickhero(){
var imagenumber = 16 ;
var randomnumber = Math.random() ;
var rand1 = Math.round( (imagenumber-1) * randomnumber) + 1;
images = new Array
images[1] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/ringo.png"
images[2] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/krul.png"
images[3] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/ardan.png"
images[4] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/saw.png"
images[5] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/petal.png"
images[6] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/adagio.png"
images[7] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/catherine.png"
images[8] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/koshka.png"
images[9] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/skaarf.png"
images[10] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/joule.png"
images[11] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/glaive.png"
images[12] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/taka.png"
images[13] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/celeste.png"
images[14] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/vox.png"
images[15] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/fortress.png"
images[16] = "http://www.vaingloryfire.com/images/wikibase/icon/heroes/rona.png"
var image = images[rand1]
document.team1hero1.src = image
}
</script>

函数pickhero(){
var imagenumber=16;
var randomnumber=Math.random();
var rand1=数学取整((imagenumber-1)*随机数)+1;
图像=新阵列
图像[1]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/ringo.png"
图像[2]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/krul.png"
图像[3]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/ardan.png"
图像[4]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/saw.png"
图像[5]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/petal.png"
图像[6]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/adagio.png"
图像[7]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/catherine.png"
图像[8]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/koshka.png"
图像[9]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/skaarf.png"
图像[10]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/joule.png"
图像[11]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/glaive.png"
图像[12]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/taka.png"
图像[13]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/celeste.png"
图像[14]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/vox.png"
图像[15]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/fortress.png"
图像[16]=”http://www.vaingloryfire.com/images/wikibase/icon/heroes/rona.png"
var image=images[rand1]
document.team1hero1.src=image
}

从图像阵列中删除拾取的图像

然后对图像数组进行随机拾取


希望对你有帮助

首先,我将拥有一个pickhero()范围之外所有英雄的数组。然后,我将拥有第二个阵列,它将指向原始阵列,并在选择英雄时丢失元素

这里有一个简单的例子

var heroes = ["link1", "link2", "link3", "link4"];
var heroesAvailable = [];
for (var i=0; i<heroes.length; i++) {
    heroesAvailable.push(i);  // [0, 1, 2, 3]
}

var heroesChosen = [];
for (var i=0; i<3; i++) {  // choose 3 heroes
    // the amount of heroes not chosen yet
    var imageNumber = heroesAvailable.length;
    var randHero = Math.floor(Math.random()*imageNumber);

    heroesChosen.push(heroes[heroesAvailable[randHero]]);

    // remove that hero from the available array
    heroesAvailable.splice(randHero, 1);
}
var英雄=[“link1”、“link2”、“link3”、“link4”];
var heroesAvailable=[];

对于(var i=0;i刚刚为您创建了一个函数

var randElemsWithoutReplace = function (ls_, n) {
  var ls = ls_.slice();
  var selections = [];
  for (var i = 0; i < n; i++) {
    selections.push(ls.splice(Math.floor(Math.random()*ls.length), 1)[0]);
  }
  return selections;
};
我想从数组中随机选择三个不同的元素,我会这样写

randElemsWithoutReplace(myArray, 3);

这将返回一个包含三个随机选择的元素的数组。

可能最好返回字符串,而不是使用硬编码的目标
document.team1hero1.src

function pickhero() {
    if (!pickhero.images) {
        pickhero.images = ['ringo', 'krul', 'ardan', 'saw', 'petal', 'adagio', 'catherine', 'koshka', 'skaarf', 'joule', 'glaive', 'taka', 'celeste', 'vox', 'fortress', 'rona'];
    }
    var i = Math.random() * pickhero.images.length | 0;
    return 'http://www.vaingloryfire.com/images/wikibase/icon/heroes/' + pickhero.images.splice(i, 1) + '.png';;
}
document.team1hero1.src = pickhero();
function pickhero() {
    if (!pickhero.images) {
        pickhero.images = ['ringo', 'krul', 'ardan', 'saw', 'petal', 'adagio', 'catherine', 'koshka', 'skaarf', 'joule', 'glaive', 'taka', 'celeste', 'vox', 'fortress', 'rona'];
    }
    var i = Math.random() * pickhero.images.length | 0;
    return 'http://www.vaingloryfire.com/images/wikibase/icon/heroes/' + pickhero.images.splice(i, 1) + '.png';;
}
document.team1hero1.src = pickhero();