Բովանդակություն:

Հղումներ Twine- ի փոփոխականներից ՝ Sugarcube- ով. 10 քայլ
Հղումներ Twine- ի փոփոխականներից ՝ Sugarcube- ով. 10 քայլ

Video: Հղումներ Twine- ի փոփոխականներից ՝ Sugarcube- ով. 10 քայլ

Video: Հղումներ Twine- ի փոփոխականներից ՝ Sugarcube- ով. 10 քայլ
Video: Մարմնամարզության և ակրոբատիկայի մարզում կրկեսային ստուդիայում։ Ամեն ինչ իրական է: 2024, Նոյեմբեր
Anonim
Twink in Variables- ից հղումներ Sugarcube- ով
Twink in Variables- ից հղումներ Sugarcube- ով

Ես շատ ուրախ եմ, որ դու նորից միացար ինձ: Սա նշանակում է, որ Վումպուսը ձեզ դեռ չի կերել: Լավ!

Ձեզանից նրանց համար, ովքեր ծանոթ չեն, սա մի շարք ձեռնարկներ են, որոնք ես պատրաստում եմ օգնելու իմ հմայիչ ու աղմկոտ կախարդական զարմիկին իր ավագ նախագծում: Այս ձեռնարկները պետք է հղում լինեն այն ամենի համար, ինչ կարող եք անել Twine- ի և Sugarcube- ի ծրագրավորման որոշ հնարավորությունների հետ: Եթե ցանկանում եք հետևել, այստեղ կարող եք գտնել առաջին ձեռնարկը:

Վերջին ձեռնարկում ես կառուցեցի մի փոքր սենյակ, որը խաղացողը կարող է ուսումնասիրել: Ես ավելացրեցի Wumpus- ի օբյեկտը և որոշ ընդհանուր սենյակի ծածկագիր կազմեցի ՝ փոխելու այն, ինչ ցուցադրվում էր յուրաքանչյուր սենյակում ՝ կախված Wumpus- ի գտնվելու վայրից:

Քայլ 1: Ստեղծեք ձեր նվագարկիչը

Ստեղծեք ձեր նվագարկիչը
Ստեղծեք ձեր նվագարկիչը

Այս քայլը շատ պարզ է: Ըստ էության, ես պարզապես օգտագործում եմ նույն ծածկագիրը, ինչ իմ $ wumpus- ը, բայց փոխարենը ՝ $ player փոփոխականով:

Քայլ 2: Նոր սենյակի ծածկագիր

Սենյակի նոր ծածկագիր
Սենյակի նոր ծածկագիր

Փոխեց ձեր ընդհանուր սենյակի ծածկագիրը, այնպես որ $ player- ի արժեքը ներկայիս սենյակն է: Այնուհետեւ համեմատեք $ wumpus- ը $ player- ի հետ `ներկայիս սենյակի փոխարեն:

Սա աննշան փոփոխություն է և ամբողջովին անհրաժեշտ չէ, բայց ես սիրում եմ իմ կոդը կազմակերպված պահել:

Քայլ 3. Փոփոխականից հղում ստեղծելը

Փոփոխականից հղում ստեղծելը
Փոփոխականից հղում ստեղծելը

Ի վերջո, ուզում եմ իմ մեկնարկային սենյակի հղումը փոխարինել այն հղումով, որը փոխվում է ՝ կախված $ player- ի արժեքից: Դա կարելի է անել Sugarcube- ի գործառույթով: Այդ մասին ավելին կարող եք կարդալ Sugarcube- ի փաստաթղթերի էջում:

Մեր հրամանից հետո առաջին տողը այն արտահայտությունն է, որը կհայտնվի մեր հատվածում: Երկրորդը հատվածի անունն է, որին մենք ցանկանում ենք կապել: Ես օգտագործում եմ «Hunt the Wumpus!» - ը: որպես իմ արտահայտություն, բայց մենք կարող ենք փոխարենը օգտագործել մեր փոփոխականը, եթե ցանկանում ենք, որ խաղացողը նախապես իմանա, թե ուր են գնում, այսպես.

Քայլ 4: Փորձարկում

Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում

Երբ ստուգում եք ձեր կոդը, դուք պետք է պարզեք, որ ձեր հղումը փոխարինվել է նախկինում գրած արտահայտությամբ: Սեղմելով դրա վրա ՝ դուք ձեր խաղի պատահական սենյակ եք տանում:

Unfortunatelyավոք, սա կարող է ձեզ ուղիղ ուղարկել Վումպուսի սենյակ: Այս պահին դա մեծ նշանակություն չունի, բայց իսկական խաղում դա ակնթարթային խաղ ավարտված կլիներ: Մենք պետք է դա շտկենք:

Քայլ 5: Ավելացրեք սենյակների ցուցակ

Ավելացնել սենյակների ցուցակ
Ավելացնել սենյակների ցուցակ

Նախ, մենք ստեղծելու ենք սենյակների ցուցակ ՝ սենյակների կառավարումն ավելի դյուրին դարձնելու համար: Հայտարարելով այս զանգվածը, մենք կարող ենք օգտագործել այն ՝ մեր $ player և $ wumpus արժեքները սահմանելու համար ՝ առանց ծածկագիրը կրկնելու: Այն նաև ունի մեկ այլ առավելություն, որը մենք հետագայում կքննարկենք:

Այս ծածկագրով փորձարկումը պետք է վարվի այնպես, ինչպես նախկինում էր:

Քայլ 6: Սենյակների վերացում

Սենյակների վերացում
Սենյակների վերացում

Ես ավելացրել եմ ծածկագրի մեկ տող նախկինում (ընդգծված է):

Sugarcube- ի զանգվածները ունեն ներկառուցված գործառույթ, որը թույլ է տալիս անուններից ջնջել տարրերը: Այս դեպքում, երբ մենք $ wumpus- ին սենյակ հատկացնենք, կարող ենք ջնջել այդ սենյակը մեր $ սենյակների ցանկից: Այս գործառույթը, սակայն, անորոշ է: Այն չի աշխատի, քանի դեռ գործառույթի ելքը չի նշանակվել կամ ինչ -որ կերպ օգտագործվել: Դա հոգալու համար ես ստեղծել եմ ժամանակավոր փոփոխական _temp:

Sugarcube- ում ժամանակավոր փոփոխականները մեկ դոլարի ($) փոխարեն սկսում են ընդգծել (_): Դրանք օգտակար են, քանի որ հատվածը գործարկելուց հետո ջնջվում են, այնպես որ կարիք չկա անհանգստանալու փոփոխականների անունների համընկնումից:

$ Player սենյակը նույնպես ջնջում եմ $ roomlist- ից, բնականաբար:

Քայլ 7: Փորձարկում

Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում

Թեև մենք կարող էինք գործարկել ծածկագիրն այնպես, ինչպես հիմա է, դա շատ մանրակրկիտ փորձություն չէր լինի: Եթե գործարկենք ծածկագիրը և պարզենք, որ $ player և $ wumpus- ը նշանակված են տարբեր սենյակներում, մենք չգիտենք `դա կոդն աշխատե՞լն է, թե՞ պատահականություն: Իհարկե, մենք կարող ենք բազմաթիվ անգամ գործարկել ծածկագիրը և ենթադրել, որ եթե այն երկուսին էլ չտրամադրի նույն սենյակը, որը երբեք չի տա, բայց դա հավերժ կտևի, և դա դեռ 100% հավաստիացում չէ, որ դա երբեք չի կարող տեղի ունենալ:

Փոխարենը, մեզ անհրաժեշտ է ստուգման միջոց:

Մեր ներածական հատվածի վերևում ես ավելացրել եմ երեք տող, որոնք թույլ կտան մեզ տեսնել մեր $ wumpus, $ player և $ roomlist փոփոխականների արժեքները: Քանի որ մենք ստեղծում ենք մեր ծածկագիրը, մենք գիտենք, որ $ wumpus սենյակը և $ player սենյակը պետք է հեռացվեն $ room roomlist- ից:

Երբ մենք գործարկում ենք այս կոդը, մենք կարող ենք ստուգել `համոզվելու, որ դա այդպես է:

Քայլ 8: Տարօրինակություններ շաքարավազի և առարկաների հետ

Տարօրինակություններ շաքարաջրի և առարկաների հետ
Տարօրինակություններ շաքարաջրի և առարկաների հետ
Տարօրինակություններ շաքարաջրի և առարկաների հետ
Տարօրինակություններ շաքարաջրի և առարկաների հետ
Տարօրինակություններ շաքարաջրի և առարկաների հետ
Տարօրինակություններ շաքարաջրի և առարկաների հետ

Sugarcube- ի առարկաները մի փոքր տարօրինակ են: Թույլ տվեք սա ցույց տալ:

Մինչ ես սկզբնապես կառուցում էի այս նախագիծը, ես ուզում էի իմ սենյակների ցուցակը պահել $ saveroom փոփոխականում, մինչև որ սկսեի ջնջել սենյակները դրանից: Ես մտածեցի, որ այն հետագայում օգտակար կլինի:

Երբ այս կոդից ինչ -որ տարօրինակ պահվածք ստացա, ես ներածության էջին ավելացրի ևս մեկ տող, որպեսզի թույլ տամ նայել իմ $ saveroom փոփոխականին (երկրորդ նկարը):

Ես ցնցվեցի ՝ նկատելով, որ $ roomlist- ից ջնջած տարրերը նույնպես ջնջվել են իմ պահված ցուցակից: Սա կարող եք տեսնել գործողության մեջ երրորդ նկարում:

Դա պայմանավորված է նրանով, որ երբ դուք պատճենում եք այսպիսի զանգված, իրականում դուք Twine- ին չեք ասում, որ պատճենեք զանգվածը, այլ Twine- ին ասում եք, որ այս երկու փոփոխականները նույն զանգվածն են: Երբ դուք ինչ -որ բան եք անում զանգվածի միջոցով ՝ օգտագործելով մեկ փոփոխական, այն փոխում է նույն զանգվածը, որին նայում է մյուս փոփոխականը:

Մենք կարող ենք դա շտկել clone () ֆունկցիայի միջոցով:

Քայլ 9. Clone () գործառույթը

Clone () գործառույթը
Clone () գործառույթը
Clone () գործառույթը
Clone () գործառույթը

Դուք կարող եք կարդալ կլոնի () գործառույթի մասին Sugarcube փաստաթղթերի էջում:

«Մակերեսային» պատճենն այն է, ինչ մենք անում էինք նախկինում: Ամբողջ զանգվածի ամբողջական պատճենը ստեղծելու փոխարեն այն պարզապես ենթադրում է, որ ձեր փոփոխականը աշխատում է նույն զանգվածի հետ: Մակերեսային պատճենի փոխարեն, clone- ը կատարում է «խորքային» պատճեն, որն իրեն պահում է այնպես, ինչպես դուք կսպասեիք: Theանգվածի յուրաքանչյուր տարր պատճենված է նոր զանգվածի մեջ և ամբողջովին առանձնացված է բնօրինակից:

Եթե փորձարկենք այս նոր ծածկագիրը, ապա կգտնենք, որ այն աշխատում է ինչպես և սպասվում էր:

Իհարկե, կապ չունի $ սենյակների ցուցակ պահել, թե ոչ: Իմ նախագծի նպատակների համար ես չեմ պատրաստվում: Այս ամենը պարզապես խորը և մակերեսային պատճենները ցուցադրելու համար էր:

Քայլ 10: Դա հիմա է:

Այսքանը առայժմ
Այսքանը առայժմ

Մենք ավելացրել ենք կոդը, որը թույլ է տալիս մեր խաղացողին սկսել պատահական սենյակում: Բացի այդ, մենք վերացրել ենք մի սխալ, որտեղ խաղացողը սկսում էր «Վումպուսի» հետ նույն սենյակում:

Մենք սովորեցինք, թե ինչպես ստեղծել փոփոխականներից հղումներ, և թե ինչպես է զանգվածների պատճենումը վերաբերվում Sugarcube- ին:

Ամեն ինչ արագանում է, բայց մենք դեռ նոր ենք սկսում:

Ուրախ որս:

Խորհուրդ ենք տալիս: