gpt4 book ai didi

java - 不能向 ArrayList 添加元素

转载 作者:行者123 更新时间:2023-11-30 12:03:19 26 4
gpt4 key购买 nike

我仍然是 Java 的初学者,我正在尝试制作吃 bean 人游戏,所以我尝试制作网格让怪物跟随玩家,所以我制作了一个名为 nieghbours 的列表,其中包含当前方 block 的所有 nieghbouring 方 block monester 但是当我在将正方形添加到 nieghbours 数组列表时首先遇到问题时:

  • 我有一个叫做 chase 的方法来在渲染之前更新怪物的 x,y

  • 我在 chase 方法中调用了一个名为 findNieghbours 的方法来查找 monester 当前方格的邻居。

但是出现一个错误,指出 nieghbours ArrayList 为空(大小为 0)。

public ArrayList<Square> findNieghbours(){
ArrayList<Square> nieghbours=new ArrayList();
int currentX=current.getX();
int currentY=current.getY();

if(currentX<29&&!grid.get(currentY/30).get(currentX/30+1).isWall()){
nieghbours.add(grid.get(currentX/30+1).get(currentY/30));
}
if(currentX>0&&!grid.get(currentY/30).get(currentX/30-1).isWall()){
nieghbours.add(grid.get(currentX/30-1).get(currentY/30));
}
if(currentY<29&&!grid.get(currentY/30+1).get(currentX/30).isWall()){
nieghbours.add(grid.get(currentX/30).get(currentY/30+1));
}
if(currentY>0&&!grid.get(currentY/30-1).get(currentX/30).isWall()){
nieghbours.add(grid.get(currentX/30).get(currentY/30-1));
}

return nieghbours;

public void Chase(Square chasedSquare){
ArrayList<Square> nieghbours=findNieghbours();

Square lowest=nieghbours.get(0);

for(Square square : nieghbours){
if((square.getX()-chasedSquare.getX()) * (square.getX()-chasedSquare.getX()) + ( square.getY()-chasedSquare.getY()) * ( square.getY()-chasedSquare.getY()) < (lowest.getX()-chasedSquare.getX()) * (lowest.getX()-chasedSquare.getX()) + (lowest.getY()-chasedSquare.getY()) * lowest.getY()-chasedSquare.getY()){

lowest=square;
}

}
current=lowest;
}

错误出现在 chase 方法的这一行:

Square lowest=nieghbours.get(0);

他说它是空的,大小为0

但是当我将第三个条件更改为:

if(currentY/30<29&&!grid.get(currentX/30+1).get(currentY/30+1).isWall()){
nieghbours.add(grid.get(currentX/30).get(currentY/30+1));
}

它可以工作,但不是我想要的(在每个角落,它分两步跳到玩家的右边)

最佳答案

我想网格的大小是 30 x 30。这对吗?

然后 currentX/30currentY/30 将始终为 0。这是你想要的吗?

您的意思是 currentX%30currentY%30 吗?

如果你想越过左边,打右边的时候,你应该使用(currentX+1)%30

关于java - 不能向 ArrayList 添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57825745/

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