O que são Variáveis?
Em Twine, variáveis são como “memórias” da história: guardam informações sobre o que o jogador fez, escolheu ou possui. Com elas você pode criar histórias que se adaptam às decisões do jogador.
No formato Harlowe, variáveis começam sempre com $ (dólar).
Tipos de Variáveis
(set: $nome to "Maria") /* string — texto */
(set: $vida to 100) /* number — número */
(set: $temChave to false) /* boolean — verdadeiro/falso */
(set: $inventario to (array:)) /* array — lista de itens */
Onde colocar o (set:)?
O comando(set:) pode ser posto no início de qualquer passage. O jogador não o vê — ele só executa silenciosamente quando o passage é visitado.
Exemplo Prático: O Quarto com Inventário
Passage: “Início”
(set: $temChave to false)
(set: $inventario to (array:))
(set: $visitouEscrivaninha to false)
Você acorda em um quarto misterioso.
[[Examinar a escrivaninha]]
[[Tentar abrir a porta]]
Passage: “Examinar a escrivaninha”
(set: $visitouEscrivaninha to true)
Sobre a escrivaninha há papéis espalhados e uma gaveta entreaberta.
Dentro da gaveta você encontra uma chave enferrujada.
(link: "Pegar a chave")[
(set: $temChave to true)
(set: $inventario to it + (array: "Chave enferrujada"))
Você guarda a chave no bolso.
[[Voltar ao centro do quarto]]
]
[[Ignorar a gaveta → Voltar ao centro do quarto]]
O que é 'it'?
Em Harlowe,it se refere ao valor atual da variável que está sendo modificada. $inventario to it + (array: "Chave") adiciona “Chave” ao array existente.
Passage: “Tentar abrir a porta”
Aqui usamos uma condição para verificar se o jogador tem a chave:
(if: $temChave is true)[
Você usa a chave enferrujada na fechadura. Com um clique, a porta se abre!
[[Entrar no corredor]]
](else:)[
A porta está trancada. Você precisa encontrar uma chave.
(if: $visitouEscrivaninha is false)[
Talvez valha a pena examinar os móveis do quarto...
]
[[Voltar e procurar]]
]
Exibindo o Inventário
Crie um passage chamado "Inventário" para mostrar os itens:
## Seus Itens
(if: (count: $inventario) is 0)[
Seu inventário está vazio.
](else:)[
(for: each _item, ...$inventario)[
• (_item)
]
]
[[← Voltar]]
Macros Úteis do Harlowe
| Macro | Função | Exemplo |
|---|---|---|
(set:) |
Define variável | (set: $x to 5) |
(if:)(else:) |
Condição | (if: $x > 3)[...] |
(link:) |
Link inline com efeito | (link: "Clique")[...] |
(print:) |
Exibe valor | (print: $nome) |
(count:) |
Conta itens em array | (count: $inv) |
(for:) |
Loop em array | (for: each _i, ...$arr)[...] |
(append:) |
Insere conteúdo na página | (append: ?inventario)[item] |
(replace:) |
Substitui conteúdo | (replace: ?status)[novo] |
Variáveis Numéricas: Sistema de Pontos
(set: $pontos to 0)
/* Em outros passages: */
(set: $pontos to it + 10) /* adicionar pontos */
(set: $pontos to it - 5) /* subtrair pontos */
/* Exibir pontos: */
Pontuação: (print: $pontos) pts
/* Condição com número: */
(if: $pontos >= 50)[
Você desbloqueou o final secreto!
[[Final Secreto]]
](else:)[
Continue explorando para ganhar mais pontos.
]
Atenção às aspas
Em Harlowe, strings (textos) usam aspas duplas"assim". Variáveis numéricas não usam aspas: (set: $vida to 100) — não "100".
Desafio Prático
Expanda a história do Tutorial 1 adicionando:
- Uma variável
$nomePersonagemdefinida no passage inicial - Um sistema de 3 itens coletáveis
- Um final diferente dependendo de quantos itens foram coletados
No próximo tutorial, veremos como usar CSS e imagens para estilizar visualmente suas histórias Twine.