,,,|game>[(display: "game")]
(display: "keyboard")(save-game: "save"){
(display: "word selector")<!-- Sets the correct word to guess. -->
(set: $character to 1)<!-- The current character being guessed. -->
(set: $guess to "——————")<!-- The current player guess. -->
(set: $currentGuess to " ")<!-- Only used when handling button presses. -->
(set: $guesses to (a:))<!-- The array of previous guesses. -->
(set: $guessCharacter to 1)<!-- Equivalent to $character, but for past guesses: determines green backgrounds. -->
(set: $greens to (ds:))<!-- A dataset of all green letters. -->
(set: $yellows to (ds:))<!-- A dataset of all yellow letters. -->
(set: $greys to (ds:))<!-- A dataset of all grey letters. -->
(set: $finished to false)<!-- Allows enter key presses. -->
<!-- Variables just to hold the letters on the keyboard. -->
(set: $row1 to "QWERTYUIOP")
(set: $row2 to "ASDFGHJKL")
(set: $row3 to "ZXCVBNM")
}
|winText>[]
(char-style:(css: "padding: 0px 5px 0px 5px;border: 1px solid darkgrey;margin: 0px 3px 0px 3px;outline-style: solid;outline-color: white;"))[{
(set: $guessCharacter to 1)
(if: $guesses's length >= 1)[(for: each _letter, ...1st of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 0)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
}
{
(set: $guessCharacter to 1)
(if: $guesses's length >= 2)[(for: each _letter, ...2nd of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 1)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
}
{
(set: $guessCharacter to 1)
(if: $guesses's length >= 3)[(for: each _letter, ...3rd of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 2)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
}
{
(set: $guessCharacter to 1)
(if: $guesses's length >= 4)[(for: each _letter, ...4th of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 3)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
}
{
(set: $guessCharacter to 1)
(if: $guesses's length >= 5)[(for: each _letter, ...5th of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 4)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
}
{
(set: $guessCharacter to 1)
(if: $guesses's length >= 6)[(for: each _letter, ...6th of $guesses)[
(if: $guessCharacter of $word is _letter)[(background: green)[_letter](set: $greens to it + (ds: _letter))
]
(elseif: $word contains _letter)[(background: yellow)[_letter](set: $yellows to it + (ds: _letter))
]
(else:)[(background: grey)[_letter](set: $greys to it + (ds: _letter))]
(set: $guessCharacter to it + 1)]
]
(elseif: $guesses's length is 5)[(unless: $guess is $word)[(display: "current guess line")](else:)[——————]]
(else:)[——————]
(replace: " ")[]
}]
{
(if: $guess is $word)[
(set: $streak to it + 1)
(if: $streak > $bestStreak)[(set: $bestStreak to $streak)]
(rerun: ?header)
(replace: ?winText)[(t8n: "fade-up")[''(if: $guesses's length is 1)[Genius](elseif: $guesses's length is 2)[Magnificent](elseif: $guesses's length is 3)[Impressive](elseif: $guesses's length is 4)[Splendid](elseif: $guesses's length is 5)[Great](elseif: $guesses's length is 6)[Phew]'']]
(set: $finished to true)
(t8n: "fade-down")[(link: "Again?")[(display: "startup")(go-to: "Twinedle")]]]
(if: $guesses's length is 6 and $guess is not $word)[
(set: $streak to 0)
(rerun: ?header)
(replace: ?winText)[(t8n: "fade-up")[''$word'']]
(t8n: "fade-down")[(link: "Again?")[(display: "startup")(go-to: "Twinedle")]]]
}|currentGuess>[(for: each _letter, ...$guess)[_letter]]{
(enchant: "—", (text-colour: (rgba: 255,255,255,0.001)))
|header>[Streak:—$streak———Best:—$bestStreak]
}
---
(text-style:"expand")[=(char-style:(css: "padding: 0px 5px 0px 5px;border: 1px solid darkgrey;border-style: none;border-radius: 2px;background-color: lightgrey;margin: 0px 2px 0px 2px;outline-style: solid;outline-color: white;"))[
|keyboard>[(text-colour: black)[{
(for: each _key, ...$row1)[
(if: $greens contains _key)[(text-colour: green)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $yellows contains _key)[(text-colour: yellow)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $greys contains _key)[(text-colour: grey)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(else:)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]
]
}
{
(for: each _key, ...$row2)[
(if: $greens contains _key)[(text-colour: green)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $yellows contains _key)[(text-colour: yellow)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $greys contains _key)[(text-colour: grey)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(else:)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]
]
}
{
(link-repeat: "↵")[(if: $character > 6 and $finished is false)[(set: $guesses to it + (a: $guess))(unless: $guess is $word)[(set: $guess to "——————")](set: $character to 1)(go-to: "Twinedle")]](for: each _key, ...$row3)[
(if: $greens contains _key)[(text-colour: green)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $yellows contains _key)[(text-colour: yellow)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(elseif: $greys contains _key)[(text-colour: grey)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]]
(else:)[
(link-repeat: _key)[(if: $character < 7)[(set: $guess's $character to _key)(set: $character to it + 1)(rerun: ?currentGuess)]]]
](link-repeat: "⌫")[(unless: $character <= 0)[(unless: $character is 1)[(set: $character to it - 1)](set: $guess's $character to "—")](rerun: ?currentGuess)]
(replace: " ")[]
(rerun: ?footer)
}]
]]
---
{
|footer>[(replace: " ")[]]
}(set: $word to (either: "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA", "BANANA","PISTOL", "ORANGE", "MONKEY", "SPIDER", "GRAPES", "CHERRY", "LYCHEE", "PAPAYA")){
(set: $streak to 0)
(set: $bestStreak to 0)
(if: (saved-games:) contains "save")[(load-game: "save")]
(else:)[(go-to: "Twinedle")]
}