// O relógio digital que acompanha o demo unsigned long int RelogioDigital(int x, int y) { // 1:56 minutos em milisegundos static unsigned long tempo = 116000; // O tempo inicial do demo static unsigned long tinicial = C2D2_TempoSistema(); // O tempo atual static unsigned long tatual; static char texto[12]; // Pega o tempo atual tatual = C2D2_TempoSistema(); // Calcula a diferença unsigned long diferenca = tatual-tinicial; // Desenha o fundo de 144x32 C2D2P_RetanguloPintado(x, y, x+91, y+31, 0,0,0); C2D2P_Retangulo(x, y, x+91, y+31, 255,255,255); // Calcula os tempos int minutos=0, segundos=0, centesimos=0; if(diferenca <=116000) { minutos = (tempo-diferenca)/60000; segundos = ((tempo-diferenca)%60000)/1000; centesimos = ((tempo-diferenca)%1000)/10; } sprintf(texto, "%02i:%02i:%02i", minutos, segundos, centesimos); C2D2_DesenhaTexto(fdigital, x+8, y+8, texto, C2D2_TEXTO_ESQUERDA); // Retorna o tempo return diferenca; }
void BarraCarregamento(int carregados, int total) { // Calcula a cor int cor = 255*carregados/total; C2D2_LimpaTela(); // A barra tem 600 pontos de largura. Desenha o contorno primeiro C2D2P_Retangulo(95, 270, 705, 330, 255-cor, cor, 0); // DEsenha a barra proporcional C2D2P_RetanguloPintado(100, 275, 100+600*carregados/total , 325, 255-cor, cor, 0); C2D2_Sincroniza(C2D2_FPS_PADRAO); }
void Shutar::Draw() { C2D2_LimpaTela(); switch (GameState) { case 1: //Desenha Splash C2D2_DesenhaSprite(menu, 0, 0, 0); break; case 2: {//Desenha GAME //C2D2_DesenhaSprite(jogorolando, 0, 0, 0); C2D2M_DesenhaCamadaMapa(mapa, 0, 0, 0, LARGURA_TELA, ALTURA_TELA); //desenha estrelas C2D2M_DesenhaCamadaMapa(mapa, 1, 0, 0, LARGURA_TELA, ALTURA_TELA);//desenha planetas C2D2M_DesenhaCamadaMapa(mapa, 2, 0, 0, LARGURA_TELA, ALTURA_TELA);//desenha nuvens ATOR_CentraMapa(nave, mapa, LARGURA_TELA, ALTURA_TELA); // Aplica as ocorrencias for (int i = 0; i < numOcorrencias; i++) { ATOR_Desenha(ocorrencias[i], mapa, 0, 0); } // Aplica as inimigos for (int i = 0; i < numinimigosBT; i++) { ATOR_Desenha(inimigos[i], mapa, 0, 0); } // Aplica as inimigos RB for (int i = 0; i < numinimigosRB; i++) { ATOR_Desenha(inimigosRB[i], mapa, 0, 0); } // Aplica as inimigos MR for (int i = 0; i < numinimigosMR; i++) { ATOR_Desenha(inimigosMR[i], mapa, 0, 0); } // Aplica as inimigos SH for (int i = 0; i < numinimigosSH; i++) { ATOR_Desenha(inimigosSH[i], mapa, 0, 0); } // Aplica as inimigos SH for (int i = 0; i < numinimigosSH; i++) { if (tirosInimigos[i] != 0) ATOR_Desenha(tirosInimigos[i], mapa, 0, 0); } if (tiro) ATOR_Desenha(tiro, mapa, 0, 0); if (bomba) ATOR_Desenha(bomba, mapa, 0, 0); ATOR_Desenha(nave, mapa, 0, 0); C2D2_DesenhaSprite(mouseTX, 0, mousePosX, mousePosY); C2D2_DesenhaSprite(hud_nergy, 0, LARGURA_TELA - 140, ALTURA_TELA - 34); //HUD int coordXbarra = 894; int coordYbarra = 556; //int ent = coordXbarra + energytank; int ent = coordXbarra + nave->aux_int[3]/10; //static_cast<int>(coordXbarra) C2D2P_RetanguloPintado(coordXbarra, coordYbarra, ent, coordYbarra + 8, 0, 255, 0); switch (nave->vidas) { case 10: C2D2_DesenhaSprite(damage10, 0, 10, 540); break; case 9: C2D2_DesenhaSprite(damage9, 0, 10, 540); break; case 8: C2D2_DesenhaSprite(damage8, 0, 10, 540); break; case 7: C2D2_DesenhaSprite(damage7, 0, 10, 540); break; case 6: C2D2_DesenhaSprite(damage6, 0, 10, 540); break; case 5: C2D2_DesenhaSprite(damage5, 0, 10, 540); break; case 4: C2D2_DesenhaSprite(damage4, 0, 10, 540); break; case 3: C2D2_DesenhaSprite(damage3, 0, 10, 540); break; case 2: C2D2_DesenhaSprite(damage2, 0, 10, 540); break; case 1: C2D2_DesenhaSprite(damage1, 0, 10, 540); break; } break; } case 3: //Desenha Creditos C2D2_DesenhaSprite(logoPUC, 0, 0, 0); break; case 4: //Desenha GameOver C2D2_DesenhaSprite(gameoverTela, 0, 0, 0); break; } }
void Creditos() { C2D2_Botao *teclado = C2D2_PegaTeclas(); unsigned long int tempo=ttotal; C2D2_TrocaCorLimpezaTela(128,128,128); int deslocamento; // Desenha as retas no fundo int x, y, angulo=45; do { // Calcula a coordenada x,y da reta (diagonal tamanho 396, para círculo de raio 280) x = 280*cos(angulo*RAD); y = 280*sin(angulo*RAD); angulo=(angulo+2)%360; // Atualiza o deslocamento deslocamento = 600 - (1612.0*(tempo-ttotal))/11700; C2D2_LimpaTela(); // Desenha as retas C2D2P_Linha(400+x, 300-y, 400-x, 300+y, 0, 0, 128); C2D2P_Linha(400-x, 300-y, 400+x, 300+y, 0, 0, 128); C2D2_DesenhaTexto(fpequeno, 400, deslocamento, "Programação e Gráficos", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fsistema, 400, deslocamento+32, "Paulo V. W. Radtke", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fpequeno, 400, deslocamento+196, "Música", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fsistema, 400, deslocamento+228, "2nd Reality", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fpequeno, 400, deslocamento+292, "por Purple Motion", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fpequeno, 400, deslocamento+424, "Agradecimentos", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fsistema, 400, deslocamento+456, "BCS", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fsistema, 400, deslocamento+520, "Mel", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fsistema, 400, deslocamento+584, "Pio", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fpequeno, 400, deslocamento+748, "Copywrong 2008", C2D2_TEXTO_CENTRALIZADO); C2D2_DesenhaTexto(fpequeno, 400, deslocamento+780, "Quase nenhum direito reservado.", C2D2_TEXTO_CENTRALIZADO); // termina em 812. //tem que pular 600 pontos no começo, mais 100 de lambuja pra cada lado. total de 1612 pontos tempo=RelogioDigital(692,552); C2D2_Sincroniza(C2D2_FPS_PADRAO); } while(tempo-ttotal < 11700 && !teclado[C2D2_ESC].pressionado && !teclado[C2D2_ENCERRA].pressionado); // Apaga a tela com barras pretas deslocamento=0; do { // Calcula o quanto deceu na tela deslocamento = (300.0*(tempo-ttotal-11700))/500; // Calcula a coordenada x,y da reta (diagonal tamanho 396, para círculo de raio 280) x = 280*cos(angulo*RAD); y = 280*sin(angulo*RAD); angulo=(angulo+2)%360; C2D2_LimpaTela(); // Desenha as retas C2D2P_Linha(400+x, 300-y, 400-x, 300+y, 0, 0, 128); C2D2P_Linha(400-x, 300-y, 400+x, 300+y, 0, 0, 128); C2D2P_RetanguloPintado(0, 0, 799, deslocamento, 0, 0, 0); C2D2P_RetanguloPintado(0, 600-deslocamento, 799, 599, 0, 0, 0); tempo=RelogioDigital(692,552); C2D2_Sincroniza(C2D2_FPS_PADRAO); } while(tempo-ttotal < 12200 && !teclado[C2D2_ESC].pressionado && !teclado[C2D2_ENCERRA].pressionado); ttotal += 12200; }