جدول المحتويات:

روابط من المتغيرات في البرمة مع مكعبات السكر: 10 خطوات
روابط من المتغيرات في البرمة مع مكعبات السكر: 10 خطوات

فيديو: روابط من المتغيرات في البرمة مع مكعبات السكر: 10 خطوات

فيديو: روابط من المتغيرات في البرمة مع مكعبات السكر: 10 خطوات
فيديو: مايا رجيل مادخلتش للحفلة تاع طارق العربي 🥹 2024, يوليو
Anonim
روابط من المتغيرات في البرمة مع مكعبات السكر
روابط من المتغيرات في البرمة مع مكعبات السكر

أنا سعيد للغاية لأنك انضممت إلي مرة أخرى! هذا يعني أن Wumpus لم يأكلك بعد. حسن!

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

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

الخطوة 1: قم بإنشاء المشغل الخاص بك

قم بإنشاء المشغل الخاص بك
قم بإنشاء المشغل الخاص بك

هذه الخطوة بسيطة للغاية. في الأساس ، أنا فقط أستخدم نفس الكود مثل wumpus $ الخاص بي ، ولكن مع متغير $ player بدلاً من ذلك.

الخطوة 2: رمز غرفة جديد

رمز غرفة جديد
رمز غرفة جديد

تم تغيير رمز الغرفة العام بحيث تكون قيمة $ player هي الغرفة الحالية. ثم قارن بين $ wumpus و $ player بدلاً من الغرفة الحالية.

هذا تغيير بسيط ، وليس ضروريًا تمامًا ، لكني أحب أن أبقي الكود منظمًا.

الخطوة 3: إنشاء ارتباط من متغير

إنشاء ارتباط من متغير
إنشاء ارتباط من متغير

أخيرًا ، أريد استبدال الرابط الموجود في غرفة البداية بواحد يتغير بناءً على قيمة $ player. يمكن عمل ذلك باستخدام الوظيفة "" في Sugarcube. يمكنك قراءة المزيد عن ذلك في صفحة وثائق Sugarcube.

السلسلة الأولى بعد أمرنا هي العبارة التي ستظهر في مقطعنا. والثاني هو اسم المقطع الذي نريد الارتباط به. أنا أستخدم "Hunt the Wumpus!" كعبارة ، ولكن يمكننا استخدام متغيرنا هناك بدلاً من ذلك إذا أردنا أن يعرف اللاعب إلى أين يتجه مسبقًا ، مثل هذا:

الخطوة 4: الاختبار

اختبار
اختبار
اختبار
اختبار

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

لسوء الحظ ، يمكن أن يأخذك هذا مباشرة إلى غرفة Wumpus! لا يهم هذا كثيرًا في الوقت الحالي ، ولكن في لعبة حقيقية قد تنتهي اللعبة على الفور. نحن بحاجة إلى إصلاح ذلك.

الخطوة 5: أضف قائمة الغرف

أضف قائمة الغرف
أضف قائمة الغرف

أولاً ، سننشئ قائمة غرف ، لتسهيل إدارة الغرف. بالتصريح عن هذه المصفوفة ، يمكننا استخدامها لتعيين قيم $ player و $ wumpus دون تكرار الكود. كما أن لديها ميزة أخرى سنستكشفها بعد ذلك.

يجب أن يتصرف الاختبار باستخدام هذا الرمز تمامًا كما كان من قبل.

الخطوة 6: حذف الغرف

القضاء على الغرف
القضاء على الغرف

لقد أضفت سطرًا واحدًا من التعليمات البرمجية إلى الشفرة من قبل (مظلل).

تحتوي المصفوفات في Sugarcube على وظيفة مضمنة تتيح لك حذف العناصر منها بالاسم. في هذه الحالة ، بمجرد تخصيص غرفة لـ $ wumpus ، يمكننا حذف هذه الغرفة من قائمة الغرف الخاصة بنا. هذه الوظيفة صعبة ، مع ذلك. لن يعمل ما لم يتم تعيين ناتج الوظيفة أو استخدامه بطريقة ما. للعناية بذلك ، قمت بإنشاء المتغير المؤقت _temp.

في Sugarcube ، تبدأ المتغيرات المؤقتة بشرطة سفلية (_) بدلاً من دولار ($). إنها مفيدة لأنه يتم حذفها بمجرد تشغيل المقطع ، لذلك لا داعي للقلق بشأن تداخل أسماء المتغيرات.

أنا أحذف غرفة اللاعب $ من قائمة الغرفة $ أيضًا ، فقط بالطبع.

الخطوة 7: الاختبار

اختبارات
اختبارات
اختبارات
اختبارات

بينما يمكننا تشغيل الكود كما هو الآن ، لن يكون ذلك اختبارًا شاملاً للغاية. إذا قمنا بتشغيل الكود ووجدنا أن $ player و $ wumpus مخصصان لغرف مختلفة ، فإننا لا نعرف ما إذا كان ذلك بسبب عمل الكود أم أنه مجرد صدفة. بالتأكيد ، يمكننا تشغيل الكود عدة مرات ، ونفترض أنه إذا لم يخصص لهما نفس الغرفة أبدًا ، فلن يحدث ذلك أبدًا ، لكن هذا سيستغرق إلى الأبد ولا يزال غير مضمون بنسبة 100٪ أنه لن يحدث أبدًا.

بدلاً من ذلك ، نحن بحاجة إلى طريقة للتحقق.

لقد أضفت ثلاثة أسطر إلى الجزء العلوي من مقطع المقدمة لدينا والتي ستتيح لنا رؤية قيم المتغيرات $ wumpus و $ player و $ roomlist. نظرًا للطريقة التي أعددنا بها الكود الخاص بنا ، فإننا نعلم أنه يجب حذف غرفة Wumpus $ وغرفة اللاعب $ من قائمة الغرفة $.

عندما نقوم بتشغيل هذا الرمز ، يمكننا التحقق للتأكد من أن هذا هو الحال.

الخطوة 8: الشذوذ مع مكعبات السكر والأشياء

الشذوذ مع مكعبات السكر والأشياء
الشذوذ مع مكعبات السكر والأشياء
الشذوذ مع مكعبات السكر والأشياء
الشذوذ مع مكعبات السكر والأشياء
الشذوذ مع مكعبات السكر والأشياء
الشذوذ مع مكعبات السكر والأشياء

كائنات مكعبات السكر غريبة بعض الشيء. اسمحوا لي أن أوضح هذا.

أثناء قيامي ببناء هذا المشروع في الأصل ، أردت حفظ قائمة غرفتي $ في متغير حفظ $ قبل أن أبدأ في حذف الغرف منه. كنت أحسب أنه سيكون مفيدًا لاحقًا.

عندما حصلت على سلوك غريب من هذا الرمز ، أضفت سطرًا آخر إلى صفحة المقدمة للسماح لي بإلقاء نظرة على متغير Saveroom الخاص بي (الصورة الثانية).

لقد صدمت عندما اكتشفت أن العناصر التي قمت بحذفها من قائمة الغرف $ قد تم حذفها أيضًا من القائمة المحفوظة! يمكنك أن ترى هذا في العمل في الصورة الثالثة.

هذا لأنه عندما تنسخ مصفوفة مثل هذه ، فأنت لا تخبر Twine فعليًا بنسخ المصفوفة ، فأنت تخبر Twine أن هذين المتغيرين هما نفس المصفوفة. عندما تفعل شيئًا للمصفوفة باستخدام متغير واحد ، فإنه يغير نفس المصفوفة التي يبحث عنها المتغير الآخر!

يمكننا إصلاح هذا باستخدام وظيفة clone ().

الخطوة 9: وظيفة Clone ()

وظيفة () الاستنساخ
وظيفة () الاستنساخ
وظيفة () الاستنساخ
وظيفة () الاستنساخ

يمكنك أن تقرأ عن وظيفة clone () في صفحة توثيق Sugarcube.

النسخة "السطحية" هي ما كنا نفعله من قبل. بدلاً من عمل نسخة كاملة من المصفوفة بأكملها ، يفترض فقط أن المتغير الخاص بك يعمل مع نفس المصفوفة. بدلاً من نسخة ضحلة ، يقوم clone () بعمل نسخة "عميقة" ، والتي تتصرف كما تتوقع. يتم نسخ كل عنصر من عناصر المصفوفة إلى مصفوفة جديدة ، وهو منفصل تمامًا عن الأصل.

إذا اختبرنا هذا الرمز الجديد ، فسنجد أنه يعمل كما هو متوقع.

بالطبع ، لا يهم ما إذا كنت تحتفظ بقائمة غرف $ أم لا. لأغراض مشروعي ، لن أفعل ذلك. كان هذا فقط لإظهار النسخ العميقة مقابل النسخ الضحلة.

الخطوة 10: هذا كل شيء الآن

هذا كل شيء في الوقت الراهن!
هذا كل شيء في الوقت الراهن!

لقد أضفنا رمزًا يسمح للاعبنا بالبدء في غرفة عشوائية. بالإضافة إلى ذلك ، فقد أزلنا الخلل حيث سيبدأ اللاعب في نفس الغرفة مثل Wumpus.

لقد تعلمنا كيفية إنشاء روابط من المتغيرات ، وكيف يتم معالجة نسخ المصفوفة بواسطة Sugarcube.

الأمور آخذة في الازدياد ، لكننا ما زلنا في البداية!

صيد سعيد!

موصى به: