Do fim pro começo


Um dos truques mais espertos, pra quem vai construir uma narrativa ou adventure, é desenvolver primeiro o final do jogo, tipo: o que irá acontecer com o jogador no final da partida?

No caso aqui, serão duas possibilidades ou ele não quebra a maldição e vira um lobisomem, ou quebra e aí segue a vida normalmente. Atenção para o fato de que ainda não foi produzido nenhum script, nem foi definido como será o processo de busca pela solução. Estamos tratando apenas da página de encerramento do jogo.

Tradicionalmente, ao resolver parar de jogar ou quando chega no final (solucionando ou não a questão principal) o jogador é confrontado com a pergunta: "quer jogar novamente?".

No modo operacional 4 não existe o botão default de encerramento e essa questão ficará no limbo dos procedimentos do executável, até que a gente tome uma providência. Então, antes de qualquer coisa iremos adicionar um "botão" fim, close, "X", etc. Por coincidência já existe uma figura de X neste tutorial.

Recapitulando a diagramação do jogo, temos uma largura de 900px, com margens à esquerda e à direita de 100px. Isso nos dá um local fora da área de apresentação do jogo para colocar botões e controle que, de certa forma, não estão diretamente ligados ao enredo.

Levando em consideração as medidas do "X", fica fácil posicioná-lo no canto inferior direito ou na posição que você achar mais adequada. Agora é preciso inserir em todos os scripts que representam posição, objetos ou ações, a instrução:

shape= sair.png,840,350,45,69,final

Duas considerações importantes: a primeira é que criaremos um script chamado final.scp para resolver a questão de encerrar o funcionamento do programa. Ele pode ter a seguinte programação:

//=== Encerra o jogo ==============================
  setmode= 4,900,420
  telpos= aber.png
  refresh
  terminate 10

Antes de "fechar" o executável, mostramos novamente a tela inicial (telpos e refresh) e após 10 segundos o programa é encerrado.

A segunda consideração é de ordem prática: acrescentar a instrução de saída em todos os scripts relevantes, ainda que no momento eles sejam poucos, pode ser um trabalho braçal chato mas dá pra fazer. Agora imagine se daqui a algum tempo a gente resolva colocar o "X" no topo da tela, ou acrescentar um botão de configuração, ou um menu de opções, ou mostrar automaticamente os objetos que o jogador tem, ou qualquer outra coisa que a nossa imaginação quiser fazer. Trabalhão dobrado, não é mesmo?

Nem tanto. Ao invés de apenas acrescentar o shape=, no final dos scripts criamos um script chamado comum.scp e é nele que colocamos o shape=. Dai em diante podemos acrescentar então a instrução:

gosub comum

Tal script ficaria então assim:

//=== Procedimento comuns a posições ==============
  shape= sair.png,840,350,45,69,final
  return

Ainda falta a questão da pergunta "Quer jogar novamente?" . Vamos criar então um script chamado saida.scp, que irá processar tudo que o for relevente numa eventual saida do jogo.

//=== Procedimentos de finalização do jogo ========
  setmode= 4,900,420
  clearscreen
  cleartxt
  shape= aber.png,100,0,700,326
  printx Quer jogar novamente?,100,350,700,30
  shape= tic.gif,100,390,20,30
  shape= sim.gif,130,390,60,30,start
  shape= nao.gif,200,390,60,30,final

Note que foi mostrada novamente ao jogador a tela de abertura do jogo e no rodapé a pergunta, com as possibilidades sim ou não. Caso o jogador clique em não, o script final.scp será executado. Caso ele clique em sim, o script start.scp fará tudo começar do zero.