为什么我的康威生命游戏表现得很奇怪
Why is my Conway's Game of Life acting strangely?
我正在尝试复制康威的生命游戏,虽然我的代码似乎是犹太洁食的,但它似乎没有像它应该的那样表现。
这是它的基本内容:
if (pressingSpace) {
running = true;
} else {
running = false;
};
if (running) {
for (var i=0; i<tiles.length; i++) {
var tile = tiles[i];
if (tile.alive && (tile.neighborsAlive() < 2 || tile.neighborsAlive() > 3)) {
tile.die();
};
if (!tile.alive && tile.neighborsAlive() == 3) {
tile.comeToLife();
};
};
};
for (var i=0; i<tiles.length; i++) {
var key = tiles[i];
if (!key.alive && mouseDown && key.sprite.contains([cursorX,cursorY]) && cursorX != null) {
key.comeToLife();
}
};
所有正在运行的功能都经过了彻底的测试,似乎可以按预期工作。但是当它运行时,"活着"的方块似乎比它们应该更容易溢出屏幕。特别是当一列被制成三个图块高时,当它应该同时在两侧产生两个"活动"图块时,它会在下一帧中消失。
我怀疑这与操作顺序有关。我是否需要为状态更改"标记"适当的磁贴,而不是当场更改它们?我知道那里有很多Conway的实现,但我正在尝试自己开发它。也就是说,任何朝着正确方向的推动将不胜感激。谢谢!
你可以在这里看到它的实际效果:http://www.eggborne.com/tiles
据我所知,这是因为您在迭代时更改了瓦片图。
例如,我假设.comeToLife()
方法将字段更改为true
.alive
,如果.neighborsAlive()
返回非缓存值,但计算周围的.alive
块,那么您本质上是在迭代时更改您的游戏场地,新更改的单元格会破坏整个画面。
瓦片,并迭代"旧"图块,同时仅对"新"进行更改。缓存"neighborsAlive"本质上是创建两个数组,只是方式不同 - 这样你也创建了一个瓦片地图,每个瓦片保存一个值,说明此时有多少邻居处于活动状态 - 你必须在其他一切改变之前确定这个值。如果您不这样做,您将遇到与当前相同的问题。
为了演示您的问题,请随着每次磁贴更改而更新您的游戏场地 - 您将看到您的问题动画:)
希望这对您的问题有所帮助。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 我的单元测试选项是什么
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 我的职位回报太快了,如何做出承诺
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何识别我的网站中的慢速设备
- 如何将JSON数据导入我的ejs模板
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 知道为什么我的旋转木马不会自动更改图片吗
- 我的模板未被解析
- 无法将数据从firebase获取到我的html页面
- 角度图表;t显示在我的页面中
- 我的AngularJS表达式没有'不起作用
- 将电视直播频道从网站嵌入我的网站
- 查询“康威的生命游戏”算法
- 康威游戏的生活在javascript(最好的sol
- 康威'生活的游戏-如何伪造一个“;“无限”;2d平面
- 被编程困住了康威的“人生游戏”;在JS
- 为什么我的康威生命游戏表现得很奇怪