Sie sind auf Seite 1von 6

TRABALHO PRTICO:

Seu Nome

FROG

Belo Horizonte, Novembro de 2013

INTRODUO:

O trabalho prtico exige a criao de um programa capaz de implementar um jogo na linguagem C utilizando a biblioteca grfica allegro. O jogo a ser desenvolvido o "Frog", em que o objetivo levar um sapo na ponta inferior da tela para a parte superior, sendo que para isso, necessrio desviar de diversos carros que atravessam a tela do jogo. Para o desenvolvimento deste trabalho, necessrio conhecimentos bsicos da linguagem C, como funes, loops, e vetores, alm do conhecimento das funes reservadas da biblioteca allegro.

IMPLEMENTAO:

Funes implementadas: void cria_veiculos(): Procedimento que gera aleatoriamente a velocidade, o tamanho e a cor dos 10 veculos. Para isso utiliza a funo rand() que gera nmero aleatrios. Inicialmente gera a velocidade para todos os carros, utilizando um loop que cria nmeros aleatrios de 0 20. A velocidade do carro o nmero gerado menos 10. A subtrao utilizada para que alguns veculos possam movimentar no sentido contrrio. Logo aps gerado as larguras: Utiliza um loop que para cada veculo, gerando um nmero aleatrio de 0 26. A largura do veiculo ser ento 20 acrescentado do nmero gerado multiplicado por 5, portanto a largura varia de 20 a 150px. Por fim, gera a cor de todos os veculos, criando cores desde rgb(30, 30, 30) at rgb(255, 255, 255). void movimenta_veiculos(): Funo que desenha os 10 veculos na tela e atualiza as posies dos mesmos com base na velocidade de cada 1. Para isso, utiliza um loop com 10 iteraes, (1 para cada veculo), e ento desenha um retngulo na posio salva em posicao_veiculos com largura e cor definidos pela funo cria_veiculos. Logo aps, utilizado um outro loop para atualizar as posies dos veculos (posicao_veiculos), que ser incrementado pela velocidade gerada por cria_veiculos. Caso o veculo tenha chegado nas extremidades da tela, a velocidade muda de sinal, para que assim, o veculo possa mover no sentido contrrio e nunca sair da tela.

bool ver_se_perdeu(int posx, int posy, int largura, int altura): Verifica se ocorreu uma coliso do frog com os veculos. Para isso, testa se houve coliso com cada 1 dos veculos. Para verificar isso, utilizado o seguinte raciocnio: S ocorre uma coliso quando o frog e o veculo dividem uma mesma rea na tela, ento, se o frog ocupa o espao de: (x, y) at (x+40, y+40), e o veculo (w, z) at (w + 40, z + 40), basta verificar se: (w < x < w + 40 ou x < w < x + 40) e (z < y < z + 40 ou y < z < y + 40). Caso isso ocorra, ento houve uma coliso e assim a funo retorna true. Caso no ocorra nenhuma coliso, retornado false. Funo principal: Foi utilizado retngulos para representar o frog e os veculos, o frog sendo um quadrado de dimenses 40px x 40px, de cor rgb(100, 0, 0). Para a criao dos 10 veculos, o tamanho, as cores e as velocidades chamada a funo cria_veiculos. utilizado som para uma melhor dinmica do jogo. Ao decorrer do jogo reproduzido um udio, e caso o jogador vena ou perca reproduzido outros udios apropriados. Para que o jogo ocorra, utilizado um loop infinito, a priori. A cada iterao, incrementado a posio vertical e horizontal do frog, e ento verificado se o usurio conseguiu chegar no topo, se sim, interrompe o loop. Para obter uma maior fluidez no jogo, caso o usurio mantenha apertado as teclas (up, down, left, right, w, s, a ou d) o frog se movimenta continuamente pela tela, sem a necessidade de apertar as teclas vrias vezes, para isso, verifica quando o usurio aperta uma tecla, se for a tecla up ou w, ento salva em uma varivel que o incremento da posio vertical do frog ser de 5, se o usurio aperta left ou a, salvo em outra varivel o valor de -5 para incrementar na posio horizontal, e o mesmo para as outras teclas. Desta maneira, a partir daquele frame, sempre ser incrementado aqueles valores, sendo interrompido apenas quando o usurio solta a tecla, retornando as variveis para zero. Logo aps, desenhado o frog na tela e chamada as funes ver_se_perdeu e movimenta_veiculos. Caso o usurio tenha colidido, uma varivel (perdeu) recebe o valor true e o loop interrompido. Fora do loop, verificado se o usurio venceu ou perdeu, e impresso a mensagem relacionada. (Caso o usurio tenha vencido, impresso tambm a sua pontuao, que o nmero de frames transcorridos dividido pela taxa de frames por segundo).

TESTES:

Aps a concluso do trabalho, foi verificado se o jogo estava corretamente implementado, seja pela parte das colises, seja pela deteco do fim do jogo ou pela impresso da pontuao. Abaixo esto trs prints de situaes que confirmam a integridade do jogo:

A tela acima detectada uma coliso e ento mostrada a seguinte tela ao jogador:

E finalmente, caso o jogador consiga vencer, mostrada a seguinte tela:

CONCLUSO:

Ao desenvolver este trabalho, sugiram diversas dificuldades relacionadas com a implementao, sendo a principal delas como seria feita a deteco de colises entre o frog e os veculos. Porm, com pesquisas na internet as dvidas foram sanadas e foi possvel concluir a tempo o trabalho. Com este trabalho foi possvel notar o poder da linguagem C aliado com a biblioteca grfica allegro, que permite desenvolver jogos e outras aplicaes com poucas linhas de cdigo.

BIBLIOGRAFIA:

http://www.vsoftgames.com/site/files/tecnicas_deteccao_colisao_para_jo gos.pdf http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Addons/Audio https://www.allegro.cc/manual/5/al_draw_text https://www.allegro.cc/manual/5/al_draw_filled_rectangle

Das könnte Ihnen auch gefallen