我對編碼還很陌生,所以我只是試圖製作一些簡單的遊戲,如Snake。現在我正試圖讓蘋果吃掉時跟蹤頭部,但我遇到了問題。ArrayList中的動態矩形
我目前擁有它,以便在合適的時間在正確的地方產卵,但它們不會移動。他們產卵並變得靜止。我的尾部件存儲在一個ArrayList中,我不知道如何更新每個刻度的矩形的座標值。如何修改每個矩形的每個矩形的座標值?
這是我到目前爲止。這裏是滋生尾部件和油漆他們
public static ArrayList<Integer> xValues = new ArrayList(1);
public static ArrayList<Integer> yValues = new ArrayList(1);
public static ArrayList<Rectangle> tails = new ArrayList(1);
public static int tail = 1;
public static void paint(Graphics g) {
g.setColor(Color.green);
g.fillRect(sx, sy, sWidth, sHeight);
if(Apple.collision) {
tails.add(new Rectangle(xValues.get(xValues.size() - tail),
yValues.get(yValues.size() - tail), sWidth, sHeight));
System.out.println(tails.size());
Apple.collision = false;
}
for(int i = 0; i < tails.size(); i++) {
g.setColor(Color.green);
g.fillRect(tails.get(i).x, tails.get(i).y, tails.get(i).width, tails.get(i).height);
}
}
public static void update() {
sx += svx;
sy += svy;
xValues.add(sx);
yValues.add(sy);
}
我想要做的就是每場比賽蜱我想1.所以剛纔尾++遞增變量「尾巴」我的蛇類的一部分。當我吃蘋果的時候,我在蘋果課上做這個。
public static void update() {
if(Snake.sx == ax && Snake.sy == ay) {
ax = (int) ((20 - 0) * random()) * 20;
ay = (int) ((20 - 0) * random()) * 20;
Snake.tail++;
collision = true;
}
但是,這個矩形不是動態的,所以它們不會增加每個勾號的尾部。
我知道我可以通過設置一個for循環找到的長方形的x值,並且有類似
tail.get(i).getBounds().getX;
但我想不通的程序運行時,我可以怎樣改變座標值。
在此先感謝!
太棒了,這讓我對現在更有意義!我只是猜測和檢查,但你做得這麼簡單。非常感謝你! – CoderKlipto