当前位置: 首页 > 知识库问答 >
问题:

创建有效坐标

彭鹭洋
2023-03-14

我正在做一个蛇游戏,当苹果在屏幕上随机繁殖时,它不应该在蛇里面繁殖。我试着为苹果寻找一个新的地方,当它们被放在蛇里面时,我会:

for (int i = 0; i < snake.size() - 1; i++) {
  if (snake.get(i).xPos == plum.get(0).xPos && snake.get(i).yPos == plum.get(0).yPos) {
    plum.remove(0);
    plum.add(new Coordinate(rollDice(squaresX - 1) * (squareSize + sizeOfSpace) + sizeOfSpace, rollDice(squaresY - 1) * (squareSize + sizeOfSpace) + sizeOfSpace, new Color(199, 7, 255)));
  }
}

这不是一个好的解决方案,所以我正在寻找一个新的解决方案,我可以创建无效的coordiantes,即蛇坐标和其余的有效坐标。所以我可以从有效坐标中随机化苹果的新位置。但我不知道该如何编码

共有1个答案

凌博实
2023-03-14

这只是一个一般性建议,但我认为它可能对你有用。保持蛇的长度一直在更新

现在,当创建一个新苹果时,创建一个网格大小减去蛇长的坐标数组。例如:如果网格大小为9x9,蛇的长度为6,则创建长度为75的数组。运行网格和数组,并将没有蛇的坐标添加到数组中。应该是这样的:

int arrayLocation=0;
for(int i=0; i< grid.length();i++)
{
    for(int j=0; j<grid[i].length(); j++)
    {
        if (!snakeAtLocation(i,j))
        {
            arr[arrayLocation++] = new Coordinate(i, j);
        }
    }
}

然后您可以在0到arr.length()之间随机选择一个数字n,然后从arr[n]中检索协调,您应该有一个没有蛇的协调。希望它有帮助,如果您需要更详细的示例,我将在明天提供,因为我正在从手机上写这个,而且我现在没有pc:)

顺便说一句,这个答案只针对一个简单的用例,因为它没有经过优化,每次吃苹果时都使用o(n)^2。如果你想得到更优化的解决方案,你必须在蛇的每一步行动中跟踪蛇的位置。如果需要的话,我可以在tommorow发布这两个答案:)

 类似资料:
  • 我目前正在制作一个蛇游戏,我不希望苹果在我的蛇体内产卵。我试图通过这样做来解决这个问题: 然而,只有1个值被删除,即使应该是3个值被删除,我也不知道为什么。

  • 想象一个笛卡尔平面,每个细胞对象代表平面中的一个点(该平面将是迷宫)。在构建迷宫时,我想弄清楚一个单元格对象是一个顶点(四个角点)还是一个边界点(任何在迷宫边缘的单元格,顶点也是边界点)。 我需要知道,以便我可以添加相邻单元格作为特定单元格的邻居(我正在创建一个带有节点的图结构)。不同的边框对什么单元格是邻居有不同的要求(例如,右上的顶点不能有y+1或x+1的邻居,因为它在迷宫之外,而左下的顶点不

  • 我如何根据坐标创建谷歌地图链接。他们的新基本共享网址包含许多参数,例如- https://www.google.com/maps/place/Vetlanda,瑞典/@57.4217311,15.0849255,13z/data=!3m1!4b1!4m2!3m1!1s0x465758d912d321b5:0x55675191e550be84?hl=en 有什么想法吗?不希望嵌入,而只是创建可以共享

  • 我目前正在将对象的3D坐标转换为2D坐标,然后在它们上绘制2D文本(目前,对象名称): 这工作正常。名称成功放置在对象上方。 我怎样才能解决这个问题?是否有某种方法可以检测到我是否正在远离它们而不渲染它们?

  • 我正在尝试使用使用密码摘要模式的 Web 服务,并且我的 Java 应用程序中有这些功能来生成随机随机数、创建日期和密码摘要。我无法克服身份验证失败错误,并且文档不太清楚他们是否需要 SHA-1 或 MD5,因为它顺便提到了两者。我尝试了MD5而不是SHA-1,我得到了相同的结果。我设法通过 SoapUI 上的测试使请求工作,但我不知道该应用程序如何生成摘要/随机数。任何帮助,不胜感激。 下面是我

  • 我需要编写一个嵌入的XML模式,即模式在与数据相同的XML中定义。 我正在试图理解如何正确地执行它,但到目前为止,我无法获得一个简单的示例来通过验证。以下是我尝试使用的一个简单示例XML with inline schema: (注意:XML结构(例如根/项)已经过时,因此我无法在数据元素上使用命名空间。) 但是当我通过w3运行XML时。org XML Schema Validator,XML验证