void draw_wave(struct wave* obj) {
 
    int i;
    for(i = 0; i < obj->n_aliens; i++) {
         
        if(obj->squids[i])
            draw_alien(obj->squids[i]);
        if(obj->jellyfishes[0][i])
            draw_alien(obj->jellyfishes[0][i]);
        if(obj->jellyfishes[1][i])
            draw_alien(obj->jellyfishes[1][i]);
        if(obj->crabs[0][i])
            draw_alien(obj->crabs[0][i]);
        if(obj->crabs[1][i])
            draw_alien(obj->crabs[1][i]);
    }
}
Example #2
0
void draw_wave(struct wave* obj) {
 
    int i;
    for(i = 0; i < obj->n_aliens; i++) {
         
        if(obj->squids[i])
            draw_alien(obj->squids[i]);
        if(obj->jellyfishes[0][i])
            draw_alien(obj->jellyfishes[0][i]);
        if(obj->jellyfishes[1][i])
            draw_alien(obj->jellyfishes[1][i]);
        if(obj->crabs[0][i])
            draw_alien(obj->crabs[0][i]);
        if(obj->crabs[1][i])
            draw_alien(obj->crabs[1][i]);
    }
    for(i=0; i<MAX_MISSEIS; i++)
        if(obj->missil[i]) desenha_missil(obj->missil[i]);

}
Example #3
0
static void fire_update()
{
	int i = 0;
	int rowhit, colhit;
	while(i < me_firing) {
		myfire[i].posy += myfire[i].dir;
		/* test if hit something */
		if(get_rowcol(myfire[i].posx, myfire[i].posy,
					&rowhit, &colhit)) {
			if(alien_status[rowhit + colhit * aliens_rows] > 0) {
				/* when hit, fire out, destroy it
				 * (for now not animation) */
				myfire_delete(i);
				GrSetGCForeground(invaders_gc, GR_RGB(255,255,255));
				draw_alien(colhit,rowhit,itest);
				Dprintf("hit %d,%d,%d\n", colhit,rowhit,itest);
				Dprintf(" %d,%d\n",alien_maxx-alien_minx,
						cell_maxx - cell_minx);
				GrSetGCForeground(invaders_gc, GR_RGB(0,0,0));	
				alien_status[rowhit + colhit * aliens_rows] = 0;
				score += colhit * 2;
				update_score();
				aliens_left -= 1;
				if(aliens_left <= 0) {
					level++;
					invaders_create_board(level);
					draw_first();
					return;
				}
				continue;
			}
		}
		/* test if out board */
		if(myfire[i].posy < board_top) {
			myfire_delete(i);
			i--;
		}
		i++;
	}
	
	i = 0;
	while(i < alien_firing) {
		alienfire[i].posy += alienfire[i].dir;
		Dprintf("alienfire pos %d\n", alienfire[i].posy);
		/* test if hit me */
		if(alienfire[i].posy < (me_posy + ME_HEIGHT) &&
			alienfire[i].posy >= me_posy &&
			alienfire[i].posx >= me_posx &&
			alienfire[i].posx <= me_posx + ME_WIDTH) {
			/* End of game */
			game_status = GAME_STATUS_END;
			return;
		}
		/* test if out board */
		if(alienfire[i].posy >= board_bottom) {
			alienfire_delete(i);
			i--;
		}
		i++;
	}
}