我正在尝试使用JS游戏中的权力游戏来编码随机房屋生成器, 此刻的代码如下:
//Houses Array:
var HousesArray = [
'Stark',
'Lanister',
'Greyjoy',
'Barathion',
'Arryn',
'Tyrell',
'Martell',
'Targaryen'
];
//Houses Variables:
var house1 = {}
var house2 = {}
var house3 = {}
//Random House Generator
var RandomIndex = Math.floor(Math.random()*HousesArray.length)
var RandomElement = HousesArray[RandomIndex]
//3 Players Generator:
house1 = RandomElement
console.log(house1)
HousesArray.splice(house1,1)
RandomElement = HousesArray[RandomIndex]
house2 = RandomElement
console.log(house2)
HousesArray.splice(house2,1)
RandomElement = HousesArray[RandomIndex]
house3 = RandomElement
console.log(house3)
我在这里尝试做的是给house1变量一个来自HousesArray Eelements之一的随机房屋名称, 将其回显到控制台日志, 然后使用拼接命令从HousesArray中删除所选元素(以确保下一个选择不会是相同的)。 毕竟-从HousesArray中剩余的元素生成新的房屋名称,然后重复。 但是对于某些原因,每次house1 =“ Targaryen”(或house2)时,下2/1个解决方案都会自动返回“未定义”(我相信它是因为“ Targaryen”元素是列表中的最后一个)
我该如何解决?
答案 0 :(得分:0)
这里似乎没有正确使用splice方法,它使用前两个参数作为数字,而第三个参数将是您要替换的元素。相反,我会在这里使用过滤器:
org.apache.spark.sql.types.DataType
答案 1 :(得分:0)
您的代码不起作用,因为RandomIndex
始终相同,如果它是7
,它将返回undefined
,因为splice
通过删除找到的{ {1}},
将House
更改为每次调用的函数,以便它使用数组的新长度生成新索引:
RandomIndex
var RandomIndex = () => Math.floor(Math.random() * HousesArray.length)
答案 2 :(得分:0)
这让我感到很困惑,我会做这样的事情:
现在,如果您console.log(houses),您将从随机位置获得3个随机房屋(如上述评论所述),从而使玩家2和3能够比玩家1和2早获得房屋的位置
希望这会有所帮助:)好像是一个有趣的游戏:
//Houses Array:
var HousesArray = ['Stark', 'Lanister', 'Greyjoy', 'Barathion', 'Arryn', 'Tyrell', 'Martell', 'Targaryen'];
// stores the houses
var houses = [];
// Generates 3 random numbers and allows players 2 and 3 to get the houses early in position than player 1 and 2
var arr = [];
while (arr.length < 3) {
var r = Math.floor(Math.random() * 8);
if(arr.indexOf(r) === -1) arr.push(r);
}
// Pushed the houses to the house array
for (var x = 0; x < arr.length; x++) {
houses.push(HousesArray[arr[x]])
}
console.log(houses);