在表格中随机分发单词字符串

时间:2011-03-09 15:26:22

标签: javascript arrays string

现在,我正在进行一个侧面项目,我正在尝试将一个单词字符串随机分配到一个16/16表中(对于这个例子,我使用的是Gettysburg地址的第一行)。这个想法是它会以相反的顺序显示单词(即单词只能反向显示在四个方向:对角线向上,对角线向下,从下到上,从右到左,所以有些东西是“四个”成为“ROUF”是允许的)。到目前为止,我已经创建了表并使用了string.split方法将我的字符串转换为数组,但我仍然坚持使用反向顺序和随机分布部分。关于如何实现这一目标的任何建议都值得赞赏。

到目前为止

代码:

wind.globals.tRows = 16;
wind.globals.tCols = 16;
wind.globals.wordTable = OS.gui.add_table(view, wind.globals.tRows, wind.globals.tCols);
wind.globals.wordTable.border = '2';
wind.globals.wordTable.frame = 'box';
wind.globals.wordTable.style.position = 'absolute';
wind.globals.wordTable.style.left = '50px';
wind.globals.wordTable.style.top = '50px';
wind.globals.wordTable.style.width = '400px';
wind.globals.wordTable.style.height = '400px';
wind.globals.wordTable.style.textAlign = 'center';

wind.globals.string = "Four Score and Seven Years Ago";
//var tempVar = wind.globals.tString.split('').reverse().join('');
var tempVar = wind.globals.string.split('');
var t = Math.floor(Math.random()*tempVar.length);


for(x = 0; x < wind.globals.tRows; x++){ 

    for(y = 0; y < wind.globals.tCols; y++){

        for(i = 0; i < tempVar.length; i++){

            wind.globals.wordTable.td[x][y].width = '20';
            wind.globals.wordTable.td[x][y].innerHTML = tempVar[y].toUpperCase();

            if(tempVar[y] == "," || tempVar[y] == "." || tempVar[y] == " "){

                wind.globals.wordTable.td[x][y].innerHTML = "";

            }

        }

    }
} 

注意:我也忘记了这一部分,字母可以相交并共享(即字母s可以用来连接“得分”和“七”字样

更新:所以经过一段时间的离开以及我已经做过的一些笔记,我想我已经想出了一种方法来实现我需要做的事情。该方法分为四部分。

1)从1到4获取一个随机数。这将决定它是水平,垂直,正斜率还是负斜率。 2)获取另一个随机数,以决定是否要尝试将其与现有单词相交。 3)获得单词开头的随机x,y坐标。考虑到这个词的长度。 4)检查阵列是否存在冲突的交叉点。如果发生冲突,请转到上一步并再试一次。 否则,请填写数组。

即使我有这个想法,我仍然遇到编码问题,因为我还没有那么多的编程经验。如果有人能给我一些例子,我想它会引导我走向正确的方向。谢谢!

1 个答案:

答案 0 :(得分:0)

由于您正在使用字符串中的每个字符,因此无需使用string.split()将其转换为数组:您只需使用string.length()循环遍历字符数即可包含,并使用string.charAt()获取每个位置的角色。

这也解决了你的反转问题,因为你可以使用string.charAt(string.length()-pos)从字符串的结尾开始获取反向字符位置。

接下来,让我的话语以随机方向进入表格,我将从方向数据数组开始。它看起来像这样:

var directions = [ [1,0],   //horizontal
                   [0,1],   //vertical
                   [1,-1],  //diagonal-up
                   [1,1]    //diagonal-down
                 ];

然后,您可以从此数组中随机选择一个方向。然后,一旦选择了起始位置,就可以通过添加directions数组中的坐标偏移数据,在所需方向上移动表格。

希望有所帮助。

可能还有更多的内容,特别是关于我刚才暗示的起始位置,但我认为我不能给出更多建议,因为你还没有真正明白目标你的程序(听起来可能是wordsearch游戏,但我不确定?)。