मैं एक ऐसा खेल बना रहा हूँ जहाँ दुश्मन बेतरतीब ढंग से एक नक्शे पर घूमते हैं और फिर हर फ्रेम में एक यादृच्छिक गति से खिलाड़ी की ओर बढ़ते हैं। नक्शे में कोई बाधा नहीं है, इसलिए दुश्मनों को हमेशा एक सीधी रेखा में चलना चाहिए। मैंने मूवमेंट फंक्शन को कुछ बार लिखा लेकिन कोई फर्क नहीं पड़ता कि दुश्मन हमेशा 0, 45, 90, 135, 180, 225, 270, 315 एंगल मारते हैं लेकिन कभी सीधी रेखा नहीं। यहाँ कोड का एक उदाहरण है:
base_speed = random();
diff_x = abs(enemy_y_pos - player_x_pos);
diff_y = abs(enemy_x_pos - player_y_pos);
if (diff_x > diff_y) {
y_speed = base_speed;
} else if (diff_y > diff_x) {
x_speed = base_speed;
}
if (enemy_x_pos < player_x_pos) {
velocity.x = x_speed;
} else if (enemy_x_pos > player_x_pos) {
velocity.x = -x_speed;
} else {
velocity.x = 0;
}
if (enemy_y_pos < player_y_pos) {
velocity.y = y_speed;
} else if (enemy_y_pos > player_y_pos) {
velocity.y = -y_speed;
} else {
velocity.y = 0;
}
enemy_x_pos = enemy_x_pos + velocity.x;
enemy_y_pos = enemy_y_pos + velocity.y;
गेम प्रोग्रामिंग में यह मेरा पहला प्रयास है। मुझे लगता है कि यह ब्रेशेनहैम की रेखा ( http://en.wikipedia.org/wiki/Bresenham%27s_line_al एल्गोरिदम) की तरह एल्गोरिथ्म का उपयोग करना चाहिए, लेकिन लागू करने के मेरे प्रयासों में एक ही मुद्दा है। मैं दुश्मनों को एक सीधी रेखा में कैसे घुमाऊं?