Obsah:

Odkazy z premenných v motúze so Sugarcube: 10 krokov
Odkazy z premenných v motúze so Sugarcube: 10 krokov

Video: Odkazy z premenných v motúze so Sugarcube: 10 krokov

Video: Odkazy z premenných v motúze so Sugarcube: 10 krokov
Video: Как найти смысл жизни 2024, Júl
Anonim
Odkazy z premenných v motúze so Sugarcube
Odkazy z premenných v motúze so Sugarcube

Som veľmi rád, že si sa ku mne opäť pridal! To znamená, že Wumpus vás ešte nezjedol. Dobre!

Pre tých z vás, ktorí nie sú oboznámení, je to súbor návodov, ktoré robím, aby som pomohol svojej rozkošnej sesternici oochy-skootchy widdle s jej starším projektom. Tieto návody majú byť referenciou toho, čo môžete robiť s niektorými programovacími funkciami Twine a Sugarcube. Ak sa chcete držať ďalej, prvý návod nájdete tu.

V poslednom návode som postavil malú sadu miestností, ktoré môže hráč preskúmať. Pridal som objekt Wumpus a urobil som všeobecný kód miestnosti, aby som zmenil to, čo bolo zobrazené v každej miestnosti, v závislosti od toho, kde sa Wumpus nachádza.

Krok 1: Vytvorte si prehrávač

Vytvorte si svojho hráča
Vytvorte si svojho hráča

Tento krok je veľmi jednoduchý. V zásade používam rovnaký kód ako môj $ wumpus, ale namiesto toho s premennou $ player.

Krok 2: Nový kód miestnosti

Nový kód miestnosti
Nový kód miestnosti

Bol zmenený váš generický kód miestnosti, takže hodnota $ player je aktuálna miestnosť. Potom porovnajte $ wumpus s $ prehrávačom namiesto aktuálnej miestnosti.

Toto je malá zmena a nie je úplne potrebná, ale rád by som udržal svoj kód organizovaný.

Krok 3: Vytvorenie odkazu z premennej

Vytvorenie odkazu z premennej
Vytvorenie odkazu z premennej

Nakoniec chcem nahradiť odkaz v mojej štartovacej miestnosti za odkaz, ktorý sa mení na základe hodnoty hráča $. To je možné vykonať pomocou funkcie "" v Sugarcube. Viac si o tom môžete prečítať na stránke dokumentácie k Sugarcube.

Prvý reťazec za naším príkazom je fráza, ktorá sa objaví v našej pasáži. Druhý je názov pasáže, na ktorú chceme odkazovať. Používam „Lovte Wumpusa!“ako moja fráza, ale mohli by sme namiesto toho použiť našu premennú, ak chceme, aby hráč vopred vedel, kam ide, takto:

Krok 4: Test

Test
Test
Test
Test

Pri testovaní kódu by ste mali zistiť, že váš odkaz bol nahradený akoukoľvek frázou, ktorú ste predtým napísali. Kliknutím naň sa dostanete do náhodnej miestnosti vo vašej hre.

Nanešťastie vás to môže tiež dostať priamo do miestnosti Wumpus! Na tom teraz veľmi nezáleží, ale v skutočnej hre, ktorá by znamenala okamžitý koniec hry. Musíme to napraviť.

Krok 5: Pridajte zoznam miestností

Pridajte zoznam miestností
Pridajte zoznam miestností

Najprv vytvoríme zoznam miestností, aby bola správa miestností jednoduchšia. Vyhlásením tohto poľa ho môžeme použiť na nastavenie hodnôt $ player a $ wumpus bez opakovania kódu. Má to aj ďalšiu výhodu, ktorú budeme skúmať ďalej.

Testovanie s týmto kódom by sa malo správať rovnako ako predtým.

Krok 6: Odstránenie miestností

Odstránenie miestností
Odstránenie miestností

Do kódu som predtým pridal jeden riadok kódu (zvýraznené).

Polia v Sugarcube majú vstavanú funkciu, ktorá vám umožňuje odstrániť z nich prvky podľa názvu. V takom prípade, keď priradíme miestnosti $ wumpus, môžeme ju odstrániť z nášho zoznamu $ room. Táto funkcia je však náročná. Nebude to fungovať, pokiaľ nebude výstup funkcie priradený alebo nejakým spôsobom použitý. Aby som sa o to postaral, vytvoril som dočasnú premennú _temp.

V Sugarcube začínajú dočasné premenné namiesto dolára ($) podčiarkovníkom (_). Sú užitočné, pretože sú vymazané po spustení pasáže, takže si nemusíte robiť starosti s prekrývaním názvov premenných.

Vymazávam tiež miestnosť $ player zo zoznamu $ roomlist, ako samozrejmosť.

Krok 7: Testovanie

Testovanie
Testovanie
Testovanie
Testovanie

Aj keď by sme mohli kód spustiť tak, ako je teraz, nebol by to veľmi dôkladný test. Ak spustíme kód a zistíme, že $ player a $ wumpus sú priradené k rôznym miestnostiam, nevieme, či je to preto, že kód funguje, alebo je to len náhoda. Iste, mohli by sme kód spustiť mnohokrát a predpokladať, že ak im obom nikdy nepriradí rovnakú miestnosť, ako to nikdy nebude, bude to trvať večnosť a stále to nie je stopercentné uistenie, že sa to nikdy nemôže stať.

Namiesto toho potrebujeme spôsob, ako to skontrolovať.

Do hornej časti úvodnej pasáže som pridal tri riadky, ktoré nám umožnia vidieť hodnoty našich premenných $ wumpus, $ player a $ roomlist. Vzhľadom na to, ako sme nastavili náš kód, vieme, že miestnosť $ wumpus a $ hráčska miestnosť by mali byť zo zoznamu $ roomlist odstránené.

Keď spustíme tento kód, môžeme sa presvedčiť, či je to tak.

Krok 8: Zvláštnosti s Sugarcube a predmetmi

Zvláštnosti s kockou cukru a predmetmi
Zvláštnosti s kockou cukru a predmetmi
Zvláštnosti s kockou cukru a predmetmi
Zvláštnosti s kockou cukru a predmetmi
Zvláštnosti s kockou cukru a predmetmi
Zvláštnosti s kockou cukru a predmetmi

Objekty Sugarcube sú trochu zvláštne. Dovoľte mi to predviesť.

Kým som pôvodne staval tento projekt, chcel som uložiť svoj $ roomlist do premennej $ saveroom, než som z neho začal vymazávať miestnosti. Myslel som si, že sa mi to neskôr bude hodiť.

Keď som z tohto kódu dostal nejaké zvláštne správanie, pridal som na svoju úvodnú stránku ďalší riadok, aby som sa mohol pozrieť na svoju premennú $ saveroom (druhý obrázok).

Bol som šokovaný, keď som zistil, že prvky, ktoré som odstránil z $ roomlist, boli tiež odstránené z môjho uloženého zoznamu! Môžete to vidieť v akcii na treťom obrázku.

Dôvodom je, že keď kopírujete pole takto, v skutočnosti nehovoríte motúzu, aby kopíroval pole, poviete motúzu, že tieto dve premenné sú rovnaké pole. Keď urobíte niečo s poľom pomocou jednej premennej, zmení to isté pole, na ktoré sa pozerá druhá premenná!

Môžeme to napraviť pomocou funkcie clone ().

Krok 9: Funkcia Clone ()

Funkcia Clone ()
Funkcia Clone ()
Funkcia Clone ()
Funkcia Clone ()

O funkcii clone () si môžete prečítať na stránke dokumentácie k Sugarcube.

„Plytká“kópia je to, čo sme robili predtým. Namiesto vytvárania úplnej kópie celého poľa iba predpokladá, že vaša premenná pracuje s rovnakým poľom. Namiesto plytkej kópie urobí clone () „hlbokú“kópiu, ktorá sa správa tak, ako by ste očakávali. Každý prvok poľa je skopírovaný do nového poľa a je úplne oddelený od pôvodného.

Ak otestujeme tento nový kód, zistíme, že funguje podľa očakávania.

Samozrejme, nezáleží na tom, či si ponecháte $ roomlist alebo nie. Na účely svojho projektu nejdem. Toto všetko bolo len na ukážku hlbokých a plytkých kópií.

Krok 10: To je nateraz všetko

To je nateraz všetko!
To je nateraz všetko!

Pridali sme kód, ktorý umožňuje nášmu hráčovi začať v náhodnej miestnosti. Okrem toho sme odstránili chybu, pri ktorej by hráč začínal v tej istej miestnosti ako Wumpus.

Dozvedeli sme sa, ako vytvárať odkazy z premenných a ako kopírovanie polí spracováva Sugarcube.

Veci nabiehajú, ale my ešte len začíname!

Šťastný lov!

Odporúča: