Bir ödevi takiben ve küçük bir Yılan klonu oluşturarak libGDX ile çalışmaya başladıktan sonra, kısa bir süre içinde utanacağım bir sorunla karşılaştım.
Şu anda oyunun tuvalinde dolaşan bir yılanın kafasına (bu aşamada basit bir dikdörtgen) sahibim. Yılanın geri kalanını inşa etmenin en basit yolu, kafanın oyuncunun yaptıklarına göre boyutunu küçültecek bir Java Koleksiyonlar LinkedList of SnakeElements'e sahip olmasıydı.
Bununla birlikte, bu SnakeElements listesinin başı takip etmesi önemsiz değildi.
Bunu yapan mevcut işlev aşağıdaki gibidir ve kafa konumunu her güncellediğinde çağrılır:
private void moveTail (float x, float y, int direction) {
float tmpx, tmpy;
int tmpdirection;
int offset_x, offset_y;
for (SnakeSegment snse : tail) {
offset_x = 0;
offset_y = 0;
tmpx = snse.getX();
tmpy = snse.getY();
tmpdirection = snse.getDirection();
switch(direction) {
case 0:
offset_x = 0;
offset_y = -(2 + snse.width);
break;
case 1:
offset_x = -(2 + snse.width);
offset_y = 0;
break;
case 2:
offset_x = 0;
offset_y = (2 + snse.width);
break;
case 3:
offset_x = (2 + snse.width);
offset_y = 0;
break;
default:
System.out.println("wrong direction");
}
snse.setX(x + offset_x);
snse.setY(y + offset_y);
snse.setDirection(direction);
x = tmpx;
y = tmpy;
direction = tmpdirection;
}
}
maalesef bu davranışla sonuçlanır:
Doğru çalışan bir yılan kuyruğu nasıl yapılır hakkında herhangi bir ipucu çok takdir edilecektir :)