生成一个随机数
现在,我们可以通过 Numble 最重要的方面之一:数字本身,让我们的游戏更加精彩。
这一步涉及到一些数学和逻辑,但是一旦你了解它,它真的不会太难。函数本身应该是这样的(我将在下面解释发生了什么):
const generateNumber = () => (3*Math.ceil(Math.random()*299+34)).toString()
这是一个箭头函数,它返回一个三位数的三的倍数作为字符串。
具体 来看Math.ceil(Math.random()*299+34),这会生成一个介于 1 和 299 之间的随机数,并使用 将 Math.random() 其四舍五入 Math.ceil。加上 34,然后将其乘以 3,确保该数字是 102 到 999 之间的 3 的倍数,即 3 的 3 位倍数,或“数字”。
最后,整个东西被包裹在一个 .toString() 函数中,把它变成一个字符串。将数字存储为字符串可能看起来很奇怪,但这将更容易在游戏后期为每个单独的数字着色。
我们的下一个挑战是每次用户按下“开始”时显示一个数字。
最好的方法是向状态对象添加一个名为 number. 但是,我们不需要在原始 中执行此操作 State,我们只需要在按下“开始”按钮时执行此操作,因此在 start 事件处理程序中。
这会将我们的 start 函数更改为如下所示:
const start = event => Update({
started: true,
number: generateNumber()
})
新属性 number的值是我们刚刚创建的函数的返回值 generateNumber():随机三位,三的倍数。
为了显示这个,我们需要在 中添加一行 View,特别是在 HTML 部分 when state.started is true, View 现在看起来像这样:
const View = state => html`
<h1>Numble</h1>
${state.started ?
html`<div id="number">${state.number}</div>
<button onclick=${state.finish}>END</button>`
:
html`<button onclick=${state.start}>START</button>`
}`
我们在这里所做的只是添加 a
和 id of “number”,它显示 state.number 的是随机生成的三位数,三的倍数。
如果您现在测试代码,每次单击“开始”按钮时都会看到不同的数字,如果将数字相加,您会发现数字是三的倍数!