একটি অ্যাসাইনমেন্ট অনুসরণ করে এবং একটি ছোট স্নেক ক্লোন তৈরি করে 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;
}
}
দুর্ভাগ্যক্রমে এই আচরণের ফলাফল:
কীভাবে সঠিকভাবে কাজ করে যাওয়া সাপের লেজ তৈরি করা যায় তার জন্য কোনও পরামর্শ খুব প্রশংসা হবে :)