Вы создаете 2 переменные
float pMouseX = mouseX;
float pMouseY = mouseY;
Затем в ничьей, после обновления змеи, вы обновляете эти переменные:
s.update
pMouseX = mouseX;
pMouseX = mouseY;
Для того, чтобы иметь больше чем 2 прямоугольника, вместо отдельных переменных, рассмотрите возможность использования ArrayList из массивов .
Массив - это в основном способ хранения нескольких переменных в одной переменной. ArrayList похож, но у него нет заданного размера. Это означает, что вы можете продолжать добавлять элементы в ArrayLists, чего нельзя делать с массивами.
Вы можете объявить такой ArrayList следующим образом:
ArrayList<float[]> arrayList = new ArrayList<float[]>(); //each element of the ArrayList is an array, which contains an x and y position
Чтобы получить x и y координаты любого прямоугольника, используйте arrayList.get(indexOfTheRectangle)[0] //use 1 instead of 0 for the y coordinate
и обновите их следующим образом:
for (int i = arrayList.length - i; i > 0; i++) { //you need to go through the array backwards, because otherwise, for each element, you end up changing the value it is supposed to get, which results in all elements having the same value.
arrayList[i] = arrayList[i - 1];
}
arrayList[0] = new float[]{mouseX, mouseY}