Este exercício-programa deve ajudar vocês a adquirirem alguma familiaridade com o Morphic, o arcabouço para a construção de interfaces gráficas (GUIs) do Squeak. Seria até certo ponto impreciso chamar o Morphic de um "arcabouço para interfaces gráficas" já que se trata, na verdade, de um "arcabouço para a construção de objetos interativos" (chamados de morphs). Esses "objetos interativos" constituem a base de todos os elementos da interface do Squeak - desde janelas, botões e texto até imagens e figuras animadas. O arcabouço isola o programador e o usuário de grande parte dos detalhes que fazem parte do desenvolvimento de interfaces gráficas, gerenciando automaticamente atualização de tela, despacho de eventos, leiaute e operações como arrastar-e-soltar e composição.
Parte do poder do Morphic vem de uma linguagem (gráfica) de scripts
introduzida pelo arcabouço, que serve para a
especificação de certas
interações entre objetos (morphs). Outra parte desse
poder vem do fato
que o arcabouço prevê, em seu projeto, a
construção de interfaces
gráficas dotadas de vivacidade. Isso significa que os
objetos
da interface podem ser dotados de comportamentos ativos, atualizando-se
automaticamente e interagindo com outros objetos a cada instante . Os
"instantes" são discretos e podem ser encarados como
iterações
coletivas, compartilhadas por todos os morphs presentes no mundo
Smalltalk. Neste exercício-programa, vamos explorar a linguagem
de scripts e a possibilidade de construção de
interfaces dotadas de vivacidade.
Dirigindo
O
exercício-programa consiste num jogo de computador bastante
simples, em
que o jogador dirige um carrinho em uma pista circular. Para que seja
possível dirigir o carro, ele deve, obviamente, ser dotado de
dois
controles fundamentais: um para o ajuste de velocidade
(acelerador/freio) e outro para o ajuste de direção
(volante).
Recomendo que você utilize o próprio editor gráfico
do Morphic (aquele
que se parece com o PaintBrush) para criar a pista, o carrinho e o
volante. Para o controle de velocidade, você pode utilizar uma
instância da classe SimpleSliderMorph.
Você deve ainda manter um contador na tela, que mostra a
pontuação do
jogador até o presente instante. A pontuação deve
ser calculada da
seguinte maneira:
O volante deve responder a comandos como num veículo de
verdade.
Isso significa que, se o jogador estiver acelerando e virar o volante,
o veículo deve passar a descrever uma trajetória circular
até que a
posição do volante seja corrigida (não vale fazer
o carrinho
simplesmente apontar para a mesma direção do volante). O
volante deve
ser girado pelo botão "rotate", disponível no halo
do morph que o representa.
Por fim, você deve adicionar um controle para iniciar e suspender
o jogo.
Dicas
A princípio você não precisa, para fazer este EP,
escrever uma linha
sequer de código Smalltalk. Isso não quer dizer, no
entanto, que seja
proibido.
Veja mais ou menos como deve ficar o seu EP aqui.
Veja a página de ponteiros
para alguns tutoriais do Morphic.
O que entregar
Você deve entregar um arquivo contendo o projeto Squeak com a
sua
solução. Para criar um projeto basta clicar, com o
botão da esquerda
(também conhecido como botão vermelho no Squeak), em um
lugar "vazio"
do mundo e um menu deve aparecer. Nesse menu, clique em projects
-> create new morphic project. Para exportar seu projeto,
acesse, de dentro dele, o mesmo menu e clique em save project on
file....
Entregue também um pequeno relatório (formato PDF ou PS,
por favor)
documentando a sua solução - esse relatório
é especialmente importante
se você decidir escrever código.
O seu projeto deve funcionar no Squeak 3.7.
O trabalho deve ser feito preferencialmente em grupos de 2. Grupos individuais são aceitos (a contragosto :-). Recomendo fortemente que os pares desenvolvam os programas usando programação pareada (os dois programadores sentados lado a lado compartilhando o mesmo computador).