返回
掌握 JavaScript 版生命游戏的奥秘:在网页中培育生命
前端
2023-11-21 13:07:09
生命游戏,这个由约翰·康威构思的智力体操,以其简单的规则和令人惊讶的复杂性而闻名。如今,借助 JavaScript 的强大功能,你可以在网页上创造自己的生命游戏宇宙。
生命的规则
生命游戏在一个二维网格上进行,网格中的每个单元格要么是活着的(由一个符号表示),要么是死的(由另一个符号表示)。在每一次演化(或代)中,每个单元格的命运都会根据其邻居的状态而决定:
- 一个活着的单元格,周围有少于 2 个或多于 3 个活着的邻居,会在下一代中死亡。
- 一个活着的单元格,周围有 2 个或 3 个活着的邻居,会在下一代中存活。
- 一个死的单元格,周围有正好 3 个活着的邻居,会在下一代中复活。
用 JavaScript 实现
要创建 JavaScript 版的生命游戏,我们需要一个网格来表示游戏世界,以及一个函数来根据生命规则演化网格。
首先,创建网格:
const grid = new Array(height);
for (let i = 0; i < height; i++) {
grid[i] = new Array(width);
}
然后,定义游戏规则:
function evolve() {
// 遍历每个单元格
for (let i = 0; i < height; i++) {
for (let j = 0; j < width; j++) {
// 计算活邻居数
let neighbors = countNeighbors(i, j);
// 根据邻居数更新单元格状态
if (grid[i][j] === 1) {
if (neighbors < 2 || neighbors > 3) {
grid[i][j] = 0;
}
} else if (neighbors === 3) {
grid[i][j] = 1;
}
}
}
}
运行游戏
有了网格和演化函数后,就可以运行游戏了。使用 setInterval()
函数定期调用 evolve()
函数,让网格不断演化:
setInterval(evolve, 100); // 每 100 毫秒演化一次
示例和扩展
你可以创建各种各样的图案,例如滑翔机、振荡器和稳定图案。使用不同的初始化条件可以探索不同的生命形式。
要扩展你的游戏,可以考虑添加以下功能:
- 交互性,允许用户创建和放置单元格
- 随机生成图案
- 存储和加载游戏状态
- 视觉效果,例如彩色单元格或动画
结论
JavaScript 版的生命游戏是一个迷人的项目,它展示了编程的强大功能。通过了解其简单的规则,你可以在网页上培育和观察一个不断变化的虚拟世界。释放你的创造力,创造出自己的生命游戏宇宙!