<?xml version="1.0" encoding="ISO-8859-1"?>
<AulaPrática xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="aulaP.xsd">
	<meta>
		<disciplina>Ensino da Programação</disciplina>
		<datas>
			<data tipo="criac.">2012-04-17</data>
		</datas>
		
		<objectivos>
			<para>O objectivo principal desta ficha é familiarizar o aluno com a utilização e manipulação de listas e algumas estruturas de controlo. </para>
		</objectivos>
		<recursos>
			<documento url="../programas/Adivinho.sb">"Adivinho" por Rui Bento</documento>
		</recursos>
	</meta>
	<corpo>
		<exercício>
			<título>Torna o programa mais "inteligente"</título>
			<enunciado>
				<imagem>
					<legenda>O Adivinho</legenda>
					<grafico path="imagens/adivinho.png"/>
				</imagem>
				<para>A solução apresentada por Rui Bento para o problema do "Adivinha o número" está correcta.</para>
				<para>No entanto, assume que o utilizador é bem comportado.</para>
				
				<alíneas>
					<alínea>O que é que precisaria de acrescentar para que o programa indicasse ao utilizador que está a fornecer respostas contraditórias?</alínea>
					<alínea>Tente acrescentar o novo raciocínio ao programa e teste-o.</alínea>
				</alíneas>
			</enunciado>
		</exercício>
		<exercício>
			<título>Cálculo de distâncias</título>
			<enunciado>
				<imagem>
					<legenda>Comandos que poderás utilizar</legenda>
					<grafico path="imagens/comandos-rato.png"/>
				</imagem>
				<para>Este é mais um pequeno problema que poderá servir mais tarde para ser incorporado num projecto maior.</para>
				<para>Não é necessário criar nenhum cenário, apenas precisarás de um sprite. Usa um à tua escolha.</para>
				<para>Tenta realizar as seguintes alíneas:</para>
				<alíneas>
					<alínea>Tenta fazer com que o sprite siga o rato (sempre que o botão deste é premido o sprite desloca-se para essa posição);</alínea>
					<alínea>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);</alínea>
					<alínea>Introduz mais realismo: o tempo de deslocação do sprite varia consoante a distância ao ponto de destino.</alínea>
				</alíneas>
			</enunciado>
		</exercício>
		<exercício>
			<título>Jogo de Condução</título>
			<enunciado>
				<imagem>
					<legenda>Um possível cenário</legenda>
					<grafico path="imagens/cenario-conducao.png"/>
				</imagem>
				<para>A ideia deste exercício é implementares um jogo de condução por entre obstáculos que poderão ser imóveis ou móveis.</para>
				<para>Tenta realizar as seguintes alíneas:</para>
				<alíneas>
					<alínea>Seleciona/cria um sprite para o teu jogo;</alínea>
					<alínea>Coloca-o em movimento contínuo fazendo com que seja reativo às setas do teclado para mudar de direção;</alínea>
					<alínea>Cria um conjunto de sprites "bons" e um conjunto de sprites "maus" (10 em cada conjunto);</alínea>
					<alínea>Faz com que apareçam em posições aleatórias do monitor;</alínea>
					<alínea>Quando o teu sprite tocar num sprite "bom" ganha 1 ponto e o sprite bom desaparece;</alínea>
					<alínea>Se tocar num sprite "mau" perde 1 ponto e o sprite mau desaparece;</alínea>
					<alínea>Faz com que os sprites bons e maus mudem de posição de x em x segundos;</alínea>
					<alínea>O jogo deverá terminar quando: a pontuação tiver atingido -3 ou 10 ou ainda se o utilizador carregar na tecla "P";</alínea>
					<alínea>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.</alínea>
				</alíneas>
			</enunciado>
		</exercício>
	</corpo>
</AulaPrática>
