M.P.-I - 2000/01 - Trabalho Prático Nr. 2 | |
---|---|
[ DI/UM ] |
Este trabalho deve ser realizado por grupos com um máximo de três alunos. O trabalho deve ser entregue até ao dia na Recepção do Departamento de Informática (ext. 4430) e nele deve constar a listagem do código desenvolvido assim como um pequeno relatório.
Na realização de um projecto de software é muita vezes adequado fazer uso de ferramentas/bibliotecas vocacionadas para funcionalidades específicas (e.g. cálculos científicos; interacção com o utilizador; etc.).
O objectivo deste trabalho é o de realizarmos uma interface gráfica para uma pequena aplicação (um jogo) na linguagem HASKELL. Para isso iremos fazer uso de uma biblioteca que nos permita aceder a uma ferramenta vocacionada para esse fim: o TCL/TK.
Um segundo objectivo será o de aprofundar o conhecimento da utilização das mónadas, já que essas bibliotecas de acesso a ferramentas externas fazem (tipicamente) utilização dessas estruturas (para regular a produção de efeitos laterais -- tal como a mónada IO).
Para focar o trabalho no objectivo declarado vamos considerar um jogo que já foi objecto de um trabalho na disciplina de Paradigmas de Programação I (ano de 1999/2000): o jogo Vexed. Quem não realizou a disciplina nesse ano ou não realizou esse trabalho, pode encontrar a sua descrição assim como uma possível resolução na secção seguinte.
Recorde-se que nesse trabalho foi realizada só a ``componente computacional'' desse jogo (cf. Aplicação no diagrama ao lado), com uma interface em ``modo texto'' muito pobre. O que se pretende agora, então, é realizar uma interface gráfica (cf. Interface no diagrama ao lado) para o X Windows ou para o Windows 95/98/NT que torne mais atractiva a utilização da aplicação realizada.
Desta forma se toma contacto com um caso particular da chamada arquitectura cliente-servidor, em que um programa - o servidor - presta serviços a um outro programa, que a ele recorre (o cliente). Esta arquitectura é hoje um dos paradigmas mais comuns para o desenho de aplicações informáticas complexas.
O jogo Vexed é um ``puzzle'' que existe disponível para o PALM PILOT. Por curiosidade, pode consultar a página dessa aplicação, onde existem alguns ``screeshots'' que podem inspirar o desenvolvimento da interface gráfica. A página encontra-se em spacetub.tsx.org/Projects/Vexed/index.shtml.
O enunciado do trabalho de PP1 referido encontra-se em www.di.uminho.pt/ jbb/pp1/9900/vexed.html.
Aí é apresentado o funcionamento pretendido para o jogo Vexed. Uma possível implementação encontra-se no ficheiro vexed.hs disponível no material pedagógico da disciplina.
Existem várias alternativas para a escolha da biblioteca gráfica a utilizar, todas disponíveis a partir de www.haskell.org. Recomenda-se a utilização da FRANTK. Na página dessa ferramenta (www.haskell.org/FranTk encontra-se disponível o código da biblioteca assim como o manual de utilização. É conveniente também tomar em atenção a página de «BUGS» disponível porque dá indicações importantes relativamente à utilização da biblioteca no Hugs (umas opções da linha de comando que é necessário fornecer).
Para os utilizadores do sistema Windows poderá ser também necessário instalar o TCL/TK, disponível em www.scriptics.com.