我目前正在制作一个蛇游戏,我不希望苹果在我的蛇体内产卵。我试图通过这样做来解决这个问题:
ArrayList<Coordinate> availableCoordinates = new ArrayList<>();
public void Coordinates() {
for (int i = 0; i < numberOfSquaresY; i++) {
for (int j = 0; j < numberOfSquaresX; j++) {
availableCoordinates.add(new Coordinate(j*squareSize, i*squareSize, snake.get(0).color));
}
}
for(int i = 0; i < availableCoordinates.size()-1; i++) {
for (int j = 0; j < snake.size() - 1; j++) {
if (availableCoordinates.get(i).xPos == snake.get(j).xPos && availableCoordinates.get(i).yPos == snake.get(j).yPos){
availableCoordinates.remove(i);
}
}
}
}
然而,只有1个值被删除,即使应该是3个值被删除,我也不知道为什么。
使用远程如果()从列表中删除。
import java.util.ArrayList;
import java.util.List;
public class RemoveItemsFromListIfPresentInAnotherList {
public static void main(String[] args) {
List<Coordinate> availableCoords = new ArrayList<>();
List<Coordinate> snakeCoords = new ArrayList<>();
//..
for (Coordinate snakeCoordinate : snakeCoords) {
availableCoords.removeIf(availableCoord ->
(snakeCoordinate.getX() == availableCoord.getX() && snakeCoordinate.getY() == availableCoord.getY()));
}
}
}
class Coordinate {
private int x;
private int y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
您遍历可用坐标
并在此循环中从中删除项目。因此,在您删除一个元素后,以下元素会获得一个新索引。无论如何,循环索引会递增,因此您在删除后跳过一个元素。
我不会将所有坐标添加到列表中,然后删除使用过的坐标。填写可用坐标时,检查此字段是否可用:
for (int i = 0; i < numberOfSquaresY; i++) {
for (int j = 0; j < numberOfSquaresX; j++) {
Coordinate c = new Coordinate(j*squareSize, i*squareSize, snake.get(0).color);
if (!snake.contains(c)) {
availableCoordinates.add(c);
}
}
}
假设坐标#equals
只检查xPos
和yPos
。
我正在做一个蛇游戏,当苹果在屏幕上随机繁殖时,它不应该在蛇里面繁殖。我试着为苹果寻找一个新的地方,当它们被放在蛇里面时,我会: 这不是一个好的解决方案,所以我正在寻找一个新的解决方案,我可以创建无效的coordiantes,即蛇坐标和其余的有效坐标。所以我可以从有效坐标中随机化苹果的新位置。但我不知道该如何编码
问题内容: 假设我有三个任意的一维数组,例如: 这三个数组代表3D网格中的采样间隔,我想为所有相交构造一个三维矢量的一维数组,例如 订单实际上对此并不重要。生成它们的明显方法是: 所以问题是…有没有更快的方法?我看过但没有找到(可能只是找不到正确的Google关键字)。 我目前正在使用此: 但是我感觉好像错过了一些聪明的幻想的Numpy方式吗? 问题答案: 要在上述示例中使用numpy网格,将可以
问题内容: 我有一个像这样的清单: 但是更大了,所以我需要一种有效的方法来使它变成像这样的树: 我不能使用诸如嵌套集之类的东西,也不能使用诸如becoas之类的东西,因为我可以在数据库中添加左右值。有任何想法吗? 问题答案: 哦,这就是我解决的方法:
问题内容: 我如何用对象填充ArrayList,而内部的每个对象都不相同? 问题答案:
问题内容: 我想要创建一个arraylist数组,如下所示: 但是它没有编译。我怎样才能做到这一点? 问题答案: 根据Oracle文档: “你不能创建参数化类型的数组” 相反,你可以执行以下操作: 正如汤姆·霍廷(Tom Hawting)的建议-定位线一样,最好这样做:
我有以下代码,运行时会出现错误:TypeError:无法读取未定义的属性“split” 您可以在这里运行它。 我有数组,我想将它转换为数组的数组,首先在处拆分以分离数组,然后在处拆分以创建数组中的项。因此此列表将如下所示: [[data1,data2,data3],[data4,data5,data6],[data7,data8,data9]] 执行类似的操作,但当我尝试使用访问它时,它只给我第一