الشبكة العربية لمطوري الألعاب

خبير مدير وسام البهنسي مشاركة 1

السلام عليكم،
 
في هذه المهمة سنقوم ببرمجة وحدة تتكفل بعمليات الإدخال في اللعبة. كما نعلم، XNA يدعم لوحة المفاتيح وعصا تحكم Xbox360.
 
نودّ كتابة وحدة تريحنا من التفريق بين الاثنين. حيث يستطيع اللاعب استخدام أي الأداتين للعب.
 
مهمة الوحدة هي اختزال أسماء الأزرار وما إلى ذلك إلى طبقة ذات مستوى أعلى بقليل، وهي طبقة الأوامر. لتوضيح الفكرة، سأضرب مثالاً:
 
في القائمة الرئيسية، نستخدم زر المسافة للموافقة، أو الزر A في الجويستيك لنفس الشيء. بدلاً من الكشف عن حالة كل من الزرين، تقدم وحدة الإدخال بديلاً على شكل إجراء يخبرني إن كان "زر الموافقة مضغوطاً".
 
هكذا نستطيع إعادة توزيع الأزرار بسهولة دون المساس ببقية أنحاء الكود.
 
أرجو أن تكون الفكرة قد وضحت.
 
الأزرار التي تدعمها وحدة الإدخال هي:
 
* يمين، يسار، فوق، تحت
* موافق
* خروج
* إطلاق
* قفز
 
بعد إنهاء هذه المهمة سنقوم بتعديل كافة الكود ليعتمد على هذه الوحدة بدلاً من الاعتماد المباشر على إجراءات كشف لوحة المفاتيح أو الجويستيك.
 
بعد الانتهاء من التعديلات وتجريبها، ارفع التعديلات إلى النسخة المركزية في كود بليكس وأعلمنا بذلك.
 
والسلام عليكم

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  بلال بوزيــــــــاني مشاركة 2

و عليكم السلام
 
 يبدو ان المتعة بدأت في هذا المشروع ,  رائع جدا , كذلك تبدو هذه الوحدة مشوقة.
 
بالتوفيق للجميع و أراكم عن قريــــــــب
 
أخوكم بلال.

محترف  انس مشاركة 3

السلام عليكم.
بما ان امتحاناتي تنتهي اليوم، فهل بوسعي العمل على هذه الوحدة ؟
شكرا

مبتدئ  عمّار حرفوش مشاركة 4

قمت ببرمجة وحدة الادخال كالمطلوب.

يمكن التحقق لادخالات لوحة المفاتيح و اداة التحكم في نفس الوقت بنفس الدالة, حتا الان تدعم ازرار الاتجاهات فقط و سأضيف عصا الانالوج لاحقا.
و ايضا اضفت ميكانيكية تسهل التحقق من حدث الضغط و افلات الازرار (pressed,released)

لكن لم استطع رفع التعديلات الى كود بليكس ... مع انني اتبعت نفس الخطوات, لكن عند الدخول الى Repository Explorer لا يطلب مني اسم مستخدم ولا كلمة دخول و عندما احاول تشغيل الامر push تظهر لي هذه الرسالة:
pushing to https://hg01.codeplex.com/sudum
searching for changes
(you should pull and merge or use push -f to force)
[command returned code 1 Sat Jul 03 07:16:02 2010]
abort: push creates new remote heads on branch 'default'!

[تعديل]
قمت باستخدام force push و تمت العملية!

مبتدئ  بلال بوزيــــــــاني مشاركة 5

السلام العليكم و رحمة الله وبركاته 
 
أقرأ   هذه 😠
 
1-  http://www.agdn-online.com/communities.aspx?view=posts&threadid=781



بناء وحدة إدخال: تنفيذ بلال بوزياني، خلال الأيام الخمسة القادمة حتى يوم الاثنين الخامس من يوليو
 
2- http://www.agdn-online.com/communities.aspx?view=posts&threadid=794
 
- في الحقيقة انا منزعج جدا  , كان عليك ان تطلب الأذن اولا أخي ,  ثانيا انا  لم اتاخر في تنفيد هذه الوحدة .  ثالثا هناك  دائما في مشروع ما صغر أم كبر  مسؤل عن هذا المشروع هو الذي يقرر متى تبدأ البرمجة متى تقف متى ..........الى اخره.
 
رابعا  ليست العبرة في هذا المشروع ان تبرمج أسرع من الاخرين او تبرمج أحسن من غيرك , فهو مشروع جماعي الكل يستفيد , فهناك  في هذا الموقع من يستطيع ان ينهي هذا المشروع في أقل من اسبوعين وحده  و لكن ليس هذا ما نريد.

أخوكم بلال.

خبير  أحمد عزالدين مشاركة 6

السلام عليكم

أخي عمار
هلا قرأت الرابط الذي ذكره الاخ بلال لمعرفة ان كانت هناك مهمة مسندة لك وكيف سيتم اعطاء المهمات من قبل الادارة
http://blog.agdn-online.com/wbahnassi/
حيث أن مهمة وحدة المدخلات كانت مسندة الى الاخ بلال 😏
ربما سيقوم الاخ وسام في هذه الحالة باعطاء الاخ بلال مهمة بديلة 😄

بخصوص المشكلة التي واجهتك عند رفع كود وحدة المدخلات
أعتقد أنك لم تقم بعمل Pull وتحديد الاختيار Update مع After Pull كما ذكر الاخ وسام
لان رسالة الخطأ المذكورة تذكر أن هناك تضارب بين النسخة الموجودة في المخزن الرئيسي وبين نسختك
وأنه لابد من جلب اخر التعديلات - واصلاح اي تضارب - ومن ثم عمل دمج بين هذه التعديلات وتعديلاتك اذا اضطررت لذلك

أعتقد أنه لا يفضل عمل Push by force  لان ذلك قد يسبب تضارب في محتويات المخزن الرئيسي في حالة اهمال بعض التعديلات وعدم اصلاح التضاربات

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

والسلام عليكم

أحمد عزالدين
طالب دراسات عليا
جامعة كالجري

مبتدئ  عمّار حرفوش مشاركة 7

في 03 يوليو 2010 01:03 م، عقد بلال بوزيــــــــاني حاجبيه بتفكير وقال:

- في الحقيقة انا منزعج جدا  , كان عليك ان تطلب الأذن اولا أخي ,  ثانيا انا  لم اتاخر في تنفيد هذه الوحدة .  ثالثا هناك  دائما في مشروع ما صغر أم كبر  مسؤل عن هذا المشروع هو الذي يقرر متى تبدأ البرمجة متى تقف متى ..........الى اخره.
حقك عليي!
لم اقرأ كامل المواضيع, و لم انتبه انه تم اسنادها لك ... و اعتذر عن ذلك.
هذه اول مرة اقوم بالمشاركة بعمل جماعي, حيث معتاد على كتابة كل شيء بنفسي, لدرجة انها تحدث لا اراديا و كأنني بوضع autopilot!


وفي 03 يوليو 2010 01:03 م، قال بلال بوزيــــــــاني متحمساً:

رابعا  ليست العبرة في هذا المشروع ان تبرمج أسرع من الاخرين او تبرمج أحسن من غيرك , فهو مشروع جماعي الكل يستفيد , فهناك  في هذا الموقع من يستطيع ان ينهي هذا المشروع في أقل من اسبوعين وحده  و لكن ليس هذا ما نريد.
لم اكن اقصد ذلك! لم اكن اعرف انه مسند لك!
من الان و صاعدا لن المس اي شيء غير اللذي يسند الي!

اخي احمد شكرا لك, اصبحت امور البرنامج واضحة الان.

سأقوم ببرمجة وحدات الصوت و الموسيقى حاليا اذا لم يكن قد تم اسنادها لاحد ...

مبتدئ  بلال بوزيــــــــاني مشاركة 8

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

خبير مدير وسام البهنسي مشاركة 9

أنا سعيد جداً لحل هذه المسألة الصغيرة 😄
 
الأخ عمار سيركز عمله على الموسيقى والأصوات في الوقت الحالي، وسأطرح تفصيل مهمته قريباً.
 
أما بالنسبة للأخ بلال ووحدة الإدخال، فقم يا بلال بالآتي:  نزّل تعديلات عمار من النسخة المركزية، وألقِ نظرة عليها وقم بتجريبها. إن وافقت عليها فحافظ عليها، وإلا فلك الحرية في تطويرها أو تعديلها كما تراه مناسباً.
 
 
انتبهوا يا أصدقائي بالنسبة لموضوع التعامل مع النسخة المركزية. كما ذكر أحمد، لا يفضل إجراء العمليات بالقوة. فهذه الرسائل غالباً تحمل في طياتها دليلاً على مشكلة في تنزيل التعديلات، ويجب حلها بشكل منطقي دون المخاطرة بالكتابة فوق تعديلات الآخرين.
 
في حالة عمار يبدو أن ما حدث هو أنه أراد أن يرفع تعديلاته رغم وجود تعديلات في النسخة المركزية لم يحصل عليها، وهذه التعديلات تتقاطع مع تعديلاته في بعض الملفات.  الأسلوب الصحيح للتعامل مع هذه المسألة هو كما يفعل أحمد عز. أولاً قم بتنزيل آخر التعديلات بنفس الأسلوب المذكور في المدونة. وإن وُجدت تضاربات فإن TortoiseHg سيخبرك بذلك ويطلب منك إجراء عملية دمج merge. قم بذلك ثم تحقق من عمل اللعبة. إن كانت الأمور على ما يرام فستستطيع رفع تعديلاتك دون أية رسائل تحذيرية.
 
وأذكر مرة أخرى، إن كنتَ تعاني من التعامل مع كود بليكس فيمكنك إرسال تعديلاتك إلى المنتدى وسنقوم نحن بتضمينها بدلاً عنك.
 
والسلام عليكم

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  بلال بوزيــــــــاني مشاركة 10

كل مشروع و مشاكله ,  الامر عادي  انشاء الله  ,   المهم  ان نجح 😳
 
اما لهذه الوحدة , فلا يوجد اشكال باذن الله , أرى ان الاخ عمار سوف يكملها لانه تعب عليها و هو صاحبها  و عمله ممتاز و لم يبقى له الكثير   و من بعد يركز عمله على وحدة الموسيقى و الأصوات  , لا اشكال  😄 .
 
اما عني انا  سوف أنتظر عمل اخر او وحدة أخري ان شاء الله  بكل شوق لأني جد متحمس  ☺ .  ولا تنسو أخ أنس فاني أراه  جد متحمس خاصتا بعد انتهائه  من الامتحانات 😋 .
 
أخوكم بلال.