البدائيات والمنطق

تقدم هذه المقالة بشكل أساسي مفاهيم متعلقة بالمحرر البدائي والعناصر البدائية في CraftLand.

نظرة عامة على Metablocks

عند تحرير الرسومات، علينا ملاحظة شكل كل كتلة رسومية. ما نحتاجه هو تجميع هذه الكتل معًا وفقًا لقواعد ثابتة.

العمليات الأساسية

قبل الدخول إلى المحرر الأساسي، يجب أولاً فتح سكربت. افتح CraftLand، وانقر على [المزيد] في الزاوية العلوية اليسرى، ثم انقر على [نص كتلة]. عند الدخول إلى المحرر الأساسي، سيتم فتح “النص العام” افتراضيًا.
صورة-20241031110011453

مقدمة الواجهة

بعد الدخول إلى محرر العناصر، هناك 4 مناطق في واجهة المحرر تستحق اهتمامنا، كما هو موضح في الشكل أدناه. SeaTalk_IMG_20241031_113903

الرقم التسلسلي الصورة الوصف
١ image-20241031114641450 يوجد مربع بحث في الزاوية العلوية اليسرى من الواجهة. نظرًا لوجود عدد كبير من الكتل الأولية، يُمكننا استرجاع الكتل الأولية التي نريدها بإدخال الكلمات الرئيسية في مربع البحث.
٢ image-20241031114811375 في الزاوية العلوية اليمنى من الواجهة، ستجد قائمة اختيار البرامج النصية. انقر على الأيقونة على اليمين لعرض قائمة منسدلة تعرض البرامج النصية المتاحة حاليًا. يتم إنشاء البرامج النصية العامة افتراضيًا.
٣ image-20241031173408111 نقسم العناصر الأساسية إلى ٦ فئات. يُمكنك النقر على أيقونة الفئة لتوسيع قائمة العناصر الأساسية.
٤ image-20241031114830172 الأيقونة على اليسار هي زر التراجع، الذي يُمكّنك من التراجع عن آخر عملية. الأيقونة على اليمين هي زر الإعادة، الذي يُمكّنك من إعادة آخر عملية تم التراجع عنها.

وضع العناصر البدائية

١. اسحب الكتلة: بعد فهم الواجهة، نفتح أولًا الفئة الأولى في الزاوية اليسرى السفلية، ونختار كتلةً بدائيةً منها ونسحبها إلى المساحة الفارغة كنقطة بداية لمنطقناimage-20241031171419878

٢. ربط الكتل: نختار كتلة ذات انخفاض في أعلاها من قائمة الكتل. عند سحبها إلى أسفل كتلة البداية، سيظهر موجه واجهة مستخدم أصفر اللون في الجزء العلوي أسفل كتلة البداية. عند رفع أصابعنا، سنجد أن الكتلتين ستُدمجان تلقائيًا. وهكذا نكون قد انتهينا من عملية بسيطة. image-20241031171627914

3. املأ البيانات: أولاً، نقوم بسحب البيانات الموجودة في الكتلة البدائية أو سحب نوع البيانات المناسب في القائمة البدائية.

صورة-20241031174335831

ثم اسحب كتلة البيانات إلى مساحة البيانات المقابلة. سيظهر مربع أصفر لواجهة المستخدم في مساحة البيانات، مما يشير إلى إمكانية وضع نوع الكتلة الحالي. عند رفع إصبعك، سيتم استيعاب كتلة البيانات تلقائيًا في المساحة. image-20241031175503431

ملاحظة: عندما يكون نوع البيانات المملوء غير متوافق مع نوع البيانات في المساحة، سيكون لدى المحرر مطالبة واضحة وسيظهر تلقائيًا كتلة البيانات التي لا تتطابق مع النوع.

صورة-20241031183111256

4. تفكيك الكتل عندما نقوم بتحريك أحد الكتل الرسومية المتعددة المتصلة ببعضها البعض، سيتم إزالة جميع الكتل المتصلة أسفلها معًا.

image-20241031182555866

٥. حذف الكتل: عند الضغط باستمرار على أي كتلة رسومية، ستظهر “سلة المهملات” على يمين الواجهة. يمكننا حذف الكتلة الرسومية بنقلها إلى سلة المهملات.

صورة-20241031182311721

بالطبع، يمكننا أيضًا سحب كتل متعددة إلى “سلة المهملات” لحذف كتل متعددة في نفس الوقت.

صورة-20241031183322347

شكل

وصف الكتلة الرمز
فقط الكتلة المرتفعة أدناه هي نقطة البداية للمنطق. image-20241030185836296
عادةً ما تكون الكتلة ذات الجزء العلوي الغارق فقط هي نقطة النهاية للمنطق. image-20241030185844004
إذا لم يكن هناك انخفاض في الأعلى ولا بروز في الأسفل، فهذا يعني أن هذه الكتلة هي قطعة من البيانات، والتي يمكن تطبيقها على كتل أخرى كمعامل في بعض العمليات المنطقية. image-20241030185856813
إذا كانت كتلة ذات قمة مرتفعة وقاع غائر، فهذا يعني أنه يمكن ربطها بكتل أخرى ذات قيعان مرتفعة، ويمكن ربطها أيضًا بكتل أخرى أسفلها. يمكن أن تكون عقدة منطقية. image-20241031101239718
في تصنيف الكتل، نجد كتلة ذات شكل خاص. هذه الكتلة الخاصة عبارة عن تعبير شرطي، مقسم إلى محدبات خارجية ومساحات مقعرة، ومحدبات داخلية ومساحات مقعرة. يمكننا ربط كتل أخرى بشكل طبيعي على المحدبات الخارجية والمساحات المقعرة لكتلة التعبير الشرطي، كما هو الحال مع ربط كتل أخرى، أو يمكننا ربط كتل داخل التعبير الشرطي، ويجب أن يستوفي المنطق المكتوب داخله منطقًا شرطيًا معينًا قبل حسابه. image-20241031101800841

التصنيف

من أجل العثور على الكتل المطلوبة بكفاءة أكبر في المحرر البدائي، نقوم بتقسيم الكتل إلى 7 أنواع.

كما هو موضح في الشكل التالي:

النوع الرسم التخطيطي نظرة عامة
حادثة SeaTalk_IMG_20241030_143100 نوع الحدث: عمومًا، عند كتابة المنطق البدائي، كنقطة زمنية لبدء العملية، يجب أولًا تحديد النقطة الزمنية التي نريد تفعيل هذا المنطق عندها. على سبيل المثال، عند إحياء اللاعب، نريد إعطائه سلاحًا، أو عند بدء الجولة، نريد وضع صندوق إمدادات جوي في وسط الخريطة. عندها، تكون “عند إحياء اللاعب” و"عند بدء الجولة" هما عقدتا الوقت اللازمتان لهذا المنطق.
كيان SeaTalk_IMG_20241030_143101 نوع الكيان: مفهوم مهم في CraftLand (انظر “المفاهيم المهمة” للمزيد من التفاصيل). أثناء عملية التحرير البدائي، غالبًا ما نستدعي خصائص الكيان أو نغيرها.
لعبة SeaTalk_IMG_20241030_143105 نوع اللعبة: في نوع اللعبة، نوفر العديد من الوظائف الشائعة لمنشئي شخصيات اللعبة. هذه الوظائف عادةً ما تكون إعدادات تحتاج إلى تعديل في بعض الألعاب. كما أن هذه الوظائف مرتبطة ارتباطًا وثيقًا بأسلوب اللعب، مثل إنشاء وحش، أو تغيير صندوق السماء، أو الانضمام إلى قناة صوتية.
بيانات SeaTalk_IMG_20241030_143106 نوع البيانات: يمكن أن تكون كتل البيانات معلمات مطلوبة لمعظم العمليات المنطقية. يمكن أن تكون جزءًا من البيانات يُستخدم في كتل أخرى، أو جزءًا من عملية لحساب قيمة.
المنطق SeaTalk_IMG_20241030_143109 نوع المنطق: في نوع المنطق، نوفر العديد من العمليات المنطقية المعقدة. يُستخدم هذا النوع من العمليات المنطقية غالبًا عند معالجة البيانات. يمكنه التصفية أو الحكم أو اتخاذ القرارات بناءً على شروط محددة. على سبيل المثال، تحديد ما إذا كان رقم أكبر من رقم آخر، ثم اتخاذ إجراءات مختلفة.
متغير SeaTalk_IMG_20241030_143111 نوع المتغير: في هذا النوع، يمكننا إنشاء متغيرات بأنفسنا. المتغيرات التي تُنشأ بهذه الطريقة هي متغيرات نصوص برمجية، تُستخدم لمعالجة بيانات النصوص البرمجية الحالية. في نصوص برمجية أخرى، يمكن الحصول على المتغيرات وتعيينها من خلال مرجع خارجي.
دالة SeaTalk_IMG_20241030_143113 نوع الدالة: في نوع الدالة، يمكنك إنشاء أحداث مخصصة. هذه الأحداث المخصصة التي ننشئها تغلف جزءًا من المنطق، مما يجعل المنطق أوضح وأسهل فهمًا وصيانة.

وصف كتلة العنصر المنطقي

اسم كتلة مخطط وصف
العبارات الشرطية (جملة if) image-20241104111959461 إذا تم استيفاء الشرط، سيتم تنفيذ العقدة الموجودة تحت IF.
جمل شرطية…else(if…else statement) image-20241104112010284 في حال استيفاء الشرط، سيتم تنفيذ العقدة تحت IF. في حال عدم استيفاء الشرط، سيتم تنفيذ العقدة تحت ELSE.
حلقة شرطية (عبارة while) image-20241104112023063 طالما تم استيفاء الشرط، سيتم تشغيل العقد أدناه في حلقة.
حلقة غضب عدد صحيح (لبيان الفهرس) image-20241104112033968 يبدأ المعامل i من الحد الأدنى للقيمة، وفي كل مرة يتم فيها تشغيل العقدة السفلية، يزيد i من قيمة الخطوة حتى يصبح i أكبر من أو يساوي الحد الأقصى للقيمة.
قم بتكرار كل عنصر (لكل عبارة) image-20241104112043683 لكل مفتاح في قائمة/قاموس المعلمات، قم بتنفيذ العقدة أدناه مرة واحدة.
تحقق من القيمة الفارغة image-20241104112050652 تحقق مما إذا كانت القيمة الفارغة هي القيمة الفارغة وقم بمعالجة القيمة الفارغة بشكل مناسب لتجنب الأخطاء.
انتقل إلى التالي image-20241104112056253 تخطى هذه الحلقة وادخل الحلقة التالية من نص الحلقة.
كسر الحلقة image-20241104112103316 كسر الحلقة ومواصلة تنفيذ العقدة بعد نص الحلقة.

##ما هو ECA؟

في سياق الكود، يشير ECA (الحدث-الشرط-الإجراء) عادةً إلى طريقة تمثيل القاعدة.

أولاً: المكونات

  1. الحدث

موقف أو واقعة محددة تُفعّل تنفيذ قاعدة. على سبيل المثال، دخول لاعب إلى اللعبة، أو تسببه في قتل لاعب، أو مغادرته.

مثال: تسبب اللاعب في قتل أحد اللاعبين، وبعد تفعيل هذا الحدث، حصل اللاعب على 100 قطعة ذهبية

SeaTalk_IMG_20241101_114133

  1. الحالة
  • تعبير منطقي يحدد ما إذا كان سيتم تنفيذ إجراءات لاحقة بعد وقوع حدث ما. لن يتم تنفيذ الإجراء المقابل إلا إذا تحقق الشرط. على سبيل المثال، إذا كان عدد الزومبي أقل من 10، أنشئ زومبي، وإذا كان عدد اللاعبين يساوي 1، احصل على مدفع جاتلينج، أو إذا كانت إحداثيات اللاعب مساوية لقيمة معينة، انقل اللاعب إلى إحداثيات أخرى.

مثال: عندما ينضم لاعب إلى اللعبة ويشغل الميكروفون، سيصبح اسمه "لدي ميكروفون"SeaTalk_IMG_20241101_143623

  1. العمل

إذا وقع الحدث واستُوفيت الشروط، فسيتم تنفيذ الإجراء المحدد. قد يكون هذا تعديل بيانات، أو استدعاء دالة، أو إرسال رسالة، أو تشغيل حدث آخر، وما إلى ذلك.

مثال: أعط اللاعب بندقية AK47 في بداية الجولة واضبط صحة اللاعب على 500

SeaTalk_IMG_20241101_145943

مفاهيم مهمة في ECA

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

الأحداث المخصصة والمتغيرات المخصصة

أحداث مخصصة

في الزاوية السفلية اليسرى من محرر العناصر، نجد سبعة أنواع من قوائم العناصر. في خانة نوع الدالة، انقر على [إنشاء دالة] لإنشاء حدث مخصصSeaTalk_IMG_20241101_150402

SeaTalk_IMG_20241101_150359

نظرة عامة على واجهة الحدث المخصص

الرقم التسلسلي الصورة الوصف
1 image-20241101151951739 هنا يمكننا ملء اسم الحدث المخصص
٢ image-20241101151917848 انقر على علامة الجمع لإضافة مُعامل داخلي إلى الحدث المُخصص. لا يُمكن استخدام هذا المُعامل إلا في الحدث المُخصص الذي ينتمي إليه.
٣ image-20241101151927435 انقر على علامة الجمع في الزاوية اليمنى السفلية لإضافة قيمة إرجاع إلى حدثنا المخصص. عند استدعاء هذا الحدث باستخدام منطق خوارزمية آخر، نحصل على البيانات المطلوبة.

وصف الحدث المخصص

عند تحرير العناصر الأولية، سندمج عدة كتل أولية في حدث مخصص. يمكننا أيضًا القول إننا نغلف عدة عمليات حسابية في طريقة واحدة. هناك العديد من المزايا للقيام بذلك:

1. التسمية الواضحة: باستخدام الأحداث المُغلَّفة، لا نحتاج إلى قراءة منطق الكتلة البدائية المعقدة، يمكننا فهم نية منطق الحدث بالكامل بمجرد التسمية

2. تبسيط البنية البدائية: إن تغليف الحسابات المعقدة في أحداث مخصصة يمكن أن يجعل منطق البنية الرئيسية أكثر إيجازًا ووضوحًا، ويقلل من تعقيد البنية البدائية، ويحسن قابلية القراءة.

٢. إعادة الاستخدام: عندما تتطلب عدة كتل منطقية رسومية نفس العملية، يمكنك إعادة استخدام الحدث المخصص المُغلّف لتجنب تكرار كتابة نفس الكود المنطقي. ليس هذا فحسب، بل عند تعديل هذا الحدث المخصص وصيانته، يمكننا أيضًا تعديل عدة كتل منطقية رسومية تُعيد استخدام الحدث المخصص في نفس الوقت لتجنب تكرار تعديل نفس الكود في أماكن متعددة.

المتغيرات المخصصة

نظرة عامة على واجهة المتغيرات المخصصة

في قائمة أنواع العناصر، حدد نوع [VARIABLE]، ثم انقر على [CREATE VARIABLE] لإنشاء متغير مخصصimage-20241101162644288

عند إنشاء متغير مخصص، يمكننا تعيين اسم المتغير ونوع بيانات المتغير

صورة-20241101162620704

وصف المتغير المخصص

عند كتابة المنطق الرسومي، قد نحتاج أحيانًا إلى تعريف متغيرات معلمات لأنواع البيانات وفقًا لاحتياجات محددة. تُلبّي دالة المتغير المخصص هذه الحاجة.

يمكن أيضًا استخدام المتغيرات التي تُنشئها لتمرير البيانات بين طرق مختلفة. بتخزين البيانات في متغير، يمكنك تمريرها كمعامل إلى طريقة أخرى أو إرجاعها من طريقة إلى المُستدعي.

مثال على حدث/متغير مخصص

سنقوم بإنشاء منطق لإظهار كيفية استخدام الأحداث المخصصة والمتغيرات المخصصة في المحرر البدائي

مثال على المنطق: عندما يقتل لاعب شخصًا ما، سيتم تقليل حد صحة اللاعب بمقدار 10 نقاط، وسيتم تقليل الحد الأدنى إلى 20.

١. أولًا، أنشئنا متغيرًا مخصصًا باسم “CurrentMaxHp” وعيّننا نوع البيانات إلى “int”. وفي الوقت نفسه، أنشئنا حدثًا مخصصًا باسم “DecreaseMaxHp” كتحضير أوليSeaTalk_IMG_20241101_175037

SeaTalk_IMG_20241101_175059

٢. ابحث عن حدث “عندما يُسبب اللاعب عملية قتل” واسحبه، ثم اربطه بالحدث المُخصص “DecreaseMaxHp” الذي أنشأناه للتو. بعد الربط، نكون قد أكملنا الأساس المنطقي لتقليل حد صحة اللاعب عند قتله! !!SeaTalk_IMG_20241101_183151

٣. بعد إكمال المنطق الأساسي، يمكننا البدء بكتابة البنية الأولية للحدث المخصص. أولًا، نُعيّن قيمة المتغير الذي أنشأناه للتوSeaTalk_IMG_20241101_183704

٤. بعد ذلك، اربط خوارزمية لضبط قيمة المتغير على -١٠ في كل مرة يتم فيها تشغيل حدثSeaTalk_IMG_20241101_183713

٥. تمت إضافة الحد الأدنى للصحة، مع إمكانية التحقق إذا كان الحد الحالي للصحة أقل من أو يساوي ٢٠، فإن الحد الحالي للصحة يساوي ٢٠SeaTalk_IMG_20241101_183808

٦. أعد تعيين المتغير المحسوب لخاصية حد حياة اللاعب. حتى الآن، أكملنا جميع العمليات المنطقية المطلوبة. SeaTalk_IMG_20241101_183902

٧. تحققSeaTalk_IMG_20241101_184513

تم تقليل حد الصحة بشكل صحيح وتم التحقق منه بشكل صحيح. image-20241101184737595