void move_tropa (Alien alien[COLUNAS_TROPA][LINHAS_TROPA], DIRECAO direcao) { if (direcao == ESQUERDA) { for (int i = 0; i < COLUNAS_TROPA; i++) { for (int j = 0; j < LINHAS_TROPA; j++) { move_alien (&alien[i][j], ESQUERDA); } } } if (direcao == DIREITA) { for (int i = 0; i < COLUNAS_TROPA; i++) { for (int j = 0; j < LINHAS_TROPA; j++) { move_alien (&alien[i][j], DIREITA); } } } if (direcao == CIMA) { for (int i = 0; i < COLUNAS_TROPA; i++) { for (int j = 0; j < LINHAS_TROPA; j++) { move_alien (&alien[i][j], CIMA); } } } if (direcao == BAIXO) { for (int i = 0; i < COLUNAS_TROPA; i++) { for (int j = 0; j < LINHAS_TROPA; j++) { move_alien (&alien[i][j], BAIXO); } } } }
void move_aliens(Aliens* aliens){ int mudou = 0; for(int i = 0; i < N_LINHAS; i++) for(int j = 0; j < N_COLUNAS; j++){ if(aliens->distancia_direita < 15 || aliens->distancia_esquerda < 15){ muda_direcao_alien(&aliens->matriz_aliens[i][j]); mudou = 1; } move_alien(&aliens->matriz_aliens[i][j]); } if(mudou) muda_direcao_aliens(aliens); switch(aliens->direcao){ case A_DIREITA: aliens->distancia_esquerda += VELOCIDADE_ALIEN; aliens->distancia_direita -= VELOCIDADE_ALIEN; break; case A_ESQUERDA: aliens->distancia_esquerda -= VELOCIDADE_ALIEN; aliens->distancia_direita += VELOCIDADE_ALIEN; break; } }
void Alien::draw_alien(GLfloat camerax, GLfloat cameraz) { calculate_degrees(camerax, cameraz); glPushMatrix(); glTranslatef(mposx, 0, mposz); glRotatef(mdegrees, 0, 1, 0); glColor4f(1,1,1, 1); glEnable(GL_TEXTURE_2D); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable (GL_BLEND); glBindTexture(GL_TEXTURE_2D, malien); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(5, -20, 0); glTexCoord2f(0, 1); glVertex3f(5, 8, 0); glTexCoord2f(1, 1); glVertex3f(-5, 8, 0); glTexCoord2f(1, 0); glVertex3f(-5, -20, 0); glEnd(); glDisable (GL_BLEND); glDisable(GL_TEXTURE_2D); //glDisable(GL_BLEND); //glDepthMask(GL_TRUE); glPopMatrix(); // Give new position to alien move_alien(camerax, cameraz); }