أثناء إنشائك للعبة بسيطة بواسطة لغة البرمجة أكشن سكربت 3 (AS3)، ستجد أنك قادر على استخدام مجموعة مختلفة من بنية/ هيكل الأكواد. يوجد ثلاثة أجزاء رئيسية في أي كود للأكشن سكربت 3:  		 المتغيرات (Variables): وهي المستخدمة في تخزين بياناتك. يمكن أن تكون البيانات على هيئة أرقام (Numbers) أو كلمات (سلاسل - strings) وكائنات (Objects) وغيرها الكثير. يتم تعريف المتغيرات بواسطة الرمز الكودي var ويجب أن تكون تسميتها عبارة عن كلمة واحدة.    var playerHealth:Number = 100;  // "var" تشير إلى أنك تقوم بتعريف مُتغير // "playerHealth" هو اسم المتغير (صحة اللاعب). لاحظ عدم وجود مسافات بين الكلمتين بالإنجليزية. // "Number" هو نوع البيانات المخزنة في المُتغير؛ أي أنها أرقام // "100" هي القيمة الأولية المُعطاة لهذا المتغير. // يجب أن ينتهي كل سطر في اللغة البرمجية أكشن سكربت بالرمز ";"    مُعالجات الأحداث (Event Handlers): تبحث هذه المعالجات عن حدوث أشياء معينة، وبمجرد حدوثها تخبر بقية أجزاء البرنامج أو اللعبة بذلك. هذا النوع من الكود بالغ الأهمية للتفاهم مع مُدخلات اللاعب وعملية تكرار الكود البرمجي. عادة ما توجه مُعالجات الأحداث الأمر إلى الدوال الوظيفية (Functions).    addEventListener(MouseEvent.CLICK, swingSword);  // "addEventListener()" هو الكود المُعرف لإنشاء المعالج للأحداث // "MouseEvent" هي تصنيف المُدخلات الذي يتم الإنصات  // له واتباع أوامره "الفأرة في هذه الحالة". // ".CLICK" ويقصد به النقر بالفأرة؛ أي الحدث المحدد من داخل // تصنيف حوادث الفأرة (MouseEvent) // "swingSword" هي الدالة التي يتم مناداتها وتنفيذها في حالة  // حدوث أمر الإدخال الخاصة بذلك "الحدث"،  // ويشير الاسم هنا إلى عملية أرجحة السيف.    الدوال (Functions): وهي الأقسام من الكود المخصصة لكلمة مفتاحية يمكنك استدعائها في وقت لاحق لتنفيذ وظيفة معينة. تؤدي الدوال دورًا كبيرًا على مدار عملية كتابة كود البرمجة الضخم الخاص باللعبة ويمكن أن تحتوي الألعاب المعقدة على مئات الدوال كأقل تقدير. في المقابل، لا تحتاج الألعاب البسيطة إلا إلى عدد بسيط من الدوال. يمكن إدراج الدوال بأي ترتيب في كود اللعبة، فهي في النهاية لن تعمل إلا عندما يتم استدعائها وفق الترتيب المنطقي الذي تختاره لمسار اللعبة.    function swingSword (e:MouseEvent):void; { 	//اكتب الكود الخاص بهذه الدالة هنا بين القوسين }  // "function" هي كلمة التعريف التي تُكتب في أول كتابتك // للكود الخاص بأي دالة ترغب في إضافتها إلى اللعبة.  // "swingSword" هو اسم الدالة ويشير إلى أنها الدالة الخاصة // بعملية أرجحة السيف. // "e:MouseEvent" وهو معامل مُضاف يشير إلى أن الدالة // يتم استدعائها من خلال عملية الإنصات (اتباع أمر) حدث معين. // ":void" هي القيمة التي يتم إرجاعها بواسطة الدالة.  // في حالة لم توجد قيمة مُرجعة يتم إعادتها بواسطة  // الدالة، فاستخدم :void. تستخدم لغة أكشن سكربت في إحداث تغييرات على الكائنات في برنامج الفلاش. تحتاج إلى إنشاء كائنات بداخل اللعبة يقدر اللاعب على التفاعل معها، وإلا فما فائدة اللعبة من الأساس!؟ قد تجد في بعض الدروس التعليمية أنه يتم الإشارة إلى الكائنات بمصطلحات أخرى، مثل: أشباح (sprites) أو الممثلون (Actors) أو مقاطع الفيلم (Movie Clips). يمكن أن يكون الكائن أي شكل تريده، وله عملية تصميم خاصة به، لكننا في هذا الدليل المبسط سوف ننشئ كائن على شكل مستطيل.  		 افتح برنامج "فلاش بروفيشنال" أو "أدوبي أنيمات" إذا كان غير مُشغل على جهازك بعد. أنشئ مشروع أكشن سكربت 3 جديد من خلال قائمة جديد في البرنامج.  انقر على أداة رسم المستطيلات من خلال لوحة الأدوات. يختلف مكان تلك اللوحة بناءً على إعدادات التهيئة الخاصة بالبرنامج، لكنك ستقدر على الوصول إليه بسهولة على الأغلب. ارسم شكل مستطيل بواسطة تلك الأداة في نافذة المشهد (Scene Window).   حدد ذلك المستطيل بواسطة أداة التحديد. تأكد من تحديد الكائن (شكل المستطيل في هذه الحالة) الذي رسمته للتو، ثم افتح قائمة "التعديل" (Modify) واختر "التحويل إلى رمز". يمكنك بدلًا من ذلك أن تضغط على اختصار F8 من لوحة المفاتيح. في نافذة "التحويل إلى رمز"، يمكنك أن تمنح الكائن اسمًا مميزًا يسهل من عملية التعرف على الغرض من ذلك الكائن، كأن تُسميه "enemy" أي العدو في اللعبة.  		 استخدم نافذة الخصائص. في أعلى النافذة، سوف تجد حقل نصي فارغ تحت تسمية اسم المثيل "Instance name"، وهي التسمية التي تظهر عندما تتحرك بمؤشر الفأرة فوق الحقل النصي الفارغ. تأكد من تسمية هذا المثيل بنفس الاسم الذي اخترته لاسم الكائن بعدما حولته إلى رمز (enemy). لقد أنشأت بهذه الطريقة اسمًا مميزًا للكائن يمكن التفاعل معه عبر أكواد أكشن سكربت 3.  يكون كل مثيل (Instance) بمثابة الكائن المنفصل الذي يمكن التأثير عليه بواسطة الكود؛ أو بتعريف آخر، المثيل هو الحضور الملموس بداخل البرنامج أو اللعبة للكائن. يمكنك أن تنسخ المثيل المُنشئ بالفعل عدة مرات عن طريق الضغط على تبويب المكتبة (Library) وسحب ذلك المثيل إلى نافذة المشهد. في كل مرة تضيف فيها مثيل جديد، سوف يتم تغيير الاسم لتمييز أنه كائن مشابه لكن منفصل عن سابقيه، كأن يكون مثلًا: ("enemy" و "enemy1" و "enemy2"... إلى آخره).  في كل مرة تحتاج فيها إلى الإشارة إلى ذلك الكائن في كود اللعبة، يمكنك ببساطة أن تستخدم اسم المثيل، وفي هذه الحالة هو "enemy". بعد أن قمنا بعمل المثيل في الخطوات السابقة، يمكنك الآن أن تتحكم في تغيير خصائصه عن طريق برمجة أكشن سكربت 3. يُمكنِّك ذلك من تحريك الكائن حول الشاشة وتغيير حجمه وغير ذلك. يمكنك تغيير تلك الخصائص عن طريق كتابة اسم المثيل متبوعًا بنقطة "." ثم أتبعها بالخاصية ثم القيمة، كما سيلي شرحه فيما يلي:  		  enemy.x = 150; يؤثر ذلك على موقع كائن العدو (enemy) على المحور السيني "إكس".   enemy.y = 150; يؤثر ذلك على موقع كائن العدو (enemy) على المحور الصادي "واي". يتم قياس ذلك المحور من أعلى نافذة المشهد.   enemy.rotation = 45; يتم تدوير كائن العدو (enemy) 45 درجة في اتجاه عقارب الساعة.  enemy.scaleX = 3; يتم تمديد عرض كائن العدو (enemy) مضروبًا في 3. ينتج عن كتابة رقم سالب (-) انكماش الكائن.   enemy.scaleY = 0.5; يضغط طول الكائن إلى نصفه. يؤدي هذا الأمر إلى إرجاع القيمة الحالية لكائن معين، وهي عملية مهمة ومفيدة لتحديد ما إذا كان كل شيء في اللعبة يسير على نحو صحيح أم لا. قد لا تكون مضطرًا لإدراج أمر التتبع في الكود النهائي للعبة، لكنه يظل خيارًا متاحًا بالغ الفائدة في عمليات اكتشاف الأخطاء وتصحيحها. الآن أصبحت على معرفة مبدئية لا بأس بها بالدوال الأساسية المستخدمة في صناعة الألعاب. يمكنك أن تستفيد من ذلك في عمل لعبة فلاش بسيطة يتم فيها تغيير حجم الكائن العدو (enemy) في كل مرة تضغط عليه فيها، إلا أن تُنتهك قواه ويفقد صحته نهائيًا.   var enemyHP:Number = 100;  // يتم تعيين صحة كائن العدو على هيئة متغير بقيمة 100 في البداية.  // إتش بي هو اختصار للصحة في كتابة أكواد الألعاب. var playerAttack:Number = 10;  // يتم تعيين متغير يحدد قوة هجوم اللاعب عندما  // يضغط على (يهاجم) كائن العدو. enemy.addEventListener(MouseEvent.CLICK, attackEnemy);  // من خلال إضافة تلك الدالة مباشرة إلى كائن العدو في اللعبة، // يتم تفعيل الدالة فقط بالضغط على الكائن نفسه فقطـ // وليس في أي مكان آخر في الشاشة.  setEnemyLocation();  // يتم استدعاء الدالة التالية للتحكم في مكان وحركة كائن العدو // على الشاشة. يتم تطبيق الدالة عندما تبدأ اللعبة function setEnemyLocation ():void {  enemy.x = 200;   // حرك كائن العدو بمقدار 200 بكسل من يسار الشاشة.   enemy.y = 150;   // حرك كائن العدو للأسفل بمقدار 150 بكسل من أعلى الشاشة.   enemy.rotation = 45;   // قم بعملية تدوير للكائن العدو بمقدار 45 درجة في اتجاه عقارب الساعة.   trace("enemy's x-value is", enemy.x, "and enemy's y-value is", enemy.y);   // يعرض لك الموقع الحالي لكائن العدو لاستخدامه في عمليات تصحيح الخطأ.  }   function attackEnemy (e:MouseEvent):void  // يُنشئ ذلك دالة "الهجوم" التي يتم تفعيلها عندما يتم الضغط على كائن العدو.  {  enemyHP = enemyHP - playerAttack;   // اطرح قيمة الهجوم من قيمة صحة كائن العدو  // لينتج عن ذلك قيمة صحة جديدة لكائن العدو  enemy.scaleX = enemyHP / 100;   // غيّر عرض كائن العدو بناءً على قيمة متغير "الصحة" الجديد  // يتم قسمته على 100 لإعادة قيمته إلى عدد عشري.   enemy.scaleY = enemyHP / 100;   // غيّر طول كائن العدو بناءً على قيمة متغير "الصحة" الجديد   trace("The enemy has", enemyHP, "HP left");   //تتبع واستخرج مقدار صحة الكائن الباقية } ما أن تنتهي من عملية إعداد الكود الخاص باللعبة، يمكنك الآن أن تجرب تشغيل اللعبة. انقر على قائمة التحكم (Control) واختر "اختبار الفيلم" (Test Movie). سوف يبدأ تشغيل اللعبة ويمكنك ان تضغط على كائن العدو لتغيير حجم اللعبة. سوف تظهر مُخرجات التتبع من خلال نافذة "المُخرجات" (Outputs).
Understand the basic building blocks of AS3 code. Create an object. Assign properties to the object. Learn how you can change the properties of an instance. Examine the trace() command. Build a basic game using the above information. Try it out.