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]); } }
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]); }
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++; } }