FACULDADE DE CINCIAS EXATAS E TECNOLOGIAS BACHARELADO EM SISTEMAS DE INFORMAO COMPUTAO GRFICA Prof. Dr. Ad!"#o$ %o&' A"()& d Cr*+ A"!$) I+!d Adr!$o F. D$#& D!o,o F)r$$do Tr)(!&$ %'&&!- A$dr)&& d) So*+ (o!d d)&)$.Mod)"o/!$#01 Desenha um modelo no formato OBJ. Recebe como parmetro um inteiro global indicando qual modelo desenhar. (o!d d)&)$.C!2Co"!&o/-!2Co"!&o 301 Desenha uma caixa de coliso em volta do objeto que esta representa. (o!d -r!C!2Co"!&o/GLM4od)" 35 -!2Co"!&o 301 ria uma caixa de coliso a partir de um modelo. ! caixa de coliso servir" para o modelo na posi#o $%&%&%'& assim& se o modelo estiver em uma posi#o diferente a caixa deve ser atuali(ada. ! caixa de coliso verificar" todos os v)rtices do modelo carregado do arquivo .OBJ& encontrando o maior e menor valor para *& + e ,. ! partir destes ) poss-vel formar uma caixa que envolve o objeto como mostra a .igura. ! .igura mostra somente dois pontos formados por /* menor& + menor0 e por /* maior& + menor0. Outros pontos da caixa podem ser formados levando em considera#o tamb)m o , maior e o , menor. (o!d d)&)$.F*$do/(o!d01 Desenha o plano de fundo do jogo. O fundo ) uma imagem 12!. Desenha3se um quadrado em uma posi#o , bem afastada da cmera e este ) texturi(ado com a imagem que representa o fundo. (o!d !$!-!"!+O67)#o&/(o!d01 4niciali(a os objetos& carrega os modelos& define as posi#5es iniciais para a nave& meteoros e tiros& define valores das vari"veis como velocidade& etc. (o!d )$(!M)#)oro/(o!d01 6an#a meteoros. 7e tiver meteoros dispon-veis no vetor global que os representa& so criados 8 meteoros. 8 ) definido por uma vari"vel que inicia em 9% e conforme a dificuldade vai aumentando 8 aumenta at) ser igual ao n:mero m"ximo de meteoros poss-veis. ! posi#o do meteoro ) aleat;ria& sendo esta uma posi#o dentro da "rea do game& onde *<2!=><=484=O $ *<=>1>ORO $ *<2!=><=!*4=O& valendo o mesmo para +. ?ara a posi#o , ) sorteada uma posi#o que v"ria de % a 9% a partir de uma posi#o m-nima para o meteoro aparecer. (o!d &)#C!2Co"!&o/-!2Co"!&o 35 8o$#o01 recalcula a posi#o dos pontos da caixa de coliso para o objeto em um ponto. @ guardada a posi#o atual do objeto e a posi#o anterior& para saber quanto o mesmo se deslocou e a partir desse valor calcular a nova posi#o da caixa de coliso. (o!d #*"!+C!2Co"!&o/!#)4D)%o,o 301 Aerifica se o objeto se movimentou em algum eixo e atuali(a a posi#o da sua caixa de coliso para que se movimente junto ao objeto. (o!d #*"!+C!2Co"!&oT!ro/!#)4D)%o,o 301 !tuali(a a caixa de coliso do tiro. >sta ) diferente da fun#o que atuali(a a caixa de coliso de um objeto porque o tiro se movimenta em uma dire#o diferente dos objetos. (o!d d)&)$.G4)O()r/(o!d01 Desenha um plano de fundo e movimenta a cmera quando o jogador perde todas as vidas e sua nave ) destru-da. (o!d #*"!+rE&#do&/(o!d01 !tuali(a o estado de todos objetos& como nave& meteoros e tiros. Os meteoros so movimentados de acordo com sua acelera#o& acontecendo o mesmo para os tiros. 1amb)m ) verificado aqui se algum objeto saiu fora da "rea do jogo ou se houve coliso da nave com algum meteoro ou de algum tiro com algum meteoro. !$# ()r!f!-Co"!&o/-!2Co"!&o 5 -!2Co"!&o 01 .un#o que recebe duas caixas de coliso e verifica se elas se chocam. !$# 8o&!-oV+!M)#)oro&/(o!d01 Aarre o vetor global dos meteoros em busca da primeira posi#o va(ia. Bma posi#o passa a ser va(ia quando o meteoro sai da tela& ou& inicialmente j" que todos esto no vis-veis. !$# 8o&!-oV+!T!ro&/(o!d01 Bm n:mero m"ximo de tiros pode ser disparado. ada tiro fica em uma posi#o de um vetor global. >sta fun#o varre o vetor e retorna a primeira posi#o va(ia nele para que um novo tiro seja configurado nela /no so realocados e sim a posi#o ) resetada e ele come#a a trajet;ria novamente0. !$# 8o&!-oV+!E28"o&o)&/(o!d01 Aerifica uma posi#o va(ia no vetor global de explos5es e a retorna. (o!d -o$f!,*rT)2#*r&/(o!d01 arrega e configura as texturas utili(adas a partir de arquivos 12!. (o!d d)&)$.M)#)oro&/(o!d01 percorre o vetor de meteoros globais para ver quais esto vis-veis. 7e o meteoro estiver vis-vel ) desenhado o modelo do meteoro na posi#o arma(enada no vetor. !ssim& so arma(enadas v"rias posi#5es por)m& s; um modelo geom)trico. (o!d d)&)$.E28"o&o)&/01 percorre o vetor global das posi#5es das explos5es desenhando as que esto vis-veis em suas posi#5es. (o!d d)&)$.T!ro&/(o!d01 Desenha os proj)teis disparados pela nave. (o!d D)&)$.T)2#o/-.r 35!$# 5 !$#01 >screve uma mensagem de texto em uma posi#o do mundo CD. (o!d #r#T)-"&/(o!d01 detecta quando uma tecla normal /como caractere& n:mero ou espa#o0 ) pressionada. (o!d #)-"E&8)-!"/!$# 5 !$# 5 !$# 01 trata quando uma tecla especial /como setas0 ) pressionada. (o!d #)-"E&8)-!"So"#/!$#5 !$# 5 !$# 01 trata quando uma tecla especial /como setas0 deixa de ser pressionada. (o!d *4)$#D!f!-*"dd)/!$# 01 !umenta o n:mero de meteoros que so enviados de cada ve( e a velocidade com que estes se deslocam pelo ambiente. (o!d -o$#ro"/*$&!,$)d -.r 5 !$# 5 !$# 01 (o!d d)&)$.HUD/01 Desenha as informa#5es de Aida e ?ontua#o na tela& utili(ando a fun#o de desenho de texto. (o!d d)&)$./01 ontrola o desenho geral do game chamando as subrotinas de desenho. (o!d r)d!4)$&!o$/!$# 5 !$#01 utili(ada para redimensionar o frustum de visuali(a#o e manter o aspecto de acordo com a dimenso da tela. (o!d #!4)rE28"o&o/!$# 01 Bm callbacD invocado a cada certo tempo que atuali(a o tamanho das explos5es fa(endo3as desaparecer ap;s um tempo. (o!d #!4)r/!$# 01 callbacD de tempo que envia uma nova leva de meteoros a cada certo tempo. (o!d -o$f!,*r/01 onfigura as vari"veis 2lut e estados Open26& cria janela e chama as fun#5es necess"rias para carregar os modelos geom)tricos. (o!d -o$f!,*rI"*4!$-o/01 onfigura a ilumina#o do ambiente. 8o utili(ado neste game. !$# LodTGA/T)2#*r) 3 5 -.r 3 01 arrega uma imagem 12! para uma vari"vel do tipo 1exture. >sta pode ser usada para texturi(ar pol-gonos e modelos geom)tricos. !$# LodU$-o48r)&&)dTGA/T)2#*r) 3 5 -.r 3 5 FILE 3 01 !$# LodCo48r)&&)dTGA/T)2#*r) 3 5 -.r 3 5 FILE 3 01 F"*2o,r4 do 7o,o Bm fluxograma para dar uma ideia geral do fluxo do jogo.