Java 什么?或者像增加一样?共享堆栈跟踪所有添加的矩形都具有相同的位置?或者类似于增加?也许可以提供一种方法来确定在尝试增加主体时要使用的索引(搜索数组中的第一个空值,并使用找到的索引-1来查找蛇的尾巴)。我可以看到的另一个错误是,当他在tempBody中添加一
Java 什么?或者像增加一样?共享堆栈跟踪所有添加的矩形都具有相同的位置?或者类似于增加?也许可以提供一种方法来确定在尝试增加主体时要使用的索引(搜索数组中的第一个空值,并使用找到的索引-1来查找蛇的尾巴)。我可以看到的另一个错误是,当他在tempBody中添加一,java,arraylist,Java,Arraylist,什么?或者像增加一样?共享堆栈跟踪所有添加的矩形都具有相同的位置?或者类似于增加?也许可以提供一种方法来确定在尝试增加主体时要使用的索引(搜索数组中的第一个空值,并使用找到的索引-1来查找蛇的尾巴)。我可以看到的另一个错误是,当他在tempBody中添加一个新矩形时,他从哪里获得宽度和高度?他没有将它作为参数传递给grow()函数,grow()函数中没有定义它,它们也不是全局变量。@HarilSatra look构造函数,有来自超类的GameObject我建议去掉数组,改用列表。此外,只需从一个
什么?或者像增加一样?共享堆栈跟踪所有添加的矩形都具有相同的位置?或者类似于增加?也许可以提供一种方法来确定在尝试增加主体时要使用的索引(搜索数组中的第一个空值,并使用找到的索引-1来查找蛇的尾巴)。我可以看到的另一个错误是,当他在tempBody中添加一个新矩形时,他从哪里获得宽度和高度?他没有将它作为参数传递给grow()函数,grow()函数中没有定义它,它们也不是全局变量。@HarilSatra look构造函数,有来自超类的
GameObject
我建议去掉数组,改用列表。此外,只需从一个元素开始,而不是从三个元素开始,其中两个元素为null。也许可以提供一种方法来确定在尝试生长身体时要使用的索引(搜索数组中的第一个null,并使用找到的索引-1来查找蛇的尾巴)我可以看到的另一个错误是,当他在tempBody中添加一个新的矩形时,他的宽度和高度在哪里?他没有将它作为参数传递给grow()函数,grow()函数中没有定义它,它们也不是全局变量。@HarilSatra look构造函数,有来自超类的GameObject
我建议去掉数组,改用列表。此外,从一个元素开始,而不是从三个元素开始,其中两个元素为空。使用列表的目标是不确定地增加大小,增长2倍后,您将始终使用else,但您仍然可以增长使用列表的目标是不确定地增加大小,增长2倍后,您将始终使用else,但您仍然可以增长
public class Snake extends GameObject
{
private Rectangle[] snake;
private int speed;
public Snake(int locX, int locY, int width, int height, int speed, ID id)
{
super(locX, locY, width, height, id);
snake = new Rectangle[3];
snake[0] = new Rectangle(locX, locY, width, height);
this.speed = speed;
grow();
}
public void render(Graphics g)
{
g.setColor(Color.GREEN);
drawSnake(g);
}
public Rectangle getBounds()
{
return new Rectangle(locX, locY, width, height);
}
private void drawSnake(Graphics g)
{
for(int i = 0; i < snake.length - 1; i++)
{
g.fillRect(locX, locY, width, height);
}
}
private void grow()
{
ArrayList<Rectangle> tempBody = new ArrayList<Rectangle>(Arrays.asList(snake));
tempBody.add(new Rectangle(snake[snake.length - 1].x, snake[snake.length - 1].y, width, height));
snake = tempBody.toArray(snake);
}
}
private void grow(){
ArrayList<Rectangle> tempBody = new ArrayList<Rectangle>(Arrays.asList(snake));
tempBody.add(new Rectangle(snake[size].x,
snake[size].y, width, height));
snake = tempBody.toArray(snake);
size++;
}
public void grow()
{
ArrayList<Rectangle> tempBody = new ArrayList<Rectangle>(Arrays.asList(snake));
if(tempBody.size() < snake.length())
{
tempBody.add(new Rectangle(snake[tempBody.size() - 1].x, snake[tempBody.size() - 1].y, width, height));
snake = tempBody.toArray(snake);
}
else
System.out.println("Snake at full size: " + snake.length());
}