İçindekiler:

Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar: 10 Adım
Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar: 10 Adım

Video: Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar: 10 Adım

Video: Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar: 10 Adım
Video: kubat_düz oyun 2024, Temmuz
Anonim
Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar
Şeker Küpü İle Sicimdeki Değişkenlerden Bağlantılar

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

Oyuncunuzu Oluşturun
Oyuncunuzu 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

Yeni Oda Kodu
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

Bir Değişkenden Bağlantı Oluşturma
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

Ölçek
Ölçek
Ölçek
Ölçek

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

Oda Listesi Ekle
Oda Listesi Ekle

İ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

Odaların Ortadan Kaldırılması
Odaların Ortadan Kaldırılması

Ö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

Test yapmak
Test yapmak
Test yapmak
Test yapmak

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

Küp Şeker ve Nesnelerle Tuhaflıklar
Küp Şeker ve Nesnelerle Tuhaflıklar
Küp Şeker ve Nesnelerle Tuhaflıklar
Küp Şeker ve Nesnelerle Tuhaflıklar
Küp Şeker ve Nesnelerle Tuhaflıklar
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

Klon() İşlevi
Klon() İşlevi
Klon() İşlevi
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

Şimdilik Bu Kadar!
Ş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: