Mündəricat:

Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar: 10 addım
Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar: 10 addım

Video: Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar: 10 addım

Video: Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar: 10 addım
Video: Polio vaccinations | Infectious diseases | NCLEX-RN | Khan Academy 2024, Iyul
Anonim
Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar
Sugarcube ilə İplikdəki Dəyişənlərdən Bağlantılar

Yenidən mənə qoşulduğunuz üçün çox şadam! Bu o deməkdir ki, Wumpus səni hələ yeməyib. Yaxşı!

Tanımayanlarınız üçün, bu, böyük layihəsi ilə mənim sevimli, səliqəsiz qaranlıq əmim oğluna kömək etmək üçün hazırladığım dərsliklər toplusudur. Bu dərsliklər, Twine və Sugarcube proqramlaşdırma xüsusiyyətlərindən bəziləri ilə edə biləcəyiniz bir işarədir. İzləmək istəyirsinizsə, ilk dərsliyi burada tapa bilərsiniz.

Son dərsdə, oyunçunun araşdıra biləcəyi kiçik bir otaq dəsti qurdum. Wumpus obyekti əlavə etdim və Wumpus -un harada olduğuna görə hər otaqda göstərilənləri dəyişdirmək üçün ümumi otaq kodu hazırladım.

Addım 1: Oyunçunuzu yaradın

Oyunçunuzu yaradın
Oyunçunuzu yaradın

Bu addım çox sadədir. Əslində mən sadəcə $ wumpus ilə eyni kodu istifadə edirəm, amma əvəzində bir $ player dəyişəniylə.

Addım 2: Yeni Otaq Kodu

Yeni Otaq Kodu
Yeni Otaq Kodu

Ümumi otaq kodunuzu dəyişdirdi, beləliklə $ playerin dəyəri cari otaqdır. Sonra $ wumpus -u indiki otaq əvəzinə $ player ilə müqayisə edin.

Bu kiçik bir dəyişiklikdir və tamamilə lazım deyil, amma kodumu nizamlı saxlamağı sevirəm.

Addım 3: Dəyişəndən bir əlaqə yaratmaq

Dəyişəndən bir əlaqə yaratmaq
Dəyişəndən bir əlaqə yaratmaq

Nəhayət, başlanğıc otağımdakı linki $ player dəyərindən asılı olaraq dəyişən birinə dəyişdirmək istəyirəm. Bu, Sugarcube -dəki "" funksiyası ilə edilə bilər. Bu barədə daha çox məlumatı Sugarcube -in sənədlər səhifəsində oxuya bilərsiniz.

Komandamızdan sonra ilk sətir, keçidimizdə görünəcək ifadədir. İkincisi, bağlamaq istədiyimiz keçidin adıdır. "Wumpus'u ovla!" İstifadə edirəm. ifadəm olaraq, ancaq oyunçunun hara getdiyini əvvəlcədən bilməsini istəsək, bunun əvəzinə orada dəyişənimizi istifadə edə bilərik:

Addım 4: Test edin

Test
Test
Test
Test

Kodunuzu sınayarkən, bağlantınızın əvvəllər yazdığınız hər hansı bir ifadə ilə əvəz olunduğunu görməlisiniz. Bunun üzərinə basmaq sizi oyununuzda təsadüfi bir otağa aparar.

Təəssüf ki, bu da sizi birbaşa Wumpus otağına apara bilər! Bu, indi o qədər də önəmli deyil, amma əsl oyunda ani bir oyun bitərdi. Bunu düzəltməliyik.

Addım 5: Otaq siyahısı əlavə edin

Otaq siyahısı əlavə edin
Otaq siyahısı əlavə edin

Əvvəlcə otaqların idarə olunmasını asanlaşdırmaq üçün bir otaq siyahısı yaradacağıq. Bu serialı elan edərək, kodu təkrarlamadan $ player və $ wumpus dəyərlərimizi təyin etmək üçün istifadə edə bilərik. Növbəti araşdıracağımız başqa bir üstünlük də var.

Bu kodla test etmək, əvvəllər olduğu kimi davranmalıdır.

Addım 6: Otaqların aradan qaldırılması

Otaqların aradan qaldırılması
Otaqların aradan qaldırılması

Əvvəlcədən koda tək bir kod xətti əlavə etdim (vurğulanmışdır).

Sugarcube-dakı massivlər, onlardan elementləri adla silmək imkanı verən daxili bir funksiyaya malikdir. Bu halda, $ wumpus bir otaq təyin etdikdən sonra həmin otağı $ roomlist -dən silə bilərik. Ancaq bu funksiya son dərəcə çətindir. Funksiyanın çıxışı bir şəkildə təyin edilmədikdə və ya istifadə edilmədikdə işləməyəcək. Bunun qayğısına qalmaq üçün müvəqqəti _temp dəyişənini yaratdım.

Sugarcube -də müvəqqəti dəyişənlər bir dollar ($) əvəzinə alt xətt (_) ilə başlayır. Keçid işlədildikdən sonra silindikləri üçün faydalıdırlar, buna görə dəyişən adların üst -üstə düşməsindən narahat olmayın.

$ Player siyahısını da $ roomlist -dən silirəm, təbii ki.

Addım 7: Test

Test
Test
Test
Test

Kodu indiki kimi işlədə bilsək də, bu çox yaxşı bir test olmayacaq. Kodu işə salsaq və $ player və $ wumpus -un fərqli otaqlara təyin olunduğunu görsək, bunun kodun işlədiyi üçün olub -olmadığını və ya sadəcə bir şans olduğunu bilmirik. Əlbəttə ki, kodu dəfələrlə işlədə bilərik və güman edə bilərik ki, hər ikisinə heç vaxt eyni otaq verməyəcək, amma bu əbədi olacaq və hələ də heç vaxt baş verə bilməyəcəyinə dair 100% zəmanət deyil.

Bunun əvəzinə yoxlamaq üçün bir yola ehtiyacımız var.

Giriş hissəmizin üstünə $ wumpus, $ player və $ roomlist dəyişənlərimizin dəyərlərini görməyə imkan verən üç sətir əlavə etdim. Kodumuzu necə qurduğumuza görə bilirik ki, $ wumpus otağı və $ player otağı $ roomlist -dən silinməlidir.

Bu kodu işlədərkən bunun belə olub olmadığını yoxlaya bilərik.

Addım 8: Sugarcube və Obyektlərlə Qəribəliklər

Sugarcube və Obyektlərlə Qəribəliklər
Sugarcube və Obyektlərlə Qəribəliklər
Sugarcube və Obyektlərlə Qəribəliklər
Sugarcube və Obyektlərlə Qəribəliklər
Sugarcube və Obyektlərlə Qəribəliklər
Sugarcube və Obyektlərlə Qəribəliklər

Sugarcube obyektləri bir az qəribədir. Gəlin bunu nümayiş etdirim.

Əvvəlcə bu layihəni qurarkən, otaqları silməyə başlamazdan əvvəl $ roomlistimi $ saveroom dəyişəninə saxlamaq istədim. Düşündüm ki, sonradan lazımlı olacaq.

Bu koddan qəribə bir davranış aldığımda, $ saveroom dəyişənimə baxmağım üçün giriş səhifəmə başqa bir sətir əlavə etdim (ikinci şəkil).

$ Roomlist -dən sildiyim elementlərin də qeyd olunan siyahımdan silindiyini görəndə şok oldum! Üçüncü şəkildə bunu hərəkətdə görə bilərsiniz.

Bunun səbəbi, bu kimi bir sıra kopyaladığınızda, əslində Twine -ə serialı kopyalamağı deyil, Twine -ə bu iki dəyişənin eyni bir sıra olduğunu söyləyirsiniz. Bir dəyişəndən istifadə edərək massivə bir şey etdiyiniz zaman digər dəyişənin baxdığı dizini dəyişir!

Bunu clone () funksiyası ilə düzəldə bilərik.

Addım 9: Klon () funksiyası

Klon () funksiyası
Klon () funksiyası
Klon () funksiyası
Klon () funksiyası

Sugarcube sənədlər səhifəsində clone () funksiyası haqqında oxuya bilərsiniz.

"Sığ" bir nüsxə əvvəllər etdiyimiz şeydir. Bütün serialın tam nüsxəsini çıxarmaq əvəzinə, dəyişəninizin eyni dizi ilə işlədiyini güman edir. Sığ bir nüsxə əvəzinə, clone () gözlədiyiniz kimi davranan "dərin" bir nüsxə hazırlayır. Dizinin hər bir elementi yeni bir diziyə kopyalanır və orijinaldan tamamilə ayrıdır.

Bu yeni kodu sınasaq, gözlənildiyi kimi işlədiyini görürük.

Əlbəttə ki, $ roomlist saxlamağınızın əhəmiyyəti yoxdur. Layihəmin məqsədləri üçün bunu etməyəcəyəm. Bütün bunlar yalnız dərin və dayaz nüsxələri nümayiş etdirmək üçündür.

Addım 10: Hələlik budur

Hələlik budur!
Hələlik budur!

Oyunçumuzun təsadüfi bir otaqda başlamasına imkan verən kod əlavə etdik. Bundan əlavə, oyunçunun Wumpus ilə eyni otaqda başlayacağı bir səhv aradan qaldırıldı.

Dəyişənlərdən bağlantıların necə yaradılacağını və Sugarcube tərəfindən serialın kopyalanmasının necə işləndiyini öyrəndik.

İşlər sürətlə gedir, amma yeni başlayırıq!

Xoşbəxt ov!

Tövsiyə: