Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
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
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
Ü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
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
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
Ə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ı
Ə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
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 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ı
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
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ə:
WS2812b Led Strip ilə Raspberry Pi -də Hyperion ilə OSMC -ni necə qurmaq olar: 8 addım
WS2812b Led Strip ilə Raspberry Pi -də Hyperion ilə OSMC -ni necə qurmaq olar: Bəzən ingilis dilini çox yaxşı bilirəm, bəzən yox … İlk öncə hər şey. Bu mənim ilk öyrədicimdir və ingilis dili mənim ana dilim deyil, xahiş edirəm mənə qarşı çox sərt olmayın. Bu çərçivənin necə qurulacağına aid olmayacaq, bu çox asandır. Söhbət installidən gedir
Flysky RF Transmitteri USB + Tel Siqnal Bağlantısı ilə PC ilə işləyir + Pulsuz Simulator Proqramı: 6 addım
Flysky RF Vericisi USB + Tel Siqnal Bağlantısı ilə PC + Pulsuz Simulator Proqramı ilə Gücləndirilir: Mənim kimi olsanız, RF ötürücünüzü sınamaq və əziz RF təyyarəsini/pilotsuz təyyarənizi qəzaya uğramadan öyrənmək istərdiniz. Bu, çoxlu pula və vaxta qənaət etməklə əlavə əyləncə verəcək, bunu etmək üçün RF ötürücünüzü sizə bağlamağın ən yaxşı yolu
Sugarcube ilə Sicimdə Ümumi Otaqlar: 11 Addım
Sugarcube ilə İplikdəki Ümumi Otaqlar: Salam, salam və Sugarcube ilə Twine -də Wumpus Hunt qurmaq mənim dərsimə xoş gəldiniz! Twine, mətn macəra oyunları yaratmaq üçün hazırlanmış çox sadə bir vasitədir! Ən sevdiyim balaca əmim oğlu, böyük layihəsi üçün Twine ilə bir oyun qurmağı seçdi
Arduino Uno ilə Akustik Levitasiya Addım-addım (8 addım): 8 addım
Arduino Uno ilə Akustik Levitasiya Adım Adım (8 addım): ultrasəs səs ötürücüləri L298N Dc dişi qadın adapteri kişi dc pinli Arduino UNOBreadboard Bu necə işləyir: Əvvəlcə Arduino Uno-ya kod yükləyirsiniz (rəqəmsal ilə təchiz edilmiş bir mikro nəzarətçidir) və kodu çevirmək üçün analog portlar (C ++)
ESP32 ilə PWM - Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: 6 addım
ESP32 ilə PWM | Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: Bu təlimatlarda Arduino IDE istifadə edərək ESP32 ilə PWM siqnallarının necə yaradılacağını görəcəyik. PWM əsasən hər hansı bir MCU -dan analoq çıxışı yaratmaq üçün istifadə olunur və bu analog çıxış 0V ilə 3.3V arasında ola bilər (esp32 vəziyyətində) & dan