İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bana tekrar katıldığına çok sevindim! Bu, Wumpus'un henüz seni yemediği anlamına gelir. İyi!
Aşina olmayanlarınız için, bu, sevimli ukala-skootchy serseri kuzenime kıdemli projesinde yardımcı olmak için hazırladığım bir dizi öğreticidir. Bu öğreticiler, Twine ve Sugarcube'un bazı programlama özellikleriyle neler yapabileceğinize dair bir referans olması içindir. Devam etmek istiyorsanız, ilk öğreticiyi burada bulabilirsiniz.
Son eğitimde, oyuncunun keşfedebileceği küçük bir oda seti oluşturdum. Bir Wumpus nesnesi ekledim ve Wumpus'un nerede olduğuna bağlı olarak her odada görüntülenenleri değiştirmek için bazı genel oda kodları yaptım.
1. Adım: Oynatıcınızı Oluşturun
Bu adım çok basittir. Esasen sadece $wumpus'umla aynı kodu kullanıyorum, ancak bunun yerine bir $player değişkeni ile.
2. Adım: Yeni Oda Kodu
Genel oda kodunuzu değiştirdiniz, böylece $player değeri mevcut oda olacak. Ardından mevcut oda yerine $wumpus ile $player'ı karşılaştırın.
Bu küçük bir değişiklik ve tamamen gerekli değil, ancak kodumu düzenli tutmayı seviyorum.
Adım 3: Bir Değişkenden Bağlantı Oluşturma
Son olarak, başlangıç odamdaki bağlantıyı $player değerine göre değişen bir bağlantıyla değiştirmek istiyorum. Bu, Sugarcube'daki "" işleviyle yapılabilir. Bununla ilgili daha fazla bilgiyi Sugarcube'un dokümantasyon sayfasında okuyabilirsiniz.
Komutumuzdan sonraki ilk dize, pasajımızda görünecek olan ifadedir. İkincisi, bağlantı kurmak istediğimiz pasajın adıdır. "Wumpus Avı!" kullanıyorum. benim ifadem olarak, ancak oyuncunun nereye gittiklerini önceden bilmesini istiyorsak, bunun yerine değişkenimizi orada kullanabiliriz, şöyle:
4. Adım: Test edin
Kodunuzu test ettiğinizde, bağlantınızın daha önce yazdığınız ifadeyle değiştirildiğini görmelisiniz. Tıklamak sizi oyununuzda rastgele bir odaya götürür.
Ne yazık ki, bu sizi doğrudan Wumpus odasına da götürebilir! Bunun şu anda pek bir önemi yok, ama gerçek bir oyunda, bu anında oyun biter. Bunu düzeltmemiz gerekiyor.
Adım 5: Bir Oda Listesi Ekleyin
İlk olarak, odaları yönetmeyi kolaylaştırmak için bir oda listesi oluşturacağız. Bu diziyi bildirerek, kodu tekrar etmeden $player ve $wumpus değerlerimizi ayarlamak için kullanabiliriz. Ayrıca, daha sonra keşfedeceğimiz başka bir avantajı daha var.
Bu kodla test etme, daha önce olduğu gibi davranmalıdır.
Adım 6: Odaları Ortadan Kaldırmak
Önceden koda tek bir kod satırı ekledim (vurgulanmış).
Sugarcube'daki diziler, öğeleri ada göre silmenizi sağlayan yerleşik bir işleve sahiptir. Bu durumda, $wumpus'a bir oda atadığımızda, o odayı $roomlistemizden silebiliriz. Ancak bu işlev titizdir. Fonksiyonun çıktısı bir şekilde atanmadıkça veya kullanılmadıkça çalışmayacaktır. Bununla ilgilenmek için _temp geçici değişkenini yarattım.
Sugarcube'da geçici değişkenler dolar ($) yerine alt çizgi (_) ile başlar. Pasaj çalıştırıldığında silindikleri için kullanışlıdırlar, bu nedenle çakışan değişken adları konusunda endişelenmenize gerek yoktur.
Doğal olarak $player odasını da $roomlist'ten siliyorum.
7. Adım: Test Etme
Kodu şimdi olduğu gibi çalıştırabilsek de, bu çok kapsamlı bir test olmaz. Kodu çalıştırır ve $player ve $wumpus'un farklı odalara atandığını bulursak, bunun nedeni kodun çalışması mı yoksa sadece şans mı olduğunu bilemeyiz. Elbette, kodu birçok kez çalıştırabiliriz ve eğer her ikisine de asla aynı odayı vermezse, bunun sonsuza kadar süreceğini ve bunun asla olamayacağının %100 garantisi olmadığını varsayabiliriz.
Bunun yerine, kontrol etmenin bir yoluna ihtiyacımız var.
$wumpus, $player ve $roomlist değişkenlerimizin değerlerini görmemizi sağlayacak giriş pasajımızın üstüne üç satır ekledim. Kodumuzu ayarlama şeklimiz nedeniyle, $wumpus odasının ve $player odasının $roomlistesinden çıkarılması gerektiğini biliyoruz.
Bu kodu çalıştırdığımızda, durumun böyle olduğundan emin olmak için kontrol edebiliriz.
8. Adım: Küp Şeker ve Nesnelerle Tuhaflıklar
Sugarcube nesneleri biraz garip. Bunu göstereyim.
Başlangıçta bu projeyi oluştururken, odaları silmeye başlamadan önce $roomlistimi bir $saveroom değişkenine kaydetmek istedim. Daha sonra işe yarayacağını düşündüm.
Bu koddan bazı garip davranışlar aldığımda, $saveroom değişkenime bakmama izin vermek için giriş sayfama başka bir satır ekledim (ikinci resim).
$roomlist'ten sildiğim öğelerin kayıtlı listemden de silindiğini görünce şok oldum! Bunu üçüncü resimde çalışırken görebilirsiniz.
Bunun nedeni, böyle bir diziyi kopyaladığınızda, aslında Twine'a diziyi kopyalamasını söylemiyorsunuz, Twine'e bu iki değişkenin aynı dizi olduğunu söylüyorsunuz. Bir değişken kullanarak diziye bir şey yaptığınızda, diğer değişkenin baktığı diziyi değiştirir!
Bunu klon() fonksiyonu ile düzeltebiliriz.
9. Adım: Klon() İşlevi
Sugarcube dokümantasyon sayfasında klon() işlevi hakkında bilgi edinebilirsiniz.
"Sığ" bir kopya daha önce yaptığımız şeydi. Tüm dizinin tam bir kopyasını yapmak yerine, değişkeninizin aynı diziyle çalıştığını varsayar. Sığ bir kopya yerine klon(), beklediğiniz gibi davranan "derin" bir kopya yapar. Dizinin her elemanı yeni bir diziye kopyalanır ve orijinalinden tamamen ayrıdır.
Bu yeni kodu test edersek, beklendiği gibi çalıştığını görürüz.
Tabii ki, $roomlist tutmanız veya tutmamanız önemli değil. Projemin amaçları için, gitmiyorum. Bunların hepsi sadece derin ve sığ kopyaları göstermek içindi.
Adım 10: Şimdilik Bu Kadar
Oyuncumuzun rastgele bir odada başlamasını sağlayan kod ekledik. Buna ek olarak, oyuncunun Wumpus ile aynı odada başlamasına neden olan bir hatayı ortadan kaldırdık.
Değişkenlerden nasıl bağlantı oluşturulacağını ve Sugarcube tarafından dizi kopyalamanın nasıl ele alındığını öğrendik.
İşler hızlanıyor, ama biz daha yeni başlıyoruz!
İyi avlar!
Önerilen:
Arduino ile Cadılar Bayramı “kavanoz başı” Şeker Dispenseri Dekorasyonu: 5 Adım
Arduino ile Cadılar Bayramı “kavanoz başına” Şeker Dispenseri Dekorasyonu: Bu proje, Arduino Uno ile Cadılar Bayramı dekorasyonu olarak kullanmak için bir şekerleme makinesinin nasıl yapıldığını açıklar. Ledler kırmızı renkte ileri ve geri sırayla yanar ve döner ultrasonik sensör bir el algılarsa yeşile döner. Ardından, bir servo o
Sert Şeker ile Heykel Deneyleri: 9 Adım (Resimlerle)
Sert Şeker ile Heykel Deneyleri: Dökülebilir, dövülebilir ve şeffaftır. Zamanla değişir ve ısı, su veya basınçla aşınabilir. Yerçekimine tepki olarak yavaş yavaş şekil değiştirerek formlara yığılır. Herhangi bir rengi alabilir ve çok çeşitli dokular elde edebilir
ESP32 ile PWM - Arduino IDE ile ESP 32'de PWM ile LED Karartma: 6 Adım
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
MESH IoT Blokları ile Otomatik Bakkal Küpü: 4 Adım
MESH IoT Blokları ile Otomatik Bakkal Küpü: MESH IoT bloklarını kullanarak kendi bakkal küpünüzü oluşturun. Kendin Yap bakkal küpüyle otomatik bir alışveriş listesi oluşturun ve yönetin. Küpün her iki tarafı en sevdiğiniz bakkaliye ürününü temsil eder ve bir alışveriş uyarısını sadece bir kapakla veya bir
Arduino, Geri Dönüştürülmüş Parçalar ve Dlib ile Şeker Fırlatma Robotu: 6 Adım
Arduino, Geri Dönüştürülmüş Parçalar ve Dlib ile Şeker Fırlatma Robotu: Birkaç geri dönüştürülmüş parça, bir Arduino + motor kalkanı ve Dlib bilgisayar yazılımı ile çalışan bir yüz algılayan şeker atıcı yapabilirsiniz.Malzemeler: Ahşap çerçeve Dizüstü/bilgisayar ( tercihen bir Raspberry Pi'den daha güçlü!). Arduino (Tercihen