javascript - 在 4x4 板上平均分配字母

标签 javascript algorithm random 2d-games

我正在制作一款游戏,用户在 4x4 板上输入或准确点击以创建一个有意义的词。问题是我在黑板上随机分布的字母导致辅音占优势,这使得很难找到单词。就像图片上的那样(只有 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);
      }
    }

最佳答案

制作两个数组,一个用于辅音,一个用于元音

现在从辅音中得到 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);

随机播放功能的来源:How can I shuffle an array?

关于javascript - 在 4x4 板上平均分配字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51209437/

相关文章:

javascript - jQuery $.post 数据如果大于 0 则分配给变量

javascript - 查找包含字符串的数组

javascript - 如何通过ID获取日期

algorithm - 分词时间复杂度

c# - Unity 中的随机生成 (C#)

php - 在 while 循环中处理一个 div

algorithm - 使用动态规划将字符串拆分为一串有效单词

算法 - 需要进行多少次更改才能获得 "impressive"数字集

java - 在java中生成一个没有重复的随机点数组

python - 创建随机二进制文件