const int landershotmax = 10;
const int landermax = 4;
const int crawlermax = 6;
+const int missilemax = 3;
const float version = 1.0;
int score;
int shieldsleft = 400;
int tripshot = 0;
int laser = 0;
+int missile = 0;
int sound = 1;
int main(int argc, char *argv[]){
strcpy (boomstuff.line0, "\\");
strcpy (boomstuff.line1, "/");
+ //missiles
+ struct game_object missiles[missilemax] = {
+ { 50, 0, 0, 0, 5, 0, 0, 0, 0 },
+ { 51, 0, 0, 0, 5, 0, 0, 0, 0 },
+ { 52, 0, 0, 0, 5, 0, 0, 0, 0 }
+ };
+
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){
+ strcpy (missiles[missileloop].line0, "---");
+ strcpy (missiles[missileloop].line1, "---");
+ strcpy (missiles[missileloop].radar, "-");
+
+ missiles[missileloop].chase = -1;
+ };
+
initscr();
//Check screen size 80x24 and exit if not big enough
bullets[bulletloop] = age_bullet(bullets[bulletloop]);
};
};
+
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){
+ if(missiles[missileloop].active==1){
+ if(landers[missiles[missileloop].chase].active==1){
+ missiles[missileloop] = missile_motion(missiles[missileloop], landers[missiles[missileloop].chase]);
+ missiles[missileloop] = process_motion(missiles[missileloop], player);
+ //missiles[missileloop] = age_bullet(missiles[missileloop]); //Something to think about
+ } else {
+ boom_object(boomstuff, missiles[missileloop], boomsound, boomchannel);
+ missiles[missileloop] = object_out(missiles[missileloop]);
+ };
+ };
+ };
for(int landerloop = 0; landerloop<landermax; landerloop++){
if(landers[landerloop].active==1){
};
};
+ // Draw missiles objects 50-53
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){
+ if(missiles[missileloop].active==1){
+ drawlocation = draw_object(missiles[missileloop], drawlocation);
+ };
+ };
+
//draw laser beam
if(drawlaser==1){
for(int crazyloop = 0; crazyloop<landermax; crazyloop++){ radar_plot(crazies[crazyloop], drawlocation); };
for(int crawlerloop = 0; crawlerloop<crawlermax; crawlerloop++){ radar_plot(crawlers[crawlerloop], drawlocation); };
for(int bossloop = 0; bossloop<6; bossloop++){ radar_plot(bosses[bossloop], drawlocation); };
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){ radar_plot(missiles[missileloop], drawlocation); };
radar_plot(player, drawlocation);
//alerts
if(strncmp(powerups[puploop].line0, "Z", 1)==0){
laser = laser + 100;
};
+ if(strncmp(powerups[puploop].line0, "M", 1)==0){
+ if(missile<3){
+ missile++;
+ };
+ };
};
};
//Shields don't hurt bosses! Tee hee. . .
};
};
+ //watch for missile/lander collisions
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){
+ if(missiles[missileloop].active == 1){
+ if(check_collision(landers[missiles[missileloop].chase], missiles[missileloop])==1){
+ //kill missile and lander
+ boom_object(boomstuff, landers[missiles[missileloop].chase], boomsound, boomchannel);
+ boom_object(boomstuff, missiles[missileloop], boomsound, boomchannel);
+ landers[missiles[missileloop].chase] = object_out(landers[missiles[missileloop].chase]);
+ missiles[missileloop] = object_out(missiles[missileloop]);
+ };
+ };
+ };
// Lander shots
for(int landerloop = 0; landerloop<landermax; landerloop++){
if(landers[landerloop].active==1&&landers[landerloop].chase==-1){
//if(rand()%10000<=10){
if(rand()%1000<=10){
- //choose the closest pod
+ //choose a pod
for(int podloop = 0; podloop<podmax; podloop++){
if(landers[landerloop].chase==-1&&pods[podloop].chase==-1&&pods[podloop].active==1){
landers[landerloop].chase = podloop;
if(player.y<landers[landerloop].y){ landers[landerloop].direction = 6; alertright = 20;};
if(player.y>=landers[landerloop].y){ landers[landerloop].direction = 4; alertleft = 20;};
landers[landerloop].phase = 1;
+ //launch missile if we have one
+ if(missile>=1){
+ for(int missileloop = 0; missileloop<missilemax; missileloop++){
+ if(missiles[missileloop].chase==-1){
+ missiles[missileloop].chase = landerloop;
+ //play missle launch sound
+ //init missle
+ missiles[missileloop] = missile_init(missiles[missileloop], player, landers[landerloop]);
+ missile--;
+ };
+ };
+ };
//strcpy(landers[landerloop].radar, "$"); //debug
//strcpy(pods[landers[landerloop].chase].radar, "&"); //debug
};