فهرست مطالب:

پیوندهای متغیرهای Twine With Sugarcube: 10 مرحله
پیوندهای متغیرهای Twine With Sugarcube: 10 مرحله

تصویری: پیوندهای متغیرهای Twine With Sugarcube: 10 مرحله

تصویری: پیوندهای متغیرهای Twine With Sugarcube: 10 مرحله
تصویری: 50 مبتکرانه ترین حمل و نقل شخصی 2021 - 2022 2024, سپتامبر
Anonim
پیوندها از متغیرهای Twine با Sugarcube
پیوندها از متغیرهای Twine با Sugarcube

خیلی خوشحالم که دوباره به من ملحق شدید! این بدان معناست که وومپوس هنوز شما را نخورده است. خوب!

برای کسانی از شما که آشنایی ندارید ، این مجموعه ای از آموزش هایی است که من برای کمک به پسرعموی شگفت انگیز من در پروژه ارشد خود تهیه می کنم. این آموزشها مرجع کارهایی هستند که می توانید با برخی از ویژگی های برنامه نویسی Twine و Sugarcube انجام دهید. اگر می خواهید ادامه دهید ، می توانید اولین آموزش را در اینجا پیدا کنید.

در آخرین آموزش ، من مجموعه کوچکی از اتاق ها را ساختم که بازیکن می تواند در آن کاوش کند. من یک شی Wumpus اضافه کردم و تعدادی کد اتاق عمومی برای تغییر آنچه که در هر اتاق نمایش داده می شد بسته به جایی که Wumpus است تغییر دادم.

مرحله 1: پخش کننده خود را ایجاد کنید

پخش کننده خود را ایجاد کنید
پخش کننده خود را ایجاد کنید

این مرحله بسیار ساده است. در اصل من فقط از کد مشابه wumpus $ خود استفاده می کنم ، اما در عوض از یک متغیر $ player استفاده می کنم.

مرحله 2: کد اتاق جدید

کد اتاق جدید
کد اتاق جدید

کد اتاق عمومی خود را تغییر دادید تا ارزش $ player اتاق فعلی باشد. سپس $ wumpus را به جای اتاق کنونی با $ player مقایسه کنید.

این یک تغییر جزئی است و کاملاً ضروری نیست ، اما من دوست دارم کد خود را منظم نگه دارم.

مرحله 3: ایجاد پیوند از یک متغیر

ایجاد پیوند از یک متغیر
ایجاد پیوند از یک متغیر

در نهایت ، می خواهم پیوندی را در اتاق شروع خود جایگزین کنم که بر اساس ارزش $ player تغییر می کند. این کار را می توان با عملکرد "" در Sugarcube انجام داد. می توانید در صفحه مستندات Sugarcube بیشتر در مورد آن بخوانید.

اولین رشته بعد از دستور ما عبارتی است که در قسمت ما ظاهر می شود. دوم نام قسمتی است که می خواهیم به آن پیوند دهیم. من از "Hunt the Wumpus!" استفاده می کنم. به عنوان عبارت من ، اما اگر بخواهیم بازیکن از قبل بداند کجا می رود ، می توانیم از متغیر خود در آنجا استفاده کنیم ، مانند این:

مرحله 4: آزمایش کنید

تست
تست
تست
تست

وقتی کد خود را آزمایش می کنید ، باید متوجه شوید که پیوند شما با هر عبارتی که قبلاً نوشته اید جایگزین شده است. با کلیک روی آن شما را به یک اتاق تصادفی در بازی خود می برد.

متأسفانه ، این می تواند شما را مستقیماً به اتاق Wumpus برساند! این در حال حاضر زیاد مهم نیست ، اما در یک بازی واقعی که یک بازی فوری به پایان می رسد. ما باید آن را برطرف کنیم.

مرحله 5: یک لیست اتاق اضافه کنید

اضافه کردن یک لیست اتاق
اضافه کردن یک لیست اتاق

اول ، ما قصد داریم یک لیست اتاق ایجاد کنیم تا مدیریت اتاق ها آسان تر شود. با اعلام این آرایه ، می توانیم از آن برای تعیین مقادیر $ player و $ wumpus خود بدون تکرار کد استفاده کنیم. این مزیت دیگری نیز دارد که در ادامه به بررسی آن می پردازیم.

آزمایش با این کد باید مانند قبل رفتار کند.

مرحله ششم: حذف اتاق ها

حذف اتاق ها
حذف اتاق ها

من یک خط کد را از قبل به کد اضافه کرده ام (برجسته شده).

آرایه ها در Sugarcube دارای یک عملکرد داخلی هستند که به شما امکان می دهد عناصر را با نام آنها حذف کنید. در این حالت ، هنگامی که یک اتاق را به $ wumpus اختصاص می دهیم ، می توانیم آن اتاق را از لیست اتاق $ خود حذف کنیم. با این حال ، این عملکرد مشکل است. کار نخواهد کرد مگر اینکه خروجی تابع اختصاص داده شود یا به نحوی مورد استفاده قرار گیرد. برای مراقبت از آن ، من متغیر موقتی _temp را ایجاد کرده ام.

در Sugarcube ، متغیرهای موقتی به جای یک دلار ($) با خط زیر (_) شروع می شوند. آنها مفید هستند زیرا با حذف گذرنامه حذف می شوند ، بنابراین لازم نیست نگران همپوشانی نام متغیرها باشید.

من اتاق پخش $ player را نیز از لیست اتاق $ حذف می کنم ، البته به طور طبیعی.

مرحله 7: آزمایش

آزمایش کردن
آزمایش کردن
آزمایش کردن
آزمایش کردن

در حالی که ما می توانیم کد را همانطور که در حال حاضر است اجرا کنیم ، این یک آزمایش بسیار دقیق نخواهد بود. اگر کد را اجرا کنیم و دریابیم که $ player و $ wumpus به اتاقهای مختلف اختصاص داده شده است ، نمی دانیم که این به این دلیل است که کد کار می کند ، یا فقط یک شانس است. مطمئناً ، ما می توانیم کد را بارها اجرا کنیم ، و فرض کنیم که اگر هیچ وقت به هر دو یک اتاق اختصاص ندهد ، اما این برای همیشه طول خواهد کشید و هنوز اطمینان 100٪ نیست که هرگز اتفاق نمی افتد.

در عوض ، ما نیاز به راهی برای بررسی داریم.

من سه خط به بالای قسمت معرفی خود اضافه کرده ام که به ما اجازه می دهد مقادیر متغیرهای $ wumpus ، $ player و $ roomlist ما را ببینیم. به دلیل نحوه تنظیم کد خود ، می دانیم که اتاق wumpus $ و اتاق پخش $ باید از لیست اتاق $ حذف شود.

هنگامی که این کد را اجرا می کنیم ، می توانیم بررسی کنیم که آیا چنین است.

مرحله 8: عجیب و غریب با Sugarcube و اشیاء

عجیب و غریب با Sugarcube و اشیاء
عجیب و غریب با Sugarcube و اشیاء
عجیب و غریب با Sugarcube و اشیاء
عجیب و غریب با Sugarcube و اشیاء
عجیب و غریب با Sugarcube و اشیاء
عجیب و غریب با Sugarcube و اشیاء

اشیاء نیشکر کمی عجیب هستند. بگذارید این را نشان دهم

در حالی که من در ابتدا این پروژه را می ساختم ، می خواستم قبل از شروع حذف اتاق ها از آن ، لیست اتاق $ خود را در متغیر $ saveroom ذخیره کنم. من فکر کردم بعداً مفید خواهد بود.

وقتی رفتار عجیبی از این کد دریافت کردم ، یک خط دیگر به صفحه معرفی خود اضافه کردم تا به من اجازه دهید متغیر $ saveroom خود را نگاه کنم (تصویر دوم).

وقتی متوجه شدم عناصری که از $ room room حذف کرده بودم از لیست ذخیره شده من نیز حذف شده بود ، شوکه شدم! شما می توانید این کار را در تصویر سوم مشاهده کنید.

این به این دلیل است که وقتی آرایه ای مانند این را کپی می کنید ، در واقع به Twine نمی گویید که آرایه را کپی کند ، بلکه به Twine می گویید که این دو متغیر یک آرایه هستند. وقتی کاری را در آرایه با استفاده از یک متغیر انجام می دهید ، همان آرایه ای را که متغیر دیگر در حال مشاهده آن است تغییر می دهد!

با تابع clone () می توانیم این مشکل را برطرف کنیم.

مرحله 9: تابع Clone ()

تابع Clone ()
تابع Clone ()
تابع Clone ()
تابع Clone ()

می توانید در مورد عملکرد clone () در صفحه مستندات Sugarcube مطالعه کنید.

یک نسخه "کم عمق" کاری است که قبلاً انجام می دادیم. به جای ایجاد یک کپی کامل از کل آرایه ، فقط فرض می شود که متغیر شما با همان آرایه کار می کند. به جای یک کپی کم عمق ، clone () یک کپی "عمیق" انجام می دهد ، که همانطور که انتظار دارید رفتار می کند. هر عنصر آرایه در یک آرایه جدید کپی شده و کاملاً از نسخه اصلی جدا است.

اگر این کد جدید را آزمایش کنیم ، متوجه می شویم که آنطور که انتظار می رود کار می کند.

البته ، مهم نیست که $ room room را نگه دارید یا نه. برای اهداف پروژه ام ، قصد ندارم. همه اینها فقط برای نشان دادن نسخه های عمیق در مقابل سطوح کم عمق بود.

مرحله 10: فعلا همین

فعلا همین!
فعلا همین!

ما کدی را اضافه کرده ایم که به بازیکن اجازه می دهد در یک اتاق تصادفی شروع به کار کند. علاوه بر این ، ما اشکالی را که بازیکن در همان اتاق Wumpus شروع می کند ، برطرف کرده ایم.

ما با نحوه ایجاد پیوند از متغیرها و نحوه برخورد کپی آرایه توسط Sugarcube آشنا شدیم.

اوضاع رو به افزایش است ، اما ما تازه شروع کرده ایم!

شکار مبارک!

توصیه شده: