Равное распределение букв на доске 4х4 - PullRequest
0 голосов
/ 06 июля 2018

Я создаю игру, в которой пользователь печатает или, если быть точным, нажимает на доску 4х4, чтобы создать осмысленное слово. Проблема в том, что мое случайное распределение букв на доске приводит к преобладанию согласных, что затрудняет поиск слов. Как на картинке (всего 3 гласных). Итак, мой вопрос, есть ли какая-нибудь формула или алгоритм для распределения согласных и гласных почти поровну, может быть, от 10 (согласные) до 6 (гласные)? Или вы можете предложить решение.

enter image description here

Способ случайного отображения букв следующий:

    const letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',
 'u','v','w','x','y','z'];

    var searched_word = '';
    var tr = '';
    var wordsBank = [];
    var wordsCount = 0;

    var boxes = document.querySelectorAll('.square');
    //console.log(boxes);

    boxes.forEach(function(box) {
      box.addEventListener('click', function(e) {
        e.preventDefault();
        searched_word += this.innerHTML;
        document.querySelector('.input').value = searched_word;
      });

      console.log(searched_word);
      return searched_word;
    });

    function randomLetters(boxes) {
      for (var i = 0; i < boxes.length; i++) {
        let box = boxes[i];
        let randomLetterNumber = Math.floor(Math.random() * letters.length);
        box.innerHTML = letters[randomLetterNumber].toLocaleUpperCase();
        //console.log(box);
        //console.log(randomLetterNumber);
      }
    }

1 Ответ

0 голосов
/ 06 июля 2018

сделать два массива, один для согласных и один для гласных

теперь получают 10 рандомов от согласных и 6 от гласных

вуаля: -)

пример перетасовки

function shuffle(a) {
  for (let i = a.length - 1; i > 0; i--) {
     const j = Math.floor(Math.random() * (i + 1));
     [a[i], a[j]] = [a[j], a[i]];
  }
  return a;
}
let selectedChars = selectedVowels.concat(selectedConsonants);
let shuffledChars = shuffle(selectedChars);

источник для функции перемешивания: Как я могу перемешать массив?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...