Javascript+Canvas实现的《生命的游戏》不起作用
Javascript+Canvas implementation of Game of Life not working
我在Conways Game of Life的javascript+canvas实现中遇到问题。创建的单元格非常好,表示单元格的画布框也非常好。但在这一过程中的某个地方,所有的细胞似乎都被激活了;没有切换。我一辈子都不明白出了什么问题。javascript代码在这里,我的实现在这里。有人能告诉我哪里出了问题吗。
*******************/em>***编辑
我想我已经想通了。我将2d数组的一个元素传递给reallyToggle()函数,类似于so-
var reallyToggle = function(a) {
//code
}
reallyToggle(cell[i][j]);
我认为问题出在代码的这一部分。有人能告诉我如何将数组的元素传递给函数吗?
因此,老实说,您的代码相当晦涩且过于复杂。创建一个自定义Javascript函数对象的网格远远超过了工程:您只需要一个2D布尔数组。
如果把这样的问题看作两个独立的问题:问题空间和世界空间,通常最容易解决。问题空间是解决实际问题的区域。世界空间是映射到视觉结果的问题空间。为了将其与你的问题分开,把问题空间想象成布尔值的二维数组,然后世界空间就是你的画布。
如果你想稍微清理一下你的模拟,这里有一种方法可能会有所帮助:
//Have some parameters that you can change around
var cellSize = 10;
var cellsWide = 100;
var cellsHigh = 100;
//Instantiate and initialize a 2d array to false
var theGrid = new Array();
for (var i=0; i<cellsWide; i++) {
theGrid.push(new Array());
for (var j=0; j<cellsHeight; j++) {
theGrid[i].push(false);
}
}
//Attach a click event to your canvas (assuming canvas has already been dropped on page
//at the assigned width/height
$('#simCanvas').click(function(e) {
var i = Math.floor((e.pageX - this.offsetLeft)/cellSize);
var j = Math.floor((e.pageY - this.offsetTop)/cellSize);
theGrid[i][j] = !theGrid[i][j];
});
这将是一种更简洁的方式来处理问题空间。将问题空间映射到世界空间有点直接,但如果你需要帮助,请告诉我。
干杯
这行很可疑:)
if (!run) run == true;
首先,检查MoarCodePlz的答案。关于你的代码:
按下开始时为Uncaught exception: ReferenceError: Undefined variable: gameLoop
。initialize
中定义的所有Your函数都不在全局范围内,因此它们在全局范围中是不可访问的。
请使用Firebug;Chrome开发工具、Opera Dragonfly或其他什么工具来查找此类错误。这些工具确实有助于开发JS。
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 如何有效地将游戏数据存储在URL查询字符串中
- Javascript游戏输入失去焦点
- 如何在p5.js中管理多智力竞赛游戏的多个屏幕
- 组件生命周期问题/无法处理未定义的问题
- setInterval游戏循环的范围问题
- 为网络游戏制作动画
- 重置游戏和获胜者问题
- 帆布游戏的滞后运动
- Javascript单独的游戏窗口
- 查询“康威的生命游戏”算法
- 生命游戏延续问题
- 为facebook游戏创建持久生命计数器
- 如何使用JavaScript在刽子手游戏中还剩3个猜测(生命)时显示提示
- 如何用数字数据填充HTML画布?是否有更好的替代方案来创建可用于Conway'《生命的游戏》
- 康威生命游戏-细胞获胜'不要出现在画布上
- Javascript+Canvas实现的《生命的游戏》不起作用
- 生命的游戏:试图用新的算法来提高计算效率,但没有成功.为什么?
- 为什么我的康威生命游戏表现得很奇怪
- Jquery生命探测邻家细胞游戏