Mundarija:

Shakar bilan kubdagi o'zgaruvchilardan havolalar: 10 qadam
Shakar bilan kubdagi o'zgaruvchilardan havolalar: 10 qadam

Video: Shakar bilan kubdagi o'zgaruvchilardan havolalar: 10 qadam

Video: Shakar bilan kubdagi o'zgaruvchilardan havolalar: 10 qadam
Video: LADANIVA - Shakar (Official Video) 2024, Iyul
Anonim
Shakar kupasi bilan ipdagi o'zgaruvchilardan havolalar
Shakar kupasi bilan ipdagi o'zgaruvchilardan havolalar

Menga yana qo'shilganingizdan juda xursandman! Bu shuni anglatadiki, Wumpus sizni hali yemagan. Yaxshi!

Sizlarga tanish bo'lmaganlar uchun bu mening ajoyib loyihamda o'zimning yoqimtoy va g'ayrioddiy amakivachchamga yordam berish uchun tayyorlagan darsliklar to'plami. Bu o'quv qo'llanmalari Twine va Sugarcube -ning ba'zi dasturiy xususiyatlari bilan nima qilish mumkinligi haqida ma'lumot beradi. Agar siz kuzatishni xohlasangiz, bu erda birinchi darslikni topishingiz mumkin.

Oxirgi darsda men o'yinchi o'rganishi mumkin bo'lgan kichik xonalar majmuasini qurdim. Men Wumpus ob'ektini qo'shdim va har bir xonada ko'rsatiladigan narsalarni Wumpus qaerda bo'lishiga qarab o'zgartirish uchun umumiy xona kodini yaratdim.

1 -qadam: O'yinchini yarating

O'yinchini yarating
O'yinchini yarating

Bu qadam juda oddiy. Aslida men $ wumpus bilan bir xil kodni ishlataman, lekin uning o'rniga $ player o'zgaruvchisi.

2 -qadam: Yangi xona kodi

Yangi xona kodi
Yangi xona kodi

Xonaning umumiy kodini o'zgartirdingiz, shuning uchun $ player qiymati hozirgi xona. Keyin $ wumpus -ni hozirgi xonaning o'rniga $ player bilan solishtiring.

Bu kichik o'zgarish va umuman kerak emas, lekin men o'z kodimni tartibga solishni yaxshi ko'raman.

3 -qadam: O'zgaruvchidan havola yaratish

O'zgaruvchidan havola yaratish
O'zgaruvchidan havola yaratish

Nihoyat, mening boshlang'ich xonamdagi havolani $ player qiymatiga qarab o'zgarishi kerak. Buni Sugarcube -dagi "" funktsiyasi yordamida amalga oshirish mumkin. Siz bu haqda Sugarcube -ning hujjatlar sahifasida o'qishingiz mumkin.

Bizning buyruqdan keyingi birinchi satr - bu bizning parchamizda paydo bo'ladigan ibora. Ikkinchisi, biz bog'lamoqchi bo'lgan parchaning nomi. Men "Wumpusni ovlang!" Mening iboram sifatida, lekin agar biz o'yinchi qayerga ketayotganini oldindan bilishini istasak, biz u erda o'z o'zgaruvchimizdan foydalanishimiz mumkin:

4 -qadam: Sinov

Sinov
Sinov
Sinov
Sinov

Kodni sinab ko'rganingizda, sizning havolangiz ilgari yozgan har qanday ibora bilan almashtirilganligini ko'rishingiz kerak. Uni bosish sizni o'yinning tasodifiy xonasiga olib boradi.

Afsuski, bu sizni to'g'ridan -to'g'ri Wumpus xonasiga olib borishi mumkin! Bu hozir juda muhim emas, lekin haqiqiy o'yinda bu bir zumda tugaydi. Biz buni tuzatishimiz kerak.

5 -qadam: Xonalar ro'yxatini qo'shing

Xonalar ro'yxatini qo'shing
Xonalar ro'yxatini qo'shing

Birinchidan, biz xonalarni boshqarishni osonlashtirish uchun xona ro'yxatini tuzamiz. Bu qatorni e'lon qilib, biz $ player va $ wumpus qiymatlarini kodni takrorlamasdan o'rnatishimiz mumkin. Uning yana bir afzalligi bor, biz bundan keyin o'rganamiz.

Ushbu kod bilan test qilish, avvalgidek bo'lishi kerak.

6 -qadam: Xonalarni yo'q qilish

Xonalarni yo'q qilish
Xonalarni yo'q qilish

Kodga bitta kod qatorini avvaldan qo'shib qo'ydim (ajratilgan).

Sugarcube-dagi massivlar elementlardan nom bilan o'chirish imkonini beruvchi o'rnatilgan funktsiyaga ega. Bu holda, biz $ wumpus xonasini tayinlaganimizdan so'ng, biz bu xonani $ xona ro'yxatidan o'chirib tashlashimiz mumkin. Biroq, bu funktsiya murakkab. Funktsiyaning chiqishi qandaydir tarzda tayinlanmasa yoki ishlatilmasa, u ishlamaydi. Bunga g'amxo'rlik qilish uchun men _temp vaqtinchalik o'zgaruvchisini yaratdim.

Sugarcube -da vaqtinchalik o'zgaruvchilar dollar ($) o'rniga pastki chiziqdan (_) boshlanadi. Ular foydalidir, chunki ular parcha ishga tushirilgandan so'ng o'chiriladi, shuning uchun siz o'zgarmaydigan nomlarning bir -biriga o'xshashligi haqida qayg'urmasligingiz kerak.

Men $ playerlistni $ roomlistdan ham o'chirib tashlayman.

7 -qadam: sinov

Sinov
Sinov
Sinov
Sinov

Biz kodni hozirgidek ishlatishimiz mumkin bo'lsa -da, bu juda puxta sinov bo'lmaydi. Agar biz kodni ishga tushirsak va $ player va $ wumpus har xil xonalarga tayinlanganligini aniqlasak, bu kod ishlaydimi yoki tasodifmi, bilmaymiz. Albatta, biz kodni ko'p marotaba ishga tushirishimiz mumkin va agar u hech qachon ikkalasiga ham hech qachon bir xil xonani bermasa, lekin bu abadiy davom etadi va bu hech qachon bo'lmaydi, degan 100% kafolat emas.

Buning o'rniga, tekshirish usulini topishimiz kerak.

Men kirish qismining yuqori qismiga uchta satr qo'shdim, bu bizga $ wumpus, $ player va $ roomlist o'zgaruvchilarining qiymatlarini ko'rish imkonini beradi. Bizning kodni sozlash usuli tufayli biz $ wumpus xonasi va $ player xonasini $ roomlistdan olib tashlash kerakligini bilamiz.

Biz ushbu kodni ishga tushirganimizda, biz uning to'g'riligiga ishonch hosil qilishimiz mumkin.

8 -qadam: Sugarcube va ob'ektlar bilan g'alati narsalar

Sugarcube va ob'ektlar bilan g'alati narsalar
Sugarcube va ob'ektlar bilan g'alati narsalar
Sugarcube va ob'ektlar bilan g'alati narsalar
Sugarcube va ob'ektlar bilan g'alati narsalar
Sugarcube va ob'ektlar bilan g'alati narsalar
Sugarcube va ob'ektlar bilan g'alati narsalar

Sugarcube ob'ektlari biroz g'alati. Buni ko'rsatishga ijozat bering.

Men dastlab bu loyihani qurayotganimda, xonalarni o'chirishni boshlashdan oldin, $ roomlist -ni $ saveroom o'zgaruvchisiga saqlamoqchi edim. Men bu keyinchalik foydali bo'ladi deb o'yladim.

Men bu koddan g'alati xatti -harakatlarga duch kelganimda, $ saveroom o'zgaruvchisiga qarashim uchun kirish sahifamga boshqa qator qo'shdim (ikkinchi rasm).

Men $ roomlistdan o'chirib tashlagan elementlar ham saqlangan ro'yxatimdan o'chirilganini ko'rib hayron bo'ldim! Buni uchinchi rasmda amalda ko'rishingiz mumkin.

Buning sababi shundaki, siz bunday qatorni nusxalashda, siz aslida Twine -ga qatorni nusxalashni aytmaysiz, siz Twine -ga bu ikkita o'zgaruvchining bir xil qator ekanligini aytasiz. Agar siz bitta o'zgaruvchidan foydalanib, massivga biror narsa qilsangiz, u boshqa o'zgaruvchi ko'rib turgan qatorni o'zgartiradi!

Buni clone () funktsiyasi yordamida tuzatishimiz mumkin.

9 -qadam: Clone () funktsiyasi

Clone () funktsiyasi
Clone () funktsiyasi
Clone () funktsiyasi
Clone () funktsiyasi

Clone () funktsiyasi haqida Sugarcube hujjatlar sahifasida o'qishingiz mumkin.

"Sayoz" nusxa - bu biz oldin qilgan ishimiz. Butun qatorning to'liq nusxasini olishning o'rniga, u sizning o'zgaruvchingiz bir xil qator bilan ishlayotganini taxmin qiladi. Sayoz nusxaning o'rniga, clone () "chuqur" nusxasini oladi, u siz kutgandek harakat qiladi. Massivning har bir elementi yangi massivga ko'chiriladi va asl nusxadan butunlay ajralib turadi.

Agar biz ushbu yangi kodni sinab ko'rsak, u kutilganidek ishlaydi.

Albatta, siz $ roomlistni saqlaysizmi yoki yo'qmi, muhim emas. Loyihamning maqsadlari uchun men bormayman. Bularning barchasi chuqur va sayoz nusxalarni ko'rsatish uchun qilingan.

10 -qadam: Bu hozircha

Bu hozircha!
Bu hozircha!

Biz o'yinchi tasodifiy xonadan boshlashiga ruxsat beruvchi kod qo'shdik. Bunga qo'shimcha ravishda, biz o'yinchi Wumpus bilan bir xonada boshlanadigan xatoni bartaraf qildik.

Biz o'zgaruvchilardan havolalar yaratish va Sugarcube tomonidan massivlardan nusxa ko'chirish usullari haqida bilib oldik.

Ishlar tezlashmoqda, lekin biz endigina boshlayapmiz!

Baxtli ov!

Tavsiya: