Isi kandungan:

Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube: 10 Langkah
Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube: 10 Langkah

Video: Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube: 10 Langkah

Video: Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube: 10 Langkah
Video: ITTV SPM 2021 Tingkatan 4 Sains Bab 1 Langkah Keselamatan Dalam Makmal (Pemadam Kebakaran) 2024, Julai
Anonim
Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube
Pautan Dari Pemboleh ubah dalam Twine Dengan Sugarcube

Saya sangat gembira kerana anda telah menyertai saya lagi! Ini bermakna Wumpus belum memakan anda. Baik!

Bagi anda yang tidak biasa, ini adalah satu set tutorial yang saya buat untuk membantu sepupu wol saya yang suka bermain dengan projek seniornya. Tutorial ini dimaksudkan untuk menjadi rujukan untuk apa yang dapat anda lakukan dengan beberapa ciri pengaturcaraan Twine dan Sugarcube. Sekiranya anda ingin mengikuti, anda boleh mendapatkan tutorial pertama di sini.

Dalam tutorial terakhir, saya membina sekumpulan kecil bilik yang dapat diterokai oleh pemain. Saya menambahkan objek Wumpus, dan membuat beberapa kod bilik generik untuk mengubah apa yang dipaparkan di setiap bilik bergantung pada lokasi Wumpus.

Langkah 1: Buat Pemain Anda

Buat Pemain Anda
Buat Pemain Anda

Langkah ini sangat mudah. Pada dasarnya saya hanya menggunakan kod yang sama dengan $ wumpus saya, tetapi dengan pemboleh ubah $ pemain.

Langkah 2: Kod Bilik Baru

Kod Bilik Baru
Kod Bilik Baru

Tukar kod bilik generik anda sehingga nilai $ player adalah ruangan semasa. Kemudian bandingkan $ wumpus dengan $ pemain dan bukannya bilik semasa.

Ini adalah perubahan kecil, dan tidak sepenuhnya diperlukan, tetapi saya ingin memastikan kod saya tetap tersusun.

Langkah 3: Membuat Pautan Dari Pemboleh Ubah

Membuat Pautan Dari Pemboleh Ubah
Membuat Pautan Dari Pemboleh Ubah

Akhirnya, ingin mengganti pautan di ruang permulaan saya ke pautan yang berubah berdasarkan nilai $ pemain. Ini dapat dilakukan dengan fungsi "" di Sugarcube. Anda boleh membaca lebih lanjut mengenai perkara itu di halaman dokumentasi Sugarcube.

Rentetan pertama selepas perintah kami adalah frasa yang akan muncul dalam petikan kami. Yang kedua adalah nama petikan yang ingin kita pautkan. Saya menggunakan "Hunt the Wumpus!" seperti ungkapan saya, tetapi kita boleh menggunakan pemboleh ubah kita di sana sebaliknya jika kita mahu pemain tahu di mana mereka pergi sebelumnya, seperti ini:

Langkah 4: Uji

Uji
Uji
Uji
Uji

Semasa anda menguji kod anda, anda harus mengetahui bahawa pautan anda telah diganti dengan frasa apa pun yang anda tulis sebelumnya. Mengklik ia membawa anda ke ruangan rawak dalam permainan anda.

Malangnya, ini juga boleh membawa anda terus ke bilik Wumpus! Itu tidak banyak masalah sekarang, tetapi dalam permainan sebenar yang akan menjadi permainan segera berakhir. Kita perlu memperbaikinya.

Langkah 5: Tambahkan Senarai Bilik

Tambah Senarai Bilik
Tambah Senarai Bilik

Pertama, kita akan membuat senarai bilik, untuk memudahkan menguruskan bilik. Dengan menyatakan array ini, kita dapat menggunakannya untuk menetapkan nilai $ player dan $ wumpus kita tanpa mengulangi kod. Ia juga mempunyai kelebihan lain yang akan kita kaji seterusnya.

Menguji dengan kod ini harus berkelakuan seperti sebelumnya.

Langkah 6: Menghilangkan Bilik

Menghilangkan Bilik
Menghilangkan Bilik

Saya telah menambahkan satu baris kod ke kod dari sebelumnya (disorot).

Susunan di Sugarcube mempunyai fungsi terbina dalam yang membolehkan anda memadamkan unsur daripadanya berdasarkan nama. Dalam kes ini, setelah kami memberikan $ wumpus sebuah ruangan, kami dapat memadamkan ruangan itu dari senarai $ room kami. Walau bagaimanapun, fungsi ini tidak betul. Ia tidak akan berfungsi melainkan output fungsi ditetapkan atau digunakan dalam beberapa cara. Untuk mengatasinya, saya telah membuat pemboleh ubah sementara _temp.

Di Sugarcube, pemboleh ubah sementara bermula dengan garis bawah (_) dan bukannya dolar ($). Mereka berguna kerana dihapus setelah petikan dijalankan, jadi anda tidak perlu risau tentang nama pemboleh ubah yang bertindih.

Saya juga akan menghapus ruangan pemain $ dari senarai bilik $ juga, semestinya.

Langkah 7: Menguji

Ujian
Ujian
Ujian
Ujian

Walaupun kita dapat menjalankan kod seperti sekarang, itu bukan ujian yang sangat teliti. Sekiranya kita menjalankan kod dan mendapati bahawa $ player dan $ wumpus ditugaskan ke ruangan yang berbeza, kita tidak tahu apakah itu kerana kod itu berfungsi, atau jika itu hanya kebetulan. Sudah tentu, kita dapat menjalankan kodnya berkali-kali, dan menganggap bahawa jika tidak pernah memberi mereka ruang yang sama yang tidak akan pernah berlaku, tetapi itu akan berlangsung selama-lamanya dan masih belum ada jaminan 100% bahawa ia tidak akan pernah berlaku.

Sebaliknya, kita memerlukan kaedah untuk diperiksa.

Saya telah menambah tiga baris ke bahagian atas petikan intro kami yang akan membolehkan kami melihat nilai pemboleh ubah $ wumpus, $ player, dan $ roomlist kami. Oleh kerana cara kami menetapkan kod kami, kami tahu bahawa ruangan $ wumpus dan $ player room harus dihapuskan dari $ roomlist.

Apabila kita menjalankan kod ini, kita dapat memeriksa untuk memastikan perkara itu berlaku.

Langkah 8: Keanehan Dengan Sugarcube dan Objek

Keanehan Dengan Sugarcube dan Objek
Keanehan Dengan Sugarcube dan Objek
Keanehan Dengan Sugarcube dan Objek
Keanehan Dengan Sugarcube dan Objek
Keanehan Dengan Sugarcube dan Objek
Keanehan Dengan Sugarcube dan Objek

Objek tebu sedikit ganjil. Izinkan saya menunjukkan ini.

Semasa saya membina projek ini pada asalnya, saya ingin menyimpan senarai bilik $ saya ke pemboleh ubah $ saveroom sebelum saya mula memadam bilik daripadanya. Saya fikir ia akan berguna kemudian.

Apabila saya mendapat tingkah laku pelik dari kod ini, saya menambah baris lain ke halaman intro saya untuk membolehkan saya melihat pemboleh ubah $ saveroom saya (gambar kedua).

Saya terkejut apabila mengetahui bahawa unsur-unsur yang telah saya hapus dari $ roomlist juga telah dihapuskan dari senarai yang saya simpan! Anda dapat melihatnya dalam aksi pada gambar ketiga.

Ini kerana apabila anda menyalin array seperti ini, anda sebenarnya tidak menyuruh Twine menyalin array, anda memberitahu Twine bahawa kedua pemboleh ubah ini adalah susunan yang sama. Apabila anda melakukan sesuatu pada array menggunakan satu pemboleh ubah, ia mengubah susunan yang sama dengan pemboleh ubah lain yang dilihat!

Kita boleh memperbaikinya dengan fungsi klon ().

Langkah 9: Fungsi Klon ()

Fungsi Klon ()
Fungsi Klon ()
Fungsi Klon ()
Fungsi Klon ()

Anda boleh membaca mengenai fungsi klon () di halaman dokumentasi Sugarcube.

Salinan "cetek" adalah apa yang kita lakukan sebelum ini. Daripada membuat salinan lengkap dari keseluruhan array, ia hanya menganggap pemboleh ubah anda berfungsi dengan susunan yang sama. Daripada salinan cetek, klon () melakukan salinan "dalam", yang berkelakuan seperti yang anda harapkan. Setiap elemen array disalin ke dalam array baru, dan sama sekali terpisah dari yang asal.

Sekiranya kita menguji kod baru ini, kita dapati ia berfungsi seperti yang diharapkan.

Sudah tentu, tidak kira sama ada anda menyimpan $ roomlist atau tidak. Untuk tujuan projek saya, saya tidak akan melakukannya. Ini semua hanya untuk menunjukkan salinan mendalam berbanding cetek.

Langkah 10: Itu sahaja buat masa ini

Itu sahaja buat masa ini!
Itu sahaja buat masa ini!

Kami telah menambah kod yang membolehkan pemain kami bermula di ruangan rawak. Selain itu, kami telah menghilangkan bug di mana pemain akan bermula di ruangan yang sama dengan Wumpus.

Kami belajar bagaimana membuat pautan dari pemboleh ubah, dan bagaimana penyalinan array diperlakukan oleh Sugarcube.

Segala-galanya semakin meningkat, tetapi kami baru memulakan!

Selamat memburu!

Disyorkan: