Я сделаю все возможное, чтобы объяснить проблему. Так что в своей игре со змеями я пришел к тому, чего больше всего боялся - массиву. Итак, я сделал ArrayList, полный прямоугольников.
Затем я добавляю прямоугольник каждый раз, когда ем еду, и теперь я нахожусь в «зацикливающейся» части, где я должен зациклить разные прямоугольники.
Мне удалось добавить один прямоугольник к змее - я просто выбрал старое местоположение head.x
и местоположение head.y
, но оно оказалось в snakeParts.get(0).setLocation
.
Проблема, с которой я столкнулсярисует остальную часть массива (который будет индексом от 1 до бесконечности).
Кажется, я не могу получить остальные старые позиции ArrayLists. Например: я хочу, чтобы snakeParts.get(1)
получил старую позицию snakeParts.get(0)
, но я не могу понять, как сделать эту логику. Интересно, кто-нибудь из вас может мне помочь?
Вот часть кода, на которую влияют:
repaint();
//Test
for(int z = 0; z < snakeParts.size(); z++) {
System.out.println(z); //Test printing
if(z == 0) {
snakeParts.get(z).setLocation(head.x, head.y); //Printing index 0
}
else {
snakeParts.get(z).setLocation(snakeParts.get(z - 1).getLocation());
//Takes all the indexes and puts them where the snakeParts.get(0) is. I want them to get longer - like the Snake game
}
//Loop different might solve the issue?
}
head.x += speedx;
head.y += speedy;
Я делаю это в JPanel, и мой ArrayList
массив класса Rectangle, который можно найти здесь: класс Rectangle
Если вам нужен весь код - пожалуйста, спросите! Я подумал, что вам будет проще показать вам этот пример кода, потому что это единственная часть, которая влияет на то, чего я пытаюсь достичь.
Заранее спасибо!