对于我的作业,我正在像康威的生命游戏这样的网格上制作捕食者/猎物。它看起来不错,但有一点很粗糙。
很多时候,我需要从当前单元格中随机选择一个相邻单元格并执行一些操作,然后循环通过其他三个单元格(我只使用侧单元格,而不是对角线。网格上的当前单元格我们可以称为位置 x =0 和 y = 0)。
如果我总是从(-1,0)这样的地方开始然后穿过(0,1)(+1,0)(0,-1),那么循环是没有问题的。但这不是一个随机的起点。
对于 x 和 y,我可以使用 math.random() 获得一个随机起始单元格。
让我烦恼的是当我不知道将是随机开始的单元格时,定义循环中下一个单元格的 x,y 的聪明方法。我可以通过使用 if(x==1 && y==0) 然后三行在其他三个单元格中执行任务来蛮力完成。然后 if(x==0 && y=1) 和另外三行。但这对于四个可能的开始中的每一个都是三行。看起来很粗糙。
我想也许我可以在 8 个成员的数组中描述所有四个单元格的 x,y:x 顶部、y 顶部、x 对、y 对...)。然后生成一个随机数来选择一个“起点”并遍历。最后成员循环回到数组的开头,直到读出了四对x,y。
在编写和排除故障之前,有没有更聪明的方法?如果有几个想法,我会尝试为每个实践编写代码。
我还可以使用一些指导来说明如何用这个问题来进行搜索。
非常感谢。