gpt4 book ai didi

java - 获取代表笛卡尔 x,y 的值列表

转载 作者:行者123 更新时间:2023-12-01 04:37:50 25 4
gpt4 key购买 nike

对于我的家庭作业,我正在像康威的生命游戏一样在网格上制作捕食者/猎物。它看起来不错,但在某一点上很粗糙。

很多时候,我需要从当前单元格中随机选择一个相邻单元格并执行某些操作,然后循环浏览其他三个单元格(我只使用侧单元格,而不是对角线。网格上的当前单元格我们可以看涨期权位置 x=0 且 y=0)。

如果我总是从 (-1,0) 这样的一个地方开始,然后遍历 (0,1)(+1,0)(0,-1),那么进行循环是没有问题的。但这不是一个随机的起点。

我可以使用 math.random() 为 x 和 y 获取随机起始单元格。

令我烦恼的是,当我事先不知道将是随机开始的单元格时,定义循环中下一个单元格的 x,y 的智能方式。我可以通过使用 if(x==1 && y==0) then 三行在其他三个单元格中执行任务来进行暴力操作。然后是 if(x==0 && y=1) 和另外三行。但对于四种可能的开始,每一种都是三行。看起来很粗糙。

我想也许我可以描述 8 个成员数组中所有四个单元格的 x,y:x 顶部、y 顶部、x 右侧、y 右侧...)。然后生成一个随机数来选择“起点”并遍历。最后成员循环回到数组的开头,直到读出四对 x,y。

在编写和排除故障之前,是否有更聪明的方法?如果有几个想法,我会尝试为实践编写每个想法。

我还可以使用一些指导来指导我如何在搜索中表达这个问题。

非常感谢。

最佳答案

听起来您想处理相邻单元格的随机循环排列。您可以通过一级间接索引来完成此操作。例如,您可以通过数组定义相邻单元格的索引

int[] adjacent = {0, 1, 2, 3};

然后,您希望从相邻的随机位置开始,按顺序处理四个元素,如果超出了末尾,则返回到开头。您可以通过使用模运算符 (%) 或将数组加倍来处理此问题:

int[] adjacent = {0, 1, 2, 3, 0, 1, 2, 3};
int randomStart = rand.nextInt(4); // rand is an instance of Random
for (int i = 0; i < 4; ++i) {
processNeighbor(adjacent[randomStart + i]);
}

这将以下列可能性之一处理邻居,随机选择:

  • 0、1、2、3
  • 1、2、3、0
  • 2、3、0、1
  • 3,0,1,2

关于java - 获取代表笛卡尔 x,y 的值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com