Ficha Nº3 | Ensino da Programação | 2012-04-17 (criac.)

#### Objectivos: |
| O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de listas e algumas estruturas de controlo.
#### Recursos: |
| Recursos disponíveis para a realização da ficha: "Adivinho" por Rui Bento
#### Exercícios: |
| Torna o programa mais "inteligente" Cálculo de distâncias Jogo de Condução

### Exercício Nº1: Torna o programa mais "inteligente"

Fig.1: O Adivinho

A solução apresentada por Rui Bento para o problema do "Adivinha o número" está correcta.
No entanto, assume que o utilizador é bem comportado.

(a)O que é que precisaria de acrescentar para que o programa indicasse ao utilizador que está a fornecer respostas contraditórias?

(b)Tente acrescentar o novo raciocínio ao programa e teste-o.

### Exercício Nº2: Cálculo de distâncias

Fig.2: Comandos que poderás utilizar

Este é mais um pequeno problema que poderá servir mais tarde para ser incorporado num projecto maior.
Não é necessário criar nenhum cenário, apenas precisarás de um sprite. Usa um à tua escolha.
Tenta realizar as seguintes alíneas:

(a)Tenta fazer com que o sprite siga o rato (sempre que o botão deste é premido o sprite desloca-se para essa posição);

(b)Cria uma variável distância que vai sendo incrementada com o valor da distância percorrida pelo sprite (assume o pixel como a unidade de medida, usa o teorema de Pitágoras para a fórmula da distância ou o sensor que calcula a distância);

(c)Introduz mais realismo: o tempo de deslocação do sprite varia consoante a distância ao ponto de destino.

### Exercício Nº3: Jogo de Condução

Fig.3: Um possível cenário

A ideia deste exercício é implementares um jogo de condução por entre obstáculos que poderão ser imóveis ou móveis.
Tenta realizar as seguintes alíneas:

(a)Seleciona/cria um sprite para o teu jogo;

(b)Coloca-o em movimento contínuo fazendo com que seja reativo às setas do teclado para mudar de direção;

(c)Cria um conjunto de sprites "bons" e um conjunto de sprites "maus" (10 em cada conjunto);

(d)Faz com que apareçam em posições aleatórias do monitor;

(e)Quando o teu sprite tocar num sprite "bom" ganha 1 ponto e o sprite bom desaparece;

(f)Se tocar num sprite "mau" perde 1 ponto e o sprite mau desaparece;

(g)Faz com que os sprites bons e maus mudem de posição de x em x segundos;

(h)O jogo deverá terminar quando: a pontuação tiver atingido -3 ou 10 ou ainda se o utilizador carregar na tecla "P";

(i)Sabendo que as variáveis preservam os seus valores entre as execuções do programa, pensa como poderias implementar uma lista de pontuações obtidas: pretende-se guardar o nome do jogador, a data e a pontuação obtida.