جربت كود الأساذ الفاضل ولكن هناك بعض النقاط التي يجب تعديلها…ركز معي ستتعلم الكثير كما فعلت أنا…
معطيات: الابعاد 1200 عرض 800 طول.
ترتيب القائمة احمر اخضر و ازرق.
خط النهاية هو 540
بالنسبة لدالة تحريك السلاحف…تعيين الفائز بهذه الطريقة قد يكون غير دقيق كفاية؟؟
ركز فقط على دالة تحريك السلاحف.
…تقوم حلقة فورلوب بتحريك السلاحف تبعا لترتيبها في القائمة..اول من يتجاوز 540 هو الفائز
ويتم كسر حلقة وايل..
وبالتالي لن يتم النظر في قيم بقية السلاحف…
تخيل معي ماذا لو ان اخر سلحفاة في القائمة مثلا حصلت على 550
واول سلحفاة حصلت على 543
يتم مباشرة أخذ اول قيمة في القاىمة التي وصلت للنهاية ثم تطبع النتائج.
منطقيا من له اكبر عدد من الخطوات فهذا يعني انه اول من وصل الى النهاية صح؟
لو حركنا السلاحف بطريقة ما في نفس الوقت تماما…بالطبع ان صاحب 10 خطوات سيسبق صاحب 3 خطوات؟
مهما كانت سرعة فورلوب فانها ستحرك العناصر في القائمة كما قلنا تبعا لترتيبها …
وبالتالي هذا الكود ليس افضل حل. للتحقق من كلامي قم بطباعة قيم اكس لكل السلاحف عند نهاية السباق وسترى الفرق في النتائج…
لاحظ في هذا المثال الحي..
انا راهنت على الأزرق -اخر عنصر في القائمة- حصلت على 550 بينما الأخضر - العنصر الثاني في القائمة- حصل على 544 وهو اللي ربح السباق رغم انني اتفوق عليه في الخطوات وهذا ببساطة لأنه سبقني في ترتيبه في القائمة.
الحل.. قمت بتعديل بسيط على مستوى دالة تحريك السلاحف..كل من يتجاوز 540 يتم إضافة قيم إكس الى قائمة الفائزين ثم ترد لي اعلى قيمة والتي تعبر عن اول من عبر خط النهاية.
ثم بعدها اتحقق من صاحب القيمة العليا هذه واقارنها بتخمين اللاعب واطبع النتائج في دالة منفصلة…
نفس الرهان السابق..بعد التعديلات..لاحظ النتيجة؟ خسرت الرهان لأن الأخضر يفوقني في الخطوات
والدليل لاحظ في هذه الحالة راهنت على الأحمر ورغم انني الأول في القائمة الا انني خسرت لان الاخضر يفوقوني في الخطوات
في النهاية هذه التعديلات تجعل من التحكيم أكثر دقة وعدلا وتجعل اللعبة منطقية أكثر…بالنسبة لي تعلمت الكثير من هذه المسائل والبحث والمشاكل التي واجهتها وهذا جيد.
انصحك بعدم الإكتفاء بحل التحدي فقط . بل ابحث عن الجديد وحاول تطوير الحل وابتكار افكار جديدة عندها فقط انتقل الى الوحدة التالية.