Trabalho Final de Lapro I

A Lenda do Cálice Sagrado da Programação


1. Introdução

        A lenda surgiu no século XIX muito antes de surgir o primeiro computador eletrônico, numa época em que os pesquisadores estavam desenvolvendo suas máquinas e seus primeiros algoritmos. Conta a lenda que em um templo em algum lugar das Ilhas Britânicas estaria guardado o Cálice Sagrado da Programação -  sonho de qualquer cientista da computação. De acordo com a lenda, o cálice possuiria o poder de dotar aquele que nele beber de uma mente brilhante, tornando-o capaz de encontrar uma solução algorítmica para qualquer problema, bem como, programar em qualquer linguagem e, ainda, criar para os algoritmos conhecidos versões mais eficientes. Entretanto, para obter o cálice diziam que a pessoa deveria passar por uma série de provas difíceis e arriscadas, repletas de perigos e enigmas indecifráveis. Comentavam também que o cálice eram protegido por um ser imortal e imbatível. Haviam rumores que aquele que o derrotasse se tornaria o novo guardião do cálice, transformando-se também em um ser imortal.

        Na mesma época que a lenda se tornou conhecida, três cavaleiros de Camelot partiram para as Ilhas Britânicas a procura do cálice sagrado. Os três cavaleiros eram conhecidíssimos em Camelot pelos seus efeitos algorítmicos: Sir Percival Cohen, Sir Gawain Pinho e Sir Galahad Oliveira.O desejo dos cavaleiros eram informatizar Camelot e transformá-la no centro cultural da programação. Sonhavam com o reino da boa programação. Conta a lenda, também, que Indiana Gates, um programador também famoso mas com intenções menos nobres ficou sabendo da aventura. Gates havia se tornado famoso por distribuir versões de programas com bugs. Prática essa abominada pelos cavaleiros.

        Gates mais ardiloso enganou os cavaleiros, dispersando-os e, com isso, chegou primeiro ao templo do cálice. Dizem os seus descedentes, que Gates não conseguiu obter o cálice pois uma das provas era construir um programa sem bugs, o que Gates não conseguiu. Seu programa pendurou e antes disso apresentou na tela a mensagem "Você executou uma operação ilegal!".

        Os últimos boatos a respeito do destino dos cavaleiros foram que Sir Percival Cohen durante sua busca infindável pelo cálice se envolveu em uma batalha na qual foi ferido. Por ocasião de seus ferimentos, ele conheceu a princesa Elisa com a qual se casou e mudou-se para o Brasil. Sir Gawain Pinho depois de muito vagar atrás do cálice achou que era mais fácil localizar Sir Percival Cohen no Brasil do que o cálice nas Ilhas Britânicas. Dizem que eles fundaram uma escola de programação no Rio Grande do Sul. Nunca mais se ouviu falar de Galahad Oliveira, mas há quem diga que ele encontrou o cálice e hoje é o seu guardião. Há ainda muita outra versão, dizem que os cavaleiros se reencontraram e acharam o templo. Passaram por todas as provas e derrotaram juntos o guardião do cálice. Assim, tornaram-se os novos guardiões do cálice e levaram o objeto sagrado para o Brasil. O porquê deles partirem para o Brasil?  Dizem que foi pela qualidade da comida.

        Vamos acreditar no último boato, afinal 3 guardiões tornam a aventura mais interessante. Você não gostaria de encontrar o Cálice Sagrado da Programação e se tornar um gênio da programação ? Pois bem, crie um jogo em C que simule essa aventura.

2. Jogo

        O jogo deve ser composto dos seguintes elementos:

        O templo é um tabuleiro de 21 linhas por 21 colunas. A linha 0 é a linha mais de cima e a linha 21 é a mais de baixo da tela.
No início do jogo, o jogador (você) é colocado em uma coluna aleatória da linha 21 do tabuleiro e o cálice em qualquer coluna da linha 0. Ao longo do tabuleiro, entre as linhas 3 e 20, se encontrarão espalhados os enigmas, os obstáculos e os buracos. Os guardiões ficarão nas linhas 0, 1 e 2.

        Vamos exemplificar melhor, considere:

    A figura abaixo é apenas uma ilustração do templo. Note que o tabuleiro não possui as dimensões exigidas e os componentes E, B e X não respeitam as quantidades definidas.
 
K O
C
P
B B
X X X X X X X X X X X X X X X E E
B
E B
B E X X X X X X X X X X X X X X X
B E E E
X X X X X X X X X X X X X X X B
B
B E E B
E B
B E
X X X X X X X X X X X X X X X
B B B
J B E B
        Sir Percival Cohen, Sir Gawain Pinho e Sir Galahad Oliveira são os guardiões. A posição inicial dos guardiões é aleatória, entretanto Sir Gawain Pinho protege a linha 2, Sir Percival Cohen a linha 1 e Sir Galahad Oliveira a linha 0. Cada cavaleiro pode se movimentar apenas em sua linha, ou seja, para esquerda ou para direita. Eles ainda possuem a capacidade de perceber o jogador  a uma distância mínima de 20 posições em qualquer direção. Basta um guardião perceber o jogador para que os demais sejam avisados. Os guardiões andam de 2 em 2 posições. Os guardiões tentarão alcançar o jogador antes dele chegar ao cálice sagrado.  Se o jogador passar pelos cavaleiros, ele se tornará o novo guardião (vencedor) e o jogo terminará.         O jogador se move através do tabuleiro em busca do cálice sagrado da programação. Ele deve evitar buracos, responder a enigmas e desviar de obstáculos. E ainda, passar pelos guardiões sem ser tocado por eles. O jogador se movimenta em qualquer direção de 1 em 1 posição.

        Para realizar a movimentação tanto do jogador quanto dos guardiões, você pode usar em seu programa as setas do teclado ou definir algo como c para cima, b para baixo, e para esquerda e d para direita. Evite que os movimentos ultrapassem as dimensões do tabuleiro.

        São perguntas-respostas sobre programação que devem ser buscadas de um arquivo texto. Construa um arquivo texto com no mínimo 30 perguntas. Durante o jogo são buscadas aleatoriamente apenas 10 e dispostas randomicamente no tabuleiro. Quando o jogador "pisa" em uma posição que possui um enigma, ele só conseguirá se movimentar se respondê-lo. Os enigmas não são visíveis no tabuleiro. Quando o jogador erra ele é penalizado, ele voltará para trás 3 posições. Quando acerta, pode se movimentar em qualquer direção. Tome cuidado ao penalizar o jogador, evitando colocá-lo sobre um obstáculo ou além as dimensões do tabuleiro.

        O arquivo texto pode conter uma linha com a pergunta e as 5 subseqüentes com as respostas. Sendo que a primeira é sempre a correta. Por exemplo:

        Ao colocar na tela embaralhe as respostas e identifique-as com a,b,c,d e e. Exemplo:

        Qual dos comandos abaixo é um comando de repetição ?

        Como você pode notar, as perguntas serão sempre objetivas. Lembre-se de guardar a alternativa que possui a resposta correta.         Os obstáculos são posições bloqueadas. Podem ser entendidos como paredes. Devem se gerados aleatoriamente e bloqueiam 15 (quinze)  posições consecutivas do tabuleiro, devem ser contornados pelo jogador. Devem existir no tabuleiro 6 obstáculos dispersos. Cuide para não bloquear completamente uma única linha.         Os buracos são invisíveis e fazem o jogador retornar para a linha 79 do tabuleiro. Se o jogador cair em mais de  3 buracos, ele perde o jogo. O tabuleiro deve ter 20 buracos escondidos.     É protegido pelos guardiões. Tome cuidado para que a posição inicial do cálice não seja sobreposta pela do guardião Oliveira. Tome esse cuidado também para os demais componentes do jogo.         Toda vez que um jogador ganhar, seu nome deve ser guardado em um arquivo junto com a data em que ele se tornou o novo guardião. Por isso, no inicio do jogo solicite sempre o nome do jogador. Deve existir uma opção no jogo que permite visualizar o nome de todos os vencedores até aquele momento.
3. Critérios de Avaliação 4. Datas de Entrega

    Primeira parte - Valor 3.0 pontos - Entrega em 14/11/2002
    Se a entrega for realizada em 07/11/2002 o aluno receberá um bônus de 1.0, caso esta parte esteja 100% correta.

        Nesta parte o programa deverá:


    Segunda parte - Valor 7.0 pontos - Entrega em 28/11/2002

        Desenvolver o restante do trabalho

5. Dicas  em construção