This article is currently in the process of being translated into Arabic (~97% done).
Introduction
ملخص سريع حول ما سنطرحه في المقال: سوف نعمل على تنفيذ لعبة الافعى الكلاسيكية بواسطة WPF و النتيجة النهائية ستكون كالتالي:
صناعة الالعاب هو عادة السبب الرئيسي الذي يجعل الكثيرين وبالاخص الشباب يتجهون لتعلم البرمجة. وهنا يطرح السؤال المهم : كيف ابدأ بتعلم البرمجة؟ وما الذي احتاجه للبدء؟. حسنا, انت تحتاج لتعلم لغة برمجة مثل سي شارب او سي بلس بلس او اي لغة برمجة معروفة اخرى, اما اذا كنت تتقن لغتك المفضلة فلا حاجة فعلا لتعلم لغة اخرى: فقط ابدأ من القعر. اضف بعض البكسلات هنا وهناك على الشاشة وفي لحظة ما قد تحصل ربما على لعبة تعمل.
مع ذلك, اغلب الناس قد يفضلون المساعدة قليلا عند المشكلات السهلة. لماذا عليّ ان اتعامل مع البكسلات بصورة مباشرة بينما هناك مكتبات جاهزة وframeworks تعمل ذلك وتوفر علي الوقت لاستغله بتركيز الجهد على بناء اللعبة بشكل اساسي؟ حسنا , هناك الكثير من المكتبات الجاهزة والـ frameworks التي تساعدك على القيام بذلك. في الواقع WPF framework هو احدها
بصورة اوسع, WPF هو ليس الخيار الامثل لصناعة الالعاب - هو بالاساس framework مخصص لصناعة الواجهات للبرامج الموجهة للاعمال. ولكن يبقى هناك العديد من العناصر في WPF framework التي من خلالها تساعدك لصناعة الالعاب او بالاحرى تكون مساوية بالاهمية. بذلك تحصل على الميكانيكية اللازمة لرسم والتحكم بالواجهة في Windows.
اذن , اذا كنت تعمل على صنع لعبة بسيطة فان WPF سيكون خيارا مناسبا. وسيقدم مساعدة كبيرة في كل المفاهيم الاساسية لعمل ذلك , مثل : تصميم الواجهات ورسم المساحات اللازمة .. الخ . اما اذا كنت تريد اضافة تصاميم ثلاثية الابعاد او اضافة كائنات متحركة , يمكنك ذلك بمساعدة مكتبات library/framework اخرى , وستكون بسيطة ومناسبة لعمل لعبة بسيطة , كـ لعبة الافعى ! الكلاسيكية
SnakeWPF
واثباتا لما فات من المفاهيم, قررت ان اعمل اصدارا من لعبة الافعى الكلاسيكية بناءا على WPF. سنستخدم واجهة WPF الاعتيادية كمساحة للعبة وكذلك ازرار التحكم والاشكال الخاصة بـ WPF الاعتيادية للتحكم باللعب. والسبب لاختياري لعبة الافعى هو لانها سهلة نسبيا للتنفيذ باستخدام الاشكال السهلة كالدوائى والمربعات, والتي توفرها مكتبات WPF framework ويكون استخدامها سهلا. وكذلك لانها لعبة ممتعة رغم طبيعتها السهلة.
اذا كنت لا تعرف عن اللعبة (الافعى) شيء فهذا يعني انك لست من جيل الطيبين جيل نوكيا جيل التسعينات او بدايات الالفين. الاصدار الاول من اللعبة قد تم اطلاقه قبل هذا التاريخ بسنين, ولكن يعتبر اصدار نوكيا الشهير هو اللمسة السحرية للعبة , وقد اضافتها في جميع هواتفها.
طور اللعب سهل بقدرما هي ممتعة: انت تقوم بتحريك افعى افتراضية باتجاه واحد (يسار, يمين, اعلى, اسفل) لاصطياد الطعام (احيانا التفاح). عندما تاكل الافعى الطعام يفترض بها ان تنمو وتكبر وسيظهر الطعام (التفاح) في مكان اخر على الشاشة. واذا اصطدمت بالحائط او بذيل الافعى نفسها ستخسر اللعبة وستعود من حيث بدأت. كلما اكلت طعاما (تفاحا) اكثر ستحصل على نقاط اكثر وستكون الصعوبة حينها ان تتفادى الاصطدام بالذيل.
هناك العديد من اطوار اللعب - على سبيل المثال السرعة, حيث ان سرعة الافعى تزداد بازدياد عدد التفاحات التي تاكلها وهذا يجعل اللعبة اصعب فاصعب. ولكن ليس كل الاطوار كذلك هناك في طور اخر الجدار, وهناك طور يسمح لك بالنفاذ خلال الجدار والظهور من الجهة المقابلة بينما في غير طور ستخسر اللعبة اذا اصطدمت بالجدار.
في الاصدار الذي نعمل عليه, طور الجدار مفعل (ستموت اذا اصطدمت بالجدران), والسرعة ستزداد بالنمو الاسي كلما اكلت تفاحة وصولا الى نقطة معينة من السرعة.
ملخص
خلال المقالات القادمة, سنقوم بتنفيذ طور جميل من اللعبة (Snake) باستخدام WPF framework . سنبدأ بالخلفية (خلفية اللعبة) في المقال القادم, وفي الاخير سنحصل على لعبة متكاملة مبنية على WPF .
رجاءا انتبه, ان هذا الدرس هو خاص بـ WPF. سنحاتج لاحقا الى القليل من لغة سي شارب لتنفيذ قواعد اللعبة. وساشرح قدر المستطاع ما سنحتاجه من اللغة كلما احتجنا لذلك. وفي حال احتجت للمزيد حول سي شارب لا تنس اننا نملك درس سي شارب كامل in our network! ومناسب في شبكتنا.