U.Minho M.P.-I - 2000/01 - Trabalho Prático Nr. 2
[ DI/UM ]

Utilização de bibliotecas gráficas em HASKELL

Preâmbulo

Este trabalho deve ser realizado por grupos com um máximo de três alunos. O trabalho deve ser entregue até ao dia 6 de Dezembro 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.

Objectivo

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).

Descrição do Trabalho

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. Esquema de arquitectura Cliente-Servidor 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.

Recursos

Sobre o Jogo

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.

Trabalho Prático de PP1 (1999/2000)

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.

Biblioteca Gráfica

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).

TclTk

Para os utilizadores do sistema Windows poderá ser também necessário instalar o TCL/TK, disponível em www.scriptics.com.


Voltar à página principal de MP-I.
Outras disciplinas leccionadas pelo DIUM

J. N. Oliveira
2000-11-15