检查给定点周围所有点的有效方法

发布于 2024-11-11 05:19:12 字数 223 浏览 4 评论 0原文

嘿,我最近用 JavaScript 编写了这个相当简单的生命游戏

在此脚本中,我检查给定单元格周围的所有单元格,目前我通过 8 if 语句执行此操作。

它可以工作,但只是感觉错误且硬编码。是否有一种更快、更有效的方法来做到这一点?或者大量的 if 语句是唯一的方法吗?

Hey, I recently wrote this fairly simple game of life in JavaScript.

Within this script I check all cells around a given cell, I currently do this via eight if statements.

It works but just feels wrong and hard coded. Would there happen to be a faster, more efficient way of doing this? Or are masses of if statements the only way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南…巷孤猫 2024-11-18 05:19:12

创建一个偏移量数组并循环遍历该数组怎么样?

var offsets = [{dx:1,dy:1},{dx:0,dy:1}, ...

How about creating an array of offsets and looping through the array?

var offsets = [{dx:1,dy:1},{dx:0,dy:1}, ...
隔岸观火 2024-11-18 05:19:12

您可以优化它,例如,而不是检查 x > 是否0 多次,只用一个包裹另一个 if

if(x > 0) {
    if(cells[x - 1][y]) 
        alive++;

    if(y > 0 && cells[x - 1][y - 1])
        alive++;

    if(y < edgeAmount && cells[x - 1][y + 1]) 
        alive++;
}

You can optimize that, for example instead of checking if x > 0 many times, put just one wrapping the other ifs

if(x > 0) {
    if(cells[x - 1][y]) 
        alive++;

    if(y > 0 && cells[x - 1][y - 1])
        alive++;

    if(y < edgeAmount && cells[x - 1][y + 1]) 
        alive++;
}
薔薇婲 2024-11-18 05:19:12

您可以创建一个查找表,该表在一些步骤后会更新,从而加快计算速度

you can create a lookup table that gets updated after some steps, so you speedup calculations

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文