Skip to content

"Moving through a 'dungeon'": SugarCube (v2.0)#


"Moving through a 'dungeon'" uses a two-dimensional array for the "map" and two variables, X and Y, to track movement through the space. The 'Map System' passage checks the positions of X and Y relative to the "map" and writes the available directional movement options. Once a direction is clicked, the X and Y values are added or subtracted corresponding to the direction and the map is re-drawn again. Symbols are then placed on the map matching the walls, movement space, and player.



Twee Code#

:: StoryTitle
SugarCube: Moving through a Dungeon

:: UserStylesheet[stylesheet]
#map {
    font-family: monospace;

:: StoryInit
<<set $mapArray to

<<set $positionX to 1>>
<<set $positionY to 1>>

:: Location
<span id="map">
<<for $i to 0; $i lt $mapArray.length; $i++>>
    <<for $k to 0; $k lt $mapArray[$i].length; $k++>>
        <<if $k eq $positionX and $i eq $positionY>>
            <<print "P">>
        <<elseif $mapArray[$i][$k] eq 1>>
            <<print ".">>
        <<elseif $mapArray[$i][$k] eq 0>>
            <<print "#">>
        <<elseif $mapArray[$i][$k] eq 2>>
            <<print "E">>
    <<print "<br>">>

:: East
<<set $positionX += 1>>
<<include "Map System">>

:: West
<<set $positionX -= 1>>
<<include "Map System">>

:: South
<<set $positionY += 1>>
<<include "Map System">>

:: North
<<set $positionY -= 1>>
<<include "Map System">>

:: Map System
<<include "Location">>
<<if $mapArray[$positionY-1][$positionX] eq 1>>
[[North]] |
<<elseif $mapArray[$positionY-1][$positionX] eq 2>>
[[Exit]] |
<<if $mapArray[$positionY][$positionX+1] eq 1>>
[[East]] |
<<elseif $mapArray[$positionY][$positionX+1] eq 2>>
[[Exit]] |
<<if $mapArray[$positionY+1][$positionX] eq 1>>
[[South]] |
<<elseif $mapArray[$positionY+1][$positionX] eq 2>>
[[Exit]] |
<<if $mapArray[$positionY][$positionX-1] eq 1>>
[[West]] |
<<elseif $mapArray[$positionY][$positionX-1] eq 2>>
[[Exit]] |

:: Exit
Double-click this passage to edit it.

Twee Download

See Also#

Setting and Showing Variables, Conditional Statements, Modularity