Esempio n. 1
0
//ADICIONAR NAVE-MÃE!!!
//A função posiciona a wave no meio de tela de largura 640. Ainda é preciso torná-la agóstica a resolução
//O valor do campo velocidade precisa ser um divisor de (largura do display - largura wave)/2 para que colida com o limite direito da tela
//Do contrário, a wave irá atravesá-los antes de voltar.
//Uma outra possibilidade é tornar o limite o 
wave* create_wave(int y_inicial, int n_aliens, SOUND_MANAGER* sound_mng) {
    srand(time(NULL));
 
    struct wave* obj = (struct wave*) malloc(sizeof(struct wave));
    obj->x = 72; 
    obj->y = y_inicial;
    obj->anima_contador = 0;
    obj->ritmo = ALIEN_RHYTHM;
    obj->velocidade = ALIEN_SPEED;

    obj->n_aliens = n_aliens;
    obj->wave_width = (n_aliens * ALIEN_SIZE) + ((n_aliens - 1) * ALIEN_SPACING);
    //create squids row
    int i;
    int j;
    obj->linhas = 5;

    obj->sound_mng = sound_mng;
    obj->sound_count = 0;

    obj->squids = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
    for(i = 0; i < obj->n_aliens; i++) {
        obj->squids[i] = create_alien(obj->x + i*(ALIEN_SIZE + ALIEN_SPACING), obj->y, SQUID, obj->sound_mng);
    }
    //Create 2 jellyfish rows
    for(i = 0; i < 2; i++) {
    	obj->jellyfishes[i] = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
        for(j = 0; j < obj->n_aliens; j++) {
            obj->jellyfishes[i][j] = create_alien(obj->x + j*(ALIEN_SIZE + ALIEN_SPACING), obj->y + (i + 1) * (ALIEN_SIZE), JELLYFISH, obj->sound_mng);
        }
    }
    //Create 2 crab rows
    for(i = 0; i < 2; i++) {
 
    	obj->crabs[i] = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
        for(j = 0; j < obj->n_aliens; j++) {
            obj->crabs[i][j] = create_alien(obj->x + j*(ALIEN_SIZE + ALIEN_SPACING), obj->y + (i + 3) * (ALIEN_SIZE), CRAB, obj->sound_mng);
        }
    }

    for (int i=0; i<5; i++){
        obj->aliens_mortos[i]=0;
    }
    for (int i=0; i<MAX_MISSEIS; i++){
        obj->missil[i]=NULL;
    }
    obj->missil_atual = 0;
    return obj;
}
//ADICIONAR NAVE-MÃE!!!
//A função posiciona a wave no meio de tela de largura 640. Ainda é preciso torná-la agóstica a resolução
//O valor do campo velocidade precisa ser um divisor de (largura do display - largura wave)/2 para que colida com o limite direito da tela
//Do contrário, a wave irá atravesá-los antes de voltar.
//Uma outra possibilidade é tornar o limite o 
wave* create_wave(int y_inicial, int n_aliens) {
 
    struct wave* obj = (struct wave*) malloc(sizeof(struct wave));
    obj->x = 72; 
    obj->y = y_inicial;
    obj->anima_contador = 0;
    obj->ritmo = 20;
    obj->velocidade = ALIEN_SPEED;

    obj->n_aliens = n_aliens;
    obj->wave_width = (n_aliens * ALIEN_SIZE) + ((n_aliens - 1) * ALIEN_SPACING);
    //create squids row
    int i;
    int j;
    obj->linhas = 5;

    obj->squids = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
    for(i = 0; i < obj->n_aliens; i++) {
        obj->squids[i] = create_alien(obj->x + i*(ALIEN_SIZE + ALIEN_SPACING), obj->y, SQUID);
    }
    //Create 2 jellyfish rows
    for(i = 0; i < 2; i++) {
    	obj->jellyfishes[i] = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
        for(j = 0; j < obj->n_aliens; j++) {
            obj->jellyfishes[i][j] = create_alien(obj->x + j*(ALIEN_SIZE + ALIEN_SPACING), obj->y + (i + 1) * (ALIEN_SIZE), JELLYFISH);
        }
    }
    //Create 2 crab rows
    for(i = 0; i < 2; i++) {
 
    	obj->crabs[i] = (alien**) malloc (sizeof(alien*)*obj->n_aliens);
        for(j = 0; j < obj->n_aliens; j++) {
            obj->crabs[i][j] = create_alien(obj->x + j*(ALIEN_SIZE + ALIEN_SPACING), obj->y + (i + 3) * (ALIEN_SIZE), CRAB);
        }
    }

    for (int i=0; i<5; i++){
        obj->aliens_mortos[i]=0;
    }
    return obj;
}