بتاريخ 17/شوال/1429 04:40 م، قطب ahmed ezz حاجبيه بشدة وهو يقول:
ها قد عدنا مرة اخري مع اول محاولة لتنفيذ المطلوب وبحمد الله تم تنفيذ المطلوب 😄 واضافة زر جديد هو CTRL مسئول عن وضع اي عنصر يحمله اللاعبclass Explorer
{
private:
int m_iMemberOne;
float m_fMemberTwo;
Explorer()
{
m_iMemberOne = 0;
m_fMemberTwo = 0.0f;
}
};
class Explorer
{
private:
int m_iMemberOne;
float m_fMemberTwo;
Explorer() :
m_iMemberOne(0),
m_fMemberTwo(0.0f)
{
}
};
chamber.GetCollectables().push_back(pCol);
//delete m_pColHeld;
m_pColHeld = NULL;
chamber.GetCollectables().push_back(m_pColHeld);
m_pColHeld = NULL; // It is now managed by the chamber
أما في 19 اكتوبر 2008 04:18 م، فقد تنهد وسام البهنسي بارتياح وهو يرد:
هناك تسريب في الذاكرة من جراء عدم حذف نسخة الـ Collectable التي يحملها اللاعب عندما يترك ما يحمل. انظر في الملف Explorer.cpp السطر 320في 19 اكتوبر 2008 04:18 م، غمغم وسام البهنسي باستغراب قائلاً:
أخيراً، عندما يضع اللاعب الحمل باستخدام زر Ctrl+Down، فإنه يضع الجسم على الأرض، لكنه يبقى يحمله بنفس الوقت!في 23/شوال/1429 04:35 ص، غمغم ahmed ezz باستغراب قائلاً:
عموما اذا كانت هناك طريقة لتغيير مكان الحمل الذي يراد اسقاطه - برجاء اخباري 😳بتاريخ 23/شوال/1429 04:35 ص، قطب ahmed ezz حاجبيه بشدة وهو يقول:
لقد تم اصلاح المشكلة وذلك بتحديث شكل الجرافيك الخاص باللاعب وبارجاع قيمة ال frame player الي الصفرif (m_pColHeld)
delete m_pColHeld;
وهو ما لا داعي له. لأنك تستطيع أن تقوم بعملية delete لمتغير قيمته NULL ولا يحدث أي خطأ. طبعاً قد يكون من الأفضل عمل assert على المتغير إذا لا يتوقع أن تكون قيمته NULLchar artName[] = "Axe";
pCol = m_pColHeld->Create(col, artName, NULL, NULL);
وهو ما لم أفهمه. فإذا كان الإجراء يستقبل متغيراً من نوع char* فهذا خطأ في تصميمه ويجب أن يستقبل متغيراً من نوع const char* أو الأفضل const &std::string. أما إذا كانت الحالة الثانية هي القائمة فليس هناك داعي لحجز متغير على الـ stack فقط لتدمره بعد النداء. أي يجب أن يكون الكود من الشكل:const char *artName = "Axe";
pCol = m_pColHeld->Create(col, artName, NULL, NULL);
// OR
pCol = m_pColHeld->Create(col, "Axe", NULL, NULL);
وفي 23 اكتوبر 2008 04:14 م، أعرب وسام البهنسي عن رأيه بالموقف كالآتي:
ببساطة، يمكنك إضافة إجراء جديد إلى كلاس Collectable، يقوم بتغيير الـ X والـ Y للشيء. المعلومات محفوظة ضمن المتغير m_Data في الكلاس.DWORD tA_Texture;
DWORD tOP_SeA1;
DWORD dwColorArg1;
DWORD dwColorOp;
وفي 04 نوفمبر 2008 04:10 م، أعرب أحمد عبد الغني عن رأيه بالموقف كالآتي:
- المشاعل لا تنير ما حولها على الإطلاق (وجدت الكود مفصول)في 04 نوفمبر 2008 04:10 م، قال أحمد عبد الغني بهدوء وتؤدة:
3- أعتقد أن الاستراتيجية واضحة بالنسبة لأية عناصر يجب أن تظهر حتى دون وجود إنارة (كل العناصر غير أحجار الهرم) لذلك يجب أن تظهر الأبواب مع مفاتيحهافي 04 نوفمبر 2008 04:10 م، عقد أحمد عبد الغني حاجبيه بتفكير وقال:
- في الحديث عن المتغيرات فالكود الجديد لا يتبع مواصفات الكود الأصلي (وهذا أمر نبهنا عليه وسام عدة مرات) فمثلاً:DWORD tA_Texture;
DWORD tOP_SeA1;
في 07/ذو القعدة/1429 03:31 ص، عقد ahmed ezz حاجبيه بتفكير وقال:
لقد جربت الكود قبل رفعه وهو يعمل بنجاح والكود غير مفصول لكني وضعت comment لمن يريد الغاؤه اذا اراد تجربته علي اي مرحلة لا تحتوي علي مشاعل لانه لتجربة المؤثر مع المشاعل لابد من تصميم مرحلة داخل محرر المراحل ثم وضعها بالاسم المناسب داخل المجلد Data\\Levels علي ما اتذكر