C++:"المسافة" بين 2 الإحداثيات في 2D array
-
21-12-2019 - |
سؤال
لعبة أنا أكتب أحتاج إلى العثور على قيمة عدد صحيح على المسافة بين مجموعتين من الإحداثيات.انها 2D array الذي يحمل خرائط مختلفة.(مثل الأصلي زيلدا).كذلك تذهب من مركز (5,5) أعلى رقم منذ صعوبة الأعداء يزيد.من الناحية المثالية يجب أن يكون بين 0 و 14.على مجموعة 11x11.
لقد حاولت استخدام فيثاغورس الصيغة التي أتذكر من ثانوية, لكنه يقذف بها تجاوز الأرقام.أنا لا يمكن معرفة السبب.
srand(rand());
int distance=sqrt(pow((5-worldx), 2)-pow((5-worldy), 2));
if(distance<0) //alternative to abs()
{
distance+=(distance * 2);
}
if(distance>13)
{
distance=13;
}
int rnd=rand()%(distance+1);
Monster testmonster = monsters[rnd];
المحلول
srand(rand());
لا معنى له ، ينبغي أن يكون srand(time(NULL));
لا تستخدم pow
بالنسبة متر فقط استخدام x*x
الصيغة الخاصة بك هو أيضا خطأ ، يجب إضافة رقم معا ليس ناقص
sqrt
عودة double
ويلقي إلى int
سوف يحفظونها
أعتقد sqrt
العودة دائما إيجابية عدد
تعرف abs
موجود صحيح ؟ لماذا لا تستخدم ذلك ؟ أيضا distance = -distance
هو أفضل من distance+=(distance * 2)
srand(time(NULL));
int dx = 5 - worldx;
int dy = 5 - worldy;
int distance=sqrt(dx * dx + dy * dy);
if(distance>13)
{
distance=13;
}
int rnd=rand()%(distance+1);
Monster testmonster = monsters[rnd];
نصائح أخرى
إنها a^2 + b^2 = c^2 وليس ناقص.بمجرد الاتصال الجذر التربيعي مع سلبية الحجة ، أنت بنفسك.
كنت بطرح الساحات داخل الجذر التربيعي بدلا من إضافتها ("...-الأسرى...").