एक असाइनमेंट के बाद और बस एक छोटा सा स्नेक क्लोन बनाकर libGDX के साथ शुरू कर रहा हूं, मैं एक ऐसे मुद्दे पर चला गया हूं जिसे शायद थोड़ी देर के लिए शर्म आ जाएगी।
वर्तमान में मेरे पास एक सांप का सिर है (इस स्तर पर एक साधारण आयत) जो खेल के कैनवास के चारों ओर घूम रहा है। साँप के बाकी हिस्सों के निर्माण का सबसे सीधा-सीधा तरीका यह था कि साँप-बस्तियों के एक जावा कलेक्शंस लिंक्डलिस्ट के मालिक हों, जो खिलाड़ी के अनुसार आकार में कमी / कमी करता हो।
स्नेकलाईट की इस सूची के बाद सिर का पालन करना मामूली साबित हुआ है।
ऐसा करने वाला वर्तमान फ़ंक्शन निम्नानुसार है और हर बार कहा जाता है कि सिर अपनी स्थिति को अपडेट करता है:
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;
}
}
जो दुर्भाग्य से इस व्यवहार का परिणाम है:
कैसे सही ढंग से काम करने वाली साँप की पूंछ बनाने के लिए कोई सुझाव बहुत सराहना की जाएगी :)