NINE.js

JavaScript library to write interactive stories

Project Image

NineJs is a library designed to simplify the creation of interactive narratives through programming.

This library was developed as my Computer Science final project. At the time, there were multiple ways to write interactive stories, but no libraries available in Portuguese. Nine was introduced as a way to teach people how to code while writing stories and exercising their creativity.

Here’s a snippet of a program written in NineJs:

function configuracoes() {
  titulo("Mais Procurado");
  autor("Natalia Pinheiro");
}
let personagem = {
  nome: "Cesar",
  sobrenome: "Cairo",
};
let vilao = {};
  function historia() {
  ler("Qual é o seu nome?", sequencia);
}
function sequencia(nome) {
  vilao.nome = nome;
  adicionarTexto("Era como se os ventos pudessem sentir.");
  adicionarTexto(
    "À simples menção de que " +
      vilao.nome +
      " entraria no prédio foi o suficiente para que os ventos mudassem de direção, tornassem-se mais fortes, mais intensos, a fim de tornar o momento especialmente memorável."
  );
  adicionarTexto(
    "Ele tinha uma presença excepcionalmente marcante. Talvez fosse o seu chapéu, ou a sua postura. Não. Definitivamente o chapéu. Um fedora cinza escuro levemente inclinado para a direita. Dava ao homem um ar misterioso e suspeito. Certamente era de propósito."
  );
  adicionarSecao("Parte I");
  adicionarTexto(
    "Ao entrar nas instalações da agência de segurança nacional, " +
      vilao.nome +
      " foi imediatamente reconhecido. Como poderia ter sido diferente? O número três da lista dos mais procurados da ASN não passaria despercebido."
  );
  adicionarTexto(
    `Entre as dezenas de homens e mulheres armados que o abordaram, estava você. ${personagem.nome} ${personagem.sobrenome}. O novato. Inexperiente. Havia se juntado à força tarefa havia apenas, como, cinco ou seis semanas.`
  );
  const _agirConfiante = criarOpcao("Agir com confiança", agirConfiante);
  const _agirNervoso = criarOpcao("Agir com nervosismo", agirNervoso);
  adicionarOpcoes([_agirConfiante, _agirNervoso]);
}
function agirConfiante() {
  personagem.confiante = true;
  adicionarTexto(
    "– Parado! Coloque as mãos onde eu possa ver! – Disse você, assumindo a liderança armada."
  );
  vilaoSeAjoelha();
}
function agirNervoso() {
  personagem.confiante = false;
  adicionarTexto(
    "Um dos outros agentes assumiu a liderança, dando passos confiantes para a frente, e apontando a arma para " +
      vilao.nome +
      "."
  );
  vilaoSeAjoelha();
}

Ornament
Ornament