javascript,在每个奇异数组中得到一个随机数结果

时间:2017-04-23 12:25:02

标签: javascript arrays random

我不确定如何说出这个问题,而且我仍然对javascript很新。 所以我有一个随机引用生成器,每个引用结果都是一个数组。我想在阵列中添加两个项目,这些项目到目前为止我已经得到一个随机数,例如" 2引用"但每次有2个随机。最终结果是基于浏览器的文本游戏。所以它可能是" 2僵尸攻击"或者" 7僵尸攻击。"我到目前为止的代码是:

var quotes = [
[x, 'Zombies attack!'],
[x, 'other creatures attack'],
['next line'],
]  


   function newQuote() {
var randomNumber = Math.floor(Math.random() * (quotes.length));
document.getElementById('quote').innerHTML = quotes[randomNumber];  
}

理想情况下,需要x(或者它可以工作)是设定范围之间的随机数的结果,每个数组都不同。

谢谢 p.s我忘了提及并非所有引号都需要一个数字。这就是为什么我把它做成双阵列。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的目标,您希望拥有一组类似的消息模板,在某个时刻选择其中一个并填充数据,对吗?有很多方法可以解决这个问题,具体取决于模板的变化程度。对于我脑子里的一个简单的例子,你只需要在字符串前面添加一个数字,我会做这样的事情:

$ cat /etc/sysconfig/displaymanager
## Path:    Desktop/Display manager
## Description: settings to generate a proper displaymanager config
DISPLAYMANAGER="lightdm"

## Type:    string
## Default:
DISPLAYMANAGER_AUTOLOGIN="yes"

## Type:        yesno
## Default:     no
DISPLAYMANAGER_PASSWORD_LESS_LOGIN=""

如果您想要更复杂的字符串,而不必在开头添加数字(或任何字符串),例如var messages = [" zombies attack", " other creatures attack"], // define your messages messageIndex = Math.floor(Math.random() * messages.length), // pick one of them numberOfMonsters = Math.floor(Math.random() * 10 + 1), // get your random number result = numberOfMonsters + messages[messageIndex]; // construct a resulting message document.getElementById('quote').textContent = result; ,那么我建议要么想出某种字符串您自己的字符串格式或使用库为您执行此操作。 sprintf.js似乎恰到好处,它会让你做这样的事情:

["There's X things in the distance", "X things are somewhere close"]

编辑:您的任务比原始问题中描述的要复杂得多。您需要考虑代码和数据组织。你必须概述什么是有限的并且可以枚举(动作的类型是有限的:你可以掠夺,战斗,移动等),什么是任意的和动态的(怪物和战利品表的列表是任意的,你不知道什么类型和数量的怪物游戏设计师会想出来)。在定义了结构之后,你可以想出一些快速而又脏的消息编写器,它将任意实体放入有限数量的上下文中。再一次,我有点在黑暗中射击,但这里是an updated version of the code on plunkr

答案 1 :(得分:0)

我解决它做我想做的事情仍然有不同的数字。问题是我应该在quote函数中有数字生成器。也可以为不同数量的生成器创建多个变量。计划是将其与php集成以动态添加内容。我能做什么。感谢德米特里指导我朝着正确的方向前进。

function newQuote() {

var MonsterOne = Math.floor((Math.random() * 14) + 0);
var MonsterTwo = Math.floor((Math.random() * 14) + 0);
var MonsterThree = Math.floor((Math.random() * 14) + 0);
var MonsterFour = Math.floor((Math.random() * 14) + 0);

    var quotes = [

['Test', MonsterOne, 'One'],
['Test', MonsterOne,'Two'],
['Test', MonsterThree, 'Three'],
[MonsterFour, 'Four'],
['Five'],

]


var randomNumber = Math.floor(Math.random() * (quotes.length));
document.getElementById('quote').innerHTML = quotes[randomNumber];  
}