Satura rādītājs:

Saites no mainīgajiem auklām ar cukura kubu: 10 soļi
Saites no mainīgajiem auklām ar cukura kubu: 10 soļi

Video: Saites no mainīgajiem auklām ar cukura kubu: 10 soļi

Video: Saites no mainīgajiem auklām ar cukura kubu: 10 soļi
Video: Аудиокнига «Странная история доктора Джекила и мистера Хайда» Роберта Льюиса Стивенсона 2024, Novembris
Anonim
Saites no mainīgajiem auklām ar cukura kubu
Saites no mainīgajiem auklām ar cukura kubu

Es ļoti priecājos, ka atkal pievienojāties man! Tas nozīmē, ka Wumpus vēl nav tevi apēdis. Labi!

Tiem no jums, kuri nav pazīstami, šis ir pamācību komplekts, ko es daru, lai palīdzētu manam burvīgajam oochy-skootchy widdle brālēnam ar savu vecāko projektu. Šīs apmācības ir domātas kā atsauce tam, ko varat darīt ar dažām auklas un Sugarcube programmēšanas funkcijām. Ja vēlaties sekot līdzi, pirmo pamācību varat atrast šeit.

Pēdējā apmācībā es uzbūvēju nelielu istabu komplektu, ko spēlētājs var izpētīt. Es pievienoju Wumpus objektu un izveidoju vispārēju telpas kodu, lai mainītu katrā telpā redzamo atkarībā no tā, kur atrodas Wumpus.

1. darbība: izveidojiet atskaņotāju

Izveidojiet savu atskaņotāju
Izveidojiet savu atskaņotāju

Šis solis ir ļoti vienkāršs. Būtībā es vienkārši izmantoju to pašu kodu, ko izmantoju savā $ wumpus, bet tā vietā izmantoju $ player mainīgo.

2. darbība. Jauns telpas kods

Jauns istabas kods
Jauns istabas kods

Mainīts jūsu vispārējais istabas kods, lai $ player vērtība būtu pašreizējā istaba. Pēc tam salīdziniet $ wumpus ar $ player, nevis pašreizējo istabu.

Šīs ir nelielas izmaiņas un nav pilnīgi nepieciešamas, taču man patīk saglabāt savu kodu sakārtotu.

3. darbība. Saites izveide no mainīgā

Saites izveide no mainīgā
Saites izveide no mainīgā

Visbeidzot, es vēlos aizstāt saiti savā sākuma telpā uz saiti, kas mainās, pamatojoties uz $ player vērtību. To var izdarīt, izmantojot funkciju "" Sugarcube. Vairāk par to varat izlasīt Sugarcube dokumentācijas lapā.

Pirmā virkne pēc mūsu komandas ir frāze, kas parādīsies mūsu fragmentā. Otrais ir tā fragmenta nosaukums, uz kuru vēlamies saistīt. Es izmantoju "Medīt Wumpus!" kā mana frāze, bet mēs varētu izmantot savu mainīgo tur, ja vēlamies, lai spēlētājs iepriekš zinātu, kurp dodas, piemēram:

4. solis: pārbaudiet

Pārbaude
Pārbaude
Pārbaude
Pārbaude

Pārbaudot kodu, jums vajadzētu atklāt, ka jūsu saite ir aizstāta ar jebkuru iepriekš rakstīto frāzi. Noklikšķinot uz tā, jūs nokļūsit nejaušā spēles telpā.

Diemžēl tas var arī aizvest jūs tieši uz Wumpus istabu! Šobrīd tam nav lielas nozīmes, bet reālā spēlē, kas būtu tūlītēja spēle. Mums tas ir jālabo.

5. darbība: pievienojiet istabu sarakstu

Pievienojiet istabu sarakstu
Pievienojiet istabu sarakstu

Pirmkārt, mēs izveidosim telpu sarakstu, lai atvieglotu telpu pārvaldību. Deklarējot šo masīvu, mēs varam to izmantot, lai iestatītu mūsu $ player un $ wumpus vērtības, neatkārtojot kodu. Tam ir arī cita priekšrocība, kuru mēs izpētīsim tālāk.

Testēšanai ar šo kodu vajadzētu rīkoties tāpat kā iepriekš.

6. darbība: telpu likvidēšana

Telpu likvidēšana
Telpu likvidēšana

Iepriekš pievienotajam kodam esmu pievienojis vienu koda rindu (iezīmēts).

Sugarcube masīviem ir iebūvēta funkcija, kas ļauj izdzēst no tiem elementus pēc nosaukuma. Šajā gadījumā, tiklīdz mēs piešķiram $ wumpus istabu, mēs varam izdzēst šo istabu no mūsu $ roomlist. Tomēr šī funkcija ir smalka. Tas nedarbosies, ja vien funkcijas izvade netiks piešķirta vai izmantota kādā veidā. Lai par to parūpētos, esmu izveidojis pagaidu mainīgo _temp.

Cukura kubā pagaidu mainīgie sākas ar pasvītrojumu (_), nevis dolāru (USD). Tie ir noderīgi, jo tiek izdzēsti, kad fragments ir izpildīts, tāpēc jums nav jāuztraucas par mainīgo nosaukumu pārklāšanos.

Es arī izdzēsu $ spēlētāju istabu no $ roomlist, gluži kā pašsaprotami.

7. darbība: pārbaude

Testēšana
Testēšana
Testēšana
Testēšana

Lai gan mēs varētu palaist kodu tādu, kāds tas ir tagad, tas nebūtu ļoti rūpīgs tests. Ja mēs izpildām kodu un konstatējam, ka $ player un $ wumpus ir piešķirti dažādām telpām, mēs nezinām, vai tas ir tāpēc, ka kods darbojas, vai arī tā ir tikai nejaušība. Protams, mēs varētu palaist kodu daudzas reizes un pieņemt, ka, ja tas viņiem abiem nekad nepiešķir vienu istabu, tas nekad nenotiks, bet tas prasīs mūžīgi, un tā joprojām nav 100% garantija, ka tas nekad nevar notikt.

Tā vietā mums ir nepieciešams veids, kā pārbaudīt.

Mūsu ievada fragmenta augšpusē esmu pievienojis trīs rindas, kas ļaus mums redzēt mūsu $ wumpus, $ player un $ roomlist mainīgo vērtības. Tā kā mēs izveidojām savu kodu, mēs zinām, ka $ wumpus istaba un $ player istaba ir jāizslēdz no $ roomlist.

Palaižot šo kodu, mēs varam pārbaudīt, vai tas tā ir.

8. darbība: dīvainības ar cukura kubu un priekšmetiem

Dīvainības ar cukura kubu un priekšmetiem
Dīvainības ar cukura kubu un priekšmetiem
Dīvainības ar cukura kubu un priekšmetiem
Dīvainības ar cukura kubu un priekšmetiem
Dīvainības ar cukura kubu un priekšmetiem
Dīvainības ar cukura kubu un priekšmetiem

Cukura kuba objekti ir nedaudz dīvaini. Ļaujiet man to parādīt.

Kamēr es sākotnēji veidoju šo projektu, es vēlējos saglabāt savu $ istabu sarakstu mainīgajā $ saveroom, pirms sāku no tā dzēst telpas. Es domāju, ka tas vēlāk noderēs.

Kad es saņēmu kādu dīvainu uzvedību no šī koda, es savai ievadlapai pievienoju vēl vienu rindiņu, lai es varētu apskatīt savu $ saveroom mainīgo (otrais attēls).

Es biju šokēts, atklājot, ka elementi, kurus es biju izdzēsis no $ roomlist, tika izdzēsti arī no mana saglabātā saraksta! To var redzēt darbībā trešajā attēlā.

Tas ir tāpēc, ka, kopējot šādu masīvu, jūs faktiski neliekat auklai kopēt masīvu, jūs sakāt auklai, ka šie divi mainīgie ir viens un tas pats masīvs. Kad jūs kaut ko darāt masīvam, izmantojot vienu mainīgo, tas maina to pašu masīvu, uz kuru skatās otrs mainīgais!

Mēs to varam novērst, izmantojot funkciju clone ().

9. darbība. Funkcija Klons ()

Funkcija Klons ()
Funkcija Klons ()
Funkcija Klons ()
Funkcija Klons ()

Par funkciju clone () varat lasīt Sugarcube dokumentācijas lapā.

"Sekla" kopija ir tas, ko mēs darījām iepriekš. Tā vietā, lai izveidotu pilnu visa masīva kopiju, tiek pieņemts, ka jūsu mainīgais darbojas ar to pašu masīvu. Seklas kopijas vietā klons () veic “dziļu” kopiju, kas darbojas tā, kā jūs varētu gaidīt. Katrs masīva elements tiek pārkopēts jaunā masīvā un ir pilnībā atdalīts no oriģināla.

Ja mēs pārbaudām šo jauno kodu, mēs atklājam, ka tas darbojas, kā paredzēts.

Protams, nav svarīgi, vai saglabāt $ roomlist vai nē. Mana projekta nolūkos es to nedarīšu. Tas viss bija tikai, lai demonstrētu dziļas un seklas kopijas.

10. solis: pagaidām tas ir viss

Tas pagaidām!
Tas pagaidām!

Mēs esam pievienojuši kodu, kas ļauj mūsu spēlētājam sākt nejaušā telpā. Papildus tam mēs esam novērsuši kļūdu, kurā spēlētājs sāktu tajā pašā telpā kā Wumpus.

Mēs uzzinājām, kā izveidot saites no mainīgajiem un kā masīva kopēšanu apstrādā Sugarcube.

Lietas pieaug, bet mēs tikai sākam!

Priecīgas medības!

Ieteicams: