سؤال

أنا جعل اللعبة مع بيثون->PyGame->Albow و واجهت مشكلة مع المجلس جيل.ومع ذلك سأحاول أن أشرح المشكلة في اللغة الملحد الطريق.أعتقد أنه لا علاقة الثعبان.

لقد انقسم المجلس لعبة جيل إلى عدة أجزاء.

الجزء الأول يولد المجلس الثقوب.

الثقوب الموجودة في قائمة/مجموعة.كل حفرة كائن رسم الخرائط من الزوايا المتعلقة أخرى الثقوب التي أحاطت به ، كل من تلك الثقوب أيضا وصلات إلى ذلك.(نوع من مثل HTML DOM الأشقاء ، والفرق أي زاوية ممكنة)

حفرة هو شيء من هذا القبيل:

hole = {
    empty: True,
    links: {
        90: <other hole>,
        270: <another hole>,
        etc...
    }
}

الجزء الثاني, وحساب حفرة المواقف.رمز هو شيء من هذا القبيل.

def calculate_position(hole):
    for linked_hole in hole.links:
        if linked_hole.position == None:
            #calculate linked hole's position relative to this hole
            linked_hole.position = [position relative to first hole]
            calculate_position(linked_hole)

first_hole.position = (0, 0) #x, y
calculate_position( first_hole )

الجزء الثالث, رسم المجلس.

العثور على ارتفاع النافذة, قم بتوسيع مواقع الثقوب (المحسوبة في الخطوة الثانية) لتناسب الإطار.رسم كل شيء.

أعتقد أن المشكلة هي في الخطوة الثانية أنا حساب كل حفرة نسبة إلى حفرة السابق.أخطاء التقريب و المجلس يذهب الحول على شكل مزيد من البداية ثقب الثقوب أكبر من المجلس.هذا يحدث فقط عندما جعل المجالس التي لا مستطيلة لأن خلاف ذلك لا يوجد أخطاء التقريب.

أنا باستخدام بسيطة لحساب المثلثات النسبية مواقع الثقوب عن طريق تحويل زاوية إلى راديان و باستخدام بنيت في الخطيئة/cos وظائف.

أي فكرة عن حل أو إذا كنت مخطئا كما أن المشكلة مفيد :)

PS:أنا سيتم نشر التعليمات البرمجية المصدر إذا كان من شأنها أن تساعد ولكن أشعر أنه سوف فوضى الامور

شكرا على كل الإجابات.

الناس الذين قال التقريب ربما لن تكون قضية تم على الفور.كان لي نظرة أخرى من خلال رمز مع أخذ ذلك في الاعتبار.أنا أشعر بالحرج أن أقول أنني كنت توليد الخطأ الزوايا في الجزء الأول من المجلس جيل تقديم جزء الصحيح.

لقد تميز نورمان الإجابة الصحيحة لأنه يشرح كيفية استخدام تركيبة خطية من ناقلات لحل المشكلة.

هل كانت مفيدة؟

المحلول

إذا كان ثقب مواقع يتم تخزين الأعداد الصحيحة لا شك خطأ التقريب يتراكم بسرعة كافية لقتلك.إذا كان ثقب مواقع يتم تخزين النقطة العائمة, و إذا كان لديك خطأ من وحدة واحدة في مكان آخر (ULP) في كل حساب, أنا لست متأكدا تماما كيف بسرعة خطأ يتراكم—ولكن إذا كان الخطأ الزوجي في كل خطوة ، ثم لديك في معظم 53 الروابط قبل حتى الدقة المزدوجة النقطة العائمة سوف تذهب الخطأ.

إذا كنت تريد أن تكون الصخور الصلبة دقيقة ، وأود أن تمثل كل منصب تركيبة خطية من ناقلات.يمكنك تمثل كل متجه من زاويته و لديك فقط بضع زوايا, لذلك أنت يمكن أن تمثل موقف حفرة شيء من هذا القبيل

يستغرق ستة 30 درجة الخطوات واثنين من 90 درجة الخطوات الأربع 180 درجة الخطوات

الأرقام الستة اثنان وأربعة سوف يكون بالضبط, و بمجرد احتساب جميع المناصب ناقلات, يمكنك القيام به ثم علم حساب المثلثات لتحويل (x, y) إحداثيات كل شيء دفعة واحدة.إذا كنت قلقا بشأن السرعة التي يمكن أن ذاكرة التخزين المؤقت قوس الظل من كل زاوية حتى أنها سوف تكون سريعة.

إذا كان هذا الوصف هو أيضا مقتضب, اسمحوا لي أن أعرف.

نصائح أخرى

قليلا عن دقة يصبح نسبيا المهم بمجرد أن ندرك هذه النقاط ستكون تحويلها إلى بكسل الإحداثيات،.ك.أ.الاعداد الصحيحه.تتراكم خطأ 0.5 وبام!أنت واحد بكسل قبالة.

لذا إما أن هناك مشكلة كبيرة مع دقة أو أخطاء التقريب تسلق جدا سريع جدا ، أو مصدر المشكلة في مكان آخر.أنا أبحث في هذه الخطوة على وجه الخصوص:

توسيع وظائف من الثقوب (المحسوبة في الخطوة الثانية) لتناسب الإطار

حتى أرى screenie, سأفترض "الحول" يعني 'البيضاوي-نوعا ما-نوعا ما-شيء';يبدو بالضبط ما الخلل في هذه الخطوة يمكن أن تنتج.

أنا أكره أن تكون واحدة تشير إلى هذا ، ولكن تبدأ في المركز.أيضا, يجب أن ننظر في رمز التحقق مؤسفة التحويل.هو إذا ثقب ينتهي في "138.2, 150.8" ، تحتاج إلى الحفاظ على أجزاء كسور حتى يكون لديك حساب ثقب المقبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top