"Arrays": SugarCube (v2.18)#
Summary#
Arrays are a collection of values. Each value in an array is assigned an index, which is a number that corresponds to the position of that item or element. Arrays have many built-in methods and other features, and SugarCube adds many more. Arrays can be created by assigning a variable to the array literal, which is a pair of brackets ([]
): <<set $myArray to []>>
.
Specific elements can be accessed in an array by following its variable name with a pair of brackets containing the index to check. Testing whether an array contains an element can be done using the Array#includes() function; adding new items can be done using the Array#push() function.
Example#
Twee Code#
:: StoryTitle
Arrays in SugarCube
:: StoryInit
/% it is always a good idea to initialize your variables, but with arrays it is particularly important %/
<<set $inventory to []>>
<<set $chest to ['a shield', 'a suit of armor']>>
<<set $chestOpen to false>>
:: PassageHeader
You are currently carrying:
/% if the inventory contains nothing, show "nothing" %/\
<<if $inventory.length is 0>>\
nothing.
<<else>>\
/% the Array#join() method combines all array elements into a single string, with each element separated by the argument given %/\
<<= $inventory.join(', ')>>.
<</if>>
-----
:: Start
/% we use the Array#push() method to add new items to our inventory array %/\
You find yourself inside a small room. In the corner, you see a sword, and decide to pick it up.
<<run $inventory.push('a sword')>>\
[[Continue|hallway]]
:: hallway
You see a chest here in the hallway. \
<<if not $chestOpen>>\
Do you want to open it?
<<link [[Open the chest.|chest]]>>
/% concatenating the arrays and setting the result to $inventory moves all the items from the $chest array into the $inventory array %/
<<set $inventory to $inventory.concat($chest)>>
<<set $chestOpen to true>>
<</link>>
<<else>>\
It's open, and there's nothing inside.
<</if>>
[[Move on.|dart trap]]
:: chest
You open the chest and find <<= $chest.join(' and ')>>.
[[Okay.|previous()]]
:: dart trap
Several darts shoot out of a wall at you!
/% we can check to see if the player has a given item with Array#includes() %/
<<if $inventory.includes('a shield')>>\
Luckily, your shield will protect you.
<<else>>\
With no way to defend yourself, you die.
<</if>>