【问题标题】:Word Wheel Game - randomising letters with JavascriptWord Wheel Game - 使用 Javascript 随机化字母
【发布时间】:2014-11-30 20:23:43
【问题描述】:

感谢 Adrian 与我分享一些代码。不幸的是,我无法将它集成到我的项目中(新手!),但它确实让我走上了正确的道路。经过一番重新思考后,我加入了一个将字母打乱的功能,效果相当好。唯一的问题是我的代码在 CodePen 范围之外无法工作。我认为我的科学怪人编码方法中出现了一些错误!无论如何,我已经很接近了,有人可以帮忙吗?还是太杂乱无章了?

//GET RANDOM 9 LETTER WORD

var wordlist = ["aardvarks", "aasvogels", "abamperes", "abandoned"
];

var randomNumber = parseInt(Math.random() * wordlist.length);
var name = wordlist[randomNumber];          

if(document.getElementById("resultRandomWord")){
document.getElementById("placeholderRandomWord").removeChild(document.getElementById("resultRandomWord"));
}
var element = document.createElement("div");
element.setAttribute("id", "resultRandomWord");
element.appendChild(document.createTextNode(name));
document.getElementById("placeholderRandomWord").appendChild(element);

//START This function shuffles list items
(function($){
$.fn.shuffle = function() {
    return this.each(function(){
        var items = $(this).children().clone(true);
        return (items.length) ? $(this).html($.shuffle(items)) : this;
    });
}

$.shuffle = function(arr) {
    for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
    return arr;
}
})(jQuery);
//END This function shuffles list items

//SPLIT 9 LETTER WORD 
var str = $('#resultRandomWord').html();
var spl = str.split('');
var len = spl.length;
var i = 0;
setInterval(function(){

if(i < len)
{
    if(spl[i] != " "){
    $('.letters').append('<li>'+spl[i]+'</li>')//DISPLAY WORD AS SEPARATE LETTER AND AS LIST ITEMS
    $('.letters').shuffle();//Call shuffle function
    }
}
i++;
},200)


//REVEAL ANSWER (JQUERY)
$(document).ready(function(){
$(".reveal").click(function(){
$("#placeholderRandomWord").slideToggle();
   });
});

还有 HTML:

<div id="outer_circle">
<ul class="lines">
<li></li><!--nth(1)-->
<li></li><!--nth(2)-->
<li></li><!--nth(3)-->
<li></li><!--nth(4)-->
</ul>
<ul class="letters">
<!--This is where the letters go, they are wrapped in <li> tags-->
</ul>
<div id="inner_circle">
</div><!--letters-->
</div><!--outer_circle-->


<div id="answer-wrapper">
<button type="button" class="reveal" onclick>Reveal/Hide Answer</button>
<div id="placeholderRandomWord">

</div><!--answer-->
</div><!--answer-wrapper-->

【问题讨论】:

    标签: javascript random split words letters


    【解决方案1】:

    通常我会要求看看你自己的尝试,但你在其他方面取得了很大进展,看起来这只是一个小绊脚石。因此,它没有经过破坏测试,但以下功能应该可以满足您的需求:

    function randomise(word) {
        var result = "";
        while (word != "") {
            var pos =  Math.floor(Math.random () * word.length);
            result += word[pos];
            word = word.substring(0, pos) + word.substring(pos+1);
        }
        return result;
    }
    

    它只是简单地选择一个介于 0 和(单词长度 - 1)之间的随机数,挑选出该字母并将其从原始单词中删除,然后重复直到原始单词为空。

    【讨论】:

    • 感谢您对我的项目感兴趣。我严重超出了我的深度,但我经常发现它是学习一门新语言的最佳方式。我将尝试将其集成到我的脚本中。
    • 再次感谢阿德里安的建议。不幸的是我无法将它集成到游戏中,我还有很多东西要学!经过重新思考后,我设法按要求对字母进行了洗牌,但我的代码太弗兰肯斯坦了,它在 CodePen 之外无法工作。如果您对我的进展感兴趣,我已经更新了我的问题。
    • 你可以把var name = wordlist[randomNumber];改成var name = randomise(wordlist[randomNumber]);
    • 非常感谢阿德里安。这是一个 var 名称问题。我已经清理了我的 Javascript,它现在可以正常工作了。这不是最漂亮的脚本,但看起来很扎实。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2017-06-08
    • 2018-05-10
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多