Სარჩევი:

ბმულები Twine in Twine With Sugarcube: 10 ნაბიჯი
ბმულები Twine in Twine With Sugarcube: 10 ნაბიჯი

ვიდეო: ბმულები Twine in Twine With Sugarcube: 10 ნაბიჯი

ვიდეო: ბმულები Twine in Twine With Sugarcube: 10 ნაბიჯი
ვიდეო: How To Create Pretty Twine - DIY Covered Wine Bottles Tutorial - Home 2024, ნოემბერი
Anonim
ბმულები ცვლადიდან Twine– ში Sugarcube– ით
ბმულები ცვლადიდან Twine– ში Sugarcube– ით

ძალიან მიხარია, რომ ისევ შემომიერთდი! ეს ნიშნავს, რომ ვუმპუსს ჯერ არ შეგიჭამია. კარგი!

მათთვის, ვინც არ იცნობთ, ეს არის გაკვეთილების ერთობლიობა, რომელსაც მე ვაკეთებ, რათა დავეხმარო ჩემს მომხიბვლელ და ძუნწი ბიძაშვილს თავის უფროს პროექტში. ეს გაკვეთილები უნდა იყოს მითითება იმისა, თუ რისი გაკეთება შეგიძლიათ Twine და Sugarcube– ის პროგრამირების ზოგიერთ მახასიათებელთან. თუ გსურთ გააგრძელოთ, აქ ნახავთ პირველ სამეურვეოს.

ბოლო გაკვეთილზე მე ავაშენე ოთახების მცირე ნაკრები, სადაც მოთამაშეს შეუძლია შეისწავლოს. მე დავამატე ვუმპუსის ობიექტი და შევქმენი ოთახის ზოგადი კოდი, რომ შეცვალონ ის, რაც ნაჩვენებია თითოეულ ოთახში იმის მიხედვით, თუ სად არის ვუმპუსი.

ნაბიჯი 1: შექმენით თქვენი მოთამაშე

შექმენით თქვენი მოთამაშე
შექმენით თქვენი მოთამაშე

ეს ნაბიჯი ძალიან მარტივია. არსებითად, მე ვიყენებ იმავე კოდს, როგორც ჩემი $ wumpus, მაგრამ ამის ნაცვლად $ player ცვლადი.

ნაბიჯი 2: ახალი ოთახის კოდი

ახალი ოთახის კოდი
ახალი ოთახის კოდი

შეიცვალა თქვენი ოთახის ზოგადი კოდი, ასე რომ $ player– ის ღირებულება არის ახლანდელი ოთახი. შემდეგ შეადარეთ $ wumpus $ player– ს ამჟამინდელი ოთახის ნაცვლად.

ეს არის უმნიშვნელო ცვლილება და არა მთლად აუცილებელი, მაგრამ მე მომწონს ჩემი კოდის ორგანიზება.

ნაბიჯი 3: ცვლადის ბმულის შექმნა

ცვლადიდან ბმულის შექმნა
ცვლადიდან ბმულის შექმნა

დაბოლოს, მინდა შევცვალო ბმული ჩემს საწყის ოთახში, რომელიც იცვლება $ player– ის ღირებულებიდან გამომდინარე. ეს შეიძლება გაკეთდეს Sugarcube- ში "" ფუნქციით. ამის შესახებ შეგიძლიათ მეტი წაიკითხოთ Sugarcube– ის დოკუმენტაციის გვერდზე.

ჩვენი ბრძანების შემდეგ პირველი სტრიქონი არის ფრაზა, რომელიც გამოჩნდება ჩვენს პასაჟში. მეორე არის პასაჟის სახელი, რომელსაც ჩვენ გვინდა დავუკავშიროთ. მე ვიყენებ "Hunt the Wumpus!" როგორც ჩემი ფრაზა, მაგრამ ჩვენ შეგვიძლია გამოვიყენოთ ჩვენი ცვლადი, თუ გვსურს მოთამაშემ იცოდეს სად მიდიან წინასწარ, მაგალითად:

ნაბიჯი 4: ტესტი

ტესტირება
ტესტირება
ტესტირება
ტესტირება

თქვენი კოდის შესამოწმებლად, თქვენ აღმოაჩენთ, რომ თქვენი ბმული შეიცვალა იმ ფრაზით, რაც ადრე დაწერეთ. მასზე დაჭერით მიგიყვანთ თქვენს თამაშში შემთხვევით ოთახში.

სამწუხაროდ, ამანაც შეიძლება პირდაპირ ვუმპუსის ოთახში მიგიყვანოთ! ამას ახლა დიდი მნიშვნელობა არ აქვს, მაგრამ რეალურ თამაშში ეს იქნება მყისიერი თამაში. ამის გამოსწორება გვჭირდება.

ნაბიჯი 5: დაამატეთ ოთახების სია

დაამატეთ ოთახების სია
დაამატეთ ოთახების სია

პირველ რიგში, ჩვენ ვაპირებთ შევქმნათ ოთახების სია, რათა გავამარტივოთ ოთახების მართვა. ამ მასივის გამოცხადებით, ჩვენ შეგვიძლია გამოვიყენოთ ის $ player და $ wumpus მნიშვნელობების დასადგენად კოდის გამეორების გარეშე. მას ასევე აქვს კიდევ ერთი უპირატესობა, რომელსაც შემდგომ განვიხილავთ.

ამ კოდის ტესტირება უნდა მოიქცეს ისე, როგორც ადრე იყო.

ნაბიჯი 6: ოთახების გაუქმება

ოთახების აღმოფხვრა
ოთახების აღმოფხვრა

მე დავამატე კოდის ერთი ხაზი ადრე (მონიშნულია).

მასივებს Sugarcube– ში აქვს ჩაშენებული ფუნქცია, რომლის საშუალებითაც შეგიძლიათ წაშალოთ ელემენტები მათგან სახელის მიხედვით. ამ შემთხვევაში, მას შემდეგ რაც $ wumpus- ს მივანიჭებთ ოთახს, ჩვენ შეგვიძლია მისი ოთახის $ ოთახის სიიდან წაშლა. თუმცა, ეს ფუნქცია არასრულყოფილია. ის არ იმუშავებს, თუ ფუნქციის გამომუშავება არ არის მინიჭებული ან გამოყენებული რაიმე ფორმით. რომ ვიზრუნო ამაზე, მე შევქმენი დროებითი ცვლადი _temp.

Sugarcube– ში დროებითი ცვლადები იწყება ხაზგასმით (_) დოლარის ნაცვლად ($). ისინი სასარგებლოა, რადგან ისინი წაიშლება პასაჟის გაშვებისთანავე, ასე რომ თქვენ არ უნდა ინერვიულოთ ცვლადი სახელების გადახურვაზე.

მე ასევე ვხსნი $ player ოთახს $ roomlist– დან, როგორც რა თქმა უნდა.

ნაბიჯი 7: ტესტირება

ტესტირება
ტესტირება
ტესტირება
ტესტირება

მიუხედავად იმისა, რომ ჩვენ შეგვეძლო კოდის გაშვება, როგორც ეს არის, ეს არ იქნება ძალიან საფუძვლიანი ტესტი. თუ ჩვენ ვუშვებთ კოდს და აღმოვაჩენთ, რომ $ player და $ wumpus ენიჭება სხვადასხვა ოთახებს, ჩვენ არ ვიცით, ეს იმიტომ ხდება, რომ კოდი მუშაობს თუ შემთხვევითობაა. რა თქმა უნდა, ჩვენ შეგვიძლია ბევრჯერ გავუშვათ კოდი და ვივარაუდოთ, რომ თუ ის არასოდეს დაუთმობს ორივეს ერთსა და იმავე ოთახს, რასაც არასოდეს გააკეთებს, მაგრამ ამას სამუდამოდ დასჭირდება და ეს ჯერ კიდევ არ არის 100% გარანტია იმისა, რომ ეს არასოდეს მოხდება.

ამის ნაცვლად, ჩვენ გვჭირდება შემოწმების გზა.

მე დავამატე სამი ხაზი ჩვენი შესავალი პასაჟის ზედა ნაწილში, რომელიც მოგვცემს საშუალებას ვნახოთ ჩვენი $ wumpus, $ player და $ roomlist ცვლადები. იმის გამო, თუ როგორ შევქმენით ჩვენი კოდი, ჩვენ ვიცით, რომ $ wumpus ოთახი და $ player ოთახი უნდა გამოირიცხოს $ roomlist– დან.

როდესაც ჩვენ ვუშვებთ ამ კოდს, ჩვენ შეგვიძლია შევამოწმოთ, რომ დავრწმუნდეთ, რომ ეს ასეა.

ნაბიჯი 8: უცნაურობები შაქრისუბნით და საგნებით

უცნაურობები შაქრისუბნით და საგნებით
უცნაურობები შაქრისუბნით და საგნებით
უცნაურობები შაქრისუბნით და საგნებით
უცნაურობები შაქრისუბნით და საგნებით
უცნაურობები შაქრისუბნით და საგნებით
უცნაურობები შაქრისუბნით და საგნებით

Sugarcube– ის საგნები ცოტა უცნაურია. ნება მომეცით ამის დემონსტრირება.

სანამ ამ პროექტს თავდაპირველად ვაშენებდი, მინდოდა ჩემი $ ოთახის სია შეენახა $ saveroom ცვლადში, სანამ დავიწყებდი ოთახების წაშლას. მივხვდი, რომ მოგვიანებით გამოდგება.

როდესაც მე მივიღე რაღაც უცნაური ქცევა ამ კოდისგან, მე დავამატე კიდევ ერთი ხაზი ჩემს შესავალ გვერდზე, რათა დამენახა ჩემი $ saveroom ცვლადი (მეორე სურათი).

შოკში ჩავვარდი, როდესაც აღმოვაჩინე, რომ $ roomlist– დან წაშლილი ელემენტები ასევე წაიშალა ჩემი შენახული სიიდან! ამის ნახვა შეგიძლიათ მესამე სურათზე.

ეს იმიტომ ხდება, რომ როდესაც თქვენ მასივს აკოპირებთ, თქვენ რეალურად არ ეუბნებით Twine– ს, რომ დააკოპიროს მასივი, თქვენ Twine– ს ეუბნებით, რომ ეს ორი ცვლადი ერთი და იგივე მასივია. როდესაც მასივს რაღაცას აკეთებთ ერთი ცვლადის გამოყენებით, ის ცვლის იმავე მასივს, რასაც სხვა ცვლადი უყურებს!

ამის გამოსწორება შეგვიძლია კლონის () ფუნქციით.

ნაბიჯი 9: ფუნქცია კლონი ()

კლონის () ფუნქცია
კლონის () ფუნქცია
კლონის () ფუნქცია
კლონის () ფუნქცია

კლონის () ფუნქციის შესახებ შეგიძლიათ წაიკითხოთ Sugarcube დოკუმენტაციის გვერდზე.

"ზედაპირული" ასლი არის ის, რასაც ჩვენ ადრე ვაკეთებდით. იმის ნაცვლად, რომ შექმნათ მთლიანი მასივის სრული ასლი, ის უბრალოდ მიიჩნევს, რომ თქვენი ცვლადი მუშაობს იმავე მასივთან. ზედაპირული ასლის ნაცვლად, კლონი () აკეთებს "ღრმა" ასლს, რომელიც იქცევა ისე, როგორც თქვენ მოელით. მასივის თითოეული ელემენტი გადაწერილია ახალ მასივში და სრულიად განცალკევებულია ორიგინალისგან.

თუ ჩვენ ვამოწმებთ ამ ახალ კოდს, აღმოვაჩენთ, რომ ის მუშაობს ისე, როგორც მოსალოდნელი იყო.

რა თქმა უნდა, არ აქვს მნიშვნელობა შეინარჩუნებთ $ roomlist- ს თუ არა. ჩემი პროექტის მიზნებისათვის, მე არ ვაპირებ. ეს ყველაფერი მხოლოდ ღრმა ზედაპირული ასლების საჩვენებლად იყო.

ნაბიჯი 10: ეს არის ახლა

ეს არის ახლა!
ეს არის ახლა!

ჩვენ დავამატეთ კოდი, რომელიც საშუალებას აძლევს ჩვენს მოთამაშეს დაიწყოს შემთხვევით ოთახში. გარდა ამისა, ჩვენ აღმოვფხვრათ ხარვეზი, სადაც მოთამაშე იწყებდა იმავე ოთახში ვუმპუსს.

ჩვენ ვისწავლეთ იმის შესახებ, თუ როგორ უნდა შეიქმნას ბმულები ცვლადებისგან და როგორ ხდება მასივის კოპირება Sugarcube– ის მიერ.

მოვლენები იზრდება, მაგრამ ჩვენ მხოლოდ ვიწყებთ!

Ბედნიერი ნადირობა!

გირჩევთ: