next up previous
Next: Um Empurrão com essa Up: MAC-212 Laboratório Previous: Introdução

Carregar Mundo Virtual de Arquivo e Salvar Estado

Nesta linha de trabalho você fará duas coisas:

  1. Retirar do código Java a definição do mundo virtual. O programa deverá ler essa definição de um arquivo de texto, que pode ter sido escrito por um ``criador de jogos'' sem nenhum conhecimento de programação.
  2. Permitir que o estado do jogo seja salvo num arquivo e restaurado numa futura execução do jogo.

O ítem 2 acima é simples, graças aos recursos de serialização de objetos de Java. Basta garantir que o estado do jogo seja dado por um objeto (ou conjunto de objetos) serializável (isto é, que implemente a interface java.io.Serializable) e usar adequadamente os métodos writeObject() (da classe java.io.ObjectOutputStream) e readObject() (da classe java.io.ObjectInputStream).

Já o ítem 1 requer maior planejamento. Em vez de inventar um formato especial para o arquivo de texto com a definição do mundo virtual, usaremos XML (Extensible Markup Language), uma ``linguagem de marcação'' padronizada, que nos oferece as seguintes vantagens:

Eis um trecho de uma definição de um mundo virtual em XML:

      <place>
        <place-name>clareira</place-name>
        <place-description>
        Você está numa pequena clareira na floresta. A vegetação a
        seu redor é fechada e impenetrável. Ao leste se vê o início
        de uma trilha muito estreita. Ao sul há algo que parece ser a
        entrada de uma caverna.
        </place-description>
        <exit>
          <exit-name>sul</exit-name>
          <exit-destination>caverna</exit-destination>
        </exit>
        <exit>
          <exit-name>leste</exit-name>
          <exit-destination>trilha</exit-destination>
        </exit>
      </place>
Cada elemento do arquivo XML é demarcado por tags de início (com a forma <algum-tag>) e final (com a forma </algum-tag>). Os tags são dependentes da área de aplicação (você pode escolhê-los), assim como as regras de aninhamento de elementos. Essas regras dizem quais os elementos que precisam obrigatoriamente aparecer dentro de um certo elemento, quais os elementos que podem opcionalmente aparecer dentro de um certo elemento, etc. No caso de um elemento ``lugar'', é razoável que ele contenha um elemento ``nome'' e um elemento ``descrição'' (ambos obrigatórios), um conjunto (possivelmente vazio) de elementos do tipo ``saída'', e o que mais for conveniente (elementos para coisas, personagens, etc). Esse tipo de regra é especificada numa Document Type Declaration (DTD) específica para uma área de aplicação.



Subsections
next up previous
Next: Um Empurrão com essa Up: MAC-212 Laboratório Previous: Introdução
Francisco Reverbel
2002-05-10