Я написал код, который поможет мне быстро организовать свою игру в D & D.В основном это генерирует input:number
жителей, описывающих их расы и возрастные группы, все случайным образом:
var numero = document.getElementById('numero') //INPUT:NUMBER
function encontroaleatorio1() {
var arrRaça = ['human (male)', 'human (male)', 'human (male)', 'human (female)', 'human (female)', 'human (female)', 'elf (male)', 'elf (male)', 'elf (female)', 'elf (female)', 'half-elf (male)', 'half-elf (female)', 'half-orc (male)', 'half-orc (female)', 'gnome (male)', 'gnome (female)']
var arrIdade = ['very young', 'young', 'adult', 'old']
var raça = []
var idade = []
//RANDOM (RACE AND AGE)
if (numero.value > 0) {
for (i=0; i < numero.value; i++) {
var arrRaça2 = arrRaça[Math.floor(Math.random() * arrRaça.length)]
raça.push(arrRaça2)
var arrIdade2 = arrIdade[Math.floor(Math.random() * arrIdade.length)]
idade.push(arrIdade2)
}
} else if (numero.length == 0) {
alert('Número inválido')
} else {
alert('Número inválido')
}
//SORT AND REGROUP REPEATED ELEMENTS
raça.sort()
var raça2 = []
var nrepetidos = [] //ARRAY WITH REPEATED RACES
var current = null;
var cnt = 0;
for (var i = 0; i < raça.length; i++) {
if (raça[i] != current) {
if (cnt > 0) {
raça2.push(`${cnt} ${current}`)
nrepetidos.push(cnt)
}
current = raça[i];
cnt = 1;
} else {
cnt++;
}
}
if (cnt > 0) {
raça2.push(`${cnt} ${current}`)
nrepetidos.push(cnt)
}
//GROUP RACES AND AGES
var idade2 = []
var total = []
var nr = 0
for (var i = 0; i<raça2.length; i++) {
var ni = nr
nr += nrepetidos[i]
idade2.push(idade.slice(ni, nr))
total.push(`${raça2[i]} : ${idade2[i]}`)
}
//CHANGE "," BY " || "
for (i=0; i<total.length; i++) {
total[i] = total[i].replace(/,/g, ' || ')
}
//WRITE
for (var i=0; i<total.length; i++) {
document.write(total[i]+ "<br /><br />");
}
}
В конце, если input:number = 10
, у меня есть что-то вроде:
1 elf (female) : very young
3 elf (male) : adult || young || adult
1 gnome (male) : young
1 human (female) : adult
4 human (male) : young || very young || very young || old
Когда input:number
имеет низкое значение, такое как 10, результат можно прочитать, но он усложняется при более высоких значениях.Есть ли способ организовать его так:
1 elf (female) : very young
3 elf (male) : 2 adult || young
1 gnome (male) : young
1 human (female) : adult
4 human (male) : young || 2 very young || old
, но все же сохранить со случайным свойством?