From ba85f71b401d8720a63c5c3f9346902b345fa266 Mon Sep 17 00:00:00 2001 From: limb Date: Fri, 29 May 2009 13:47:48 +0000 Subject: [PATCH] Ready to test boss generalization. git-svn-id: svn+ssh://svn/var/repos/curfender@808 bc5cbbab-a4ec-0310-bb52-ff3d296db539 --- layout.txt | 11 +-- main.cpp | 283 ++++++++++++++++++++++++++++++++++++------------------------- 2 files changed, 168 insertions(+), 126 deletions(-) diff --git a/layout.txt b/layout.txt index b5a38ea..8ee2f87 100644 --- a/layout.txt +++ b/layout.txt @@ -60,18 +60,11 @@ Bosses: 12: Gunboat /O\ <==/==[=]==\==> -16: Skull (---) - (-o-o-) - | | +16: Skull /o-o\ \|_|/ 20: Squid (----) - (------) - (------) - (----) - |||\ - / | \\ - | //| + /||\ 24: Singularity Drone . diff --git a/main.cpp b/main.cpp index bcb7b87..d9a4593 100644 --- a/main.cpp +++ b/main.cpp @@ -172,7 +172,7 @@ game_object object_out(game_object object){ return object; } -game_object saucer_motion(game_object object, game_object player){ +game_object boss_motion(game_object object, game_object player){ if(player.ytrail[7]"); + strcpy (bosses[2].radar, "O"); + + strcpy (bosses[3].line0, "/o-o\\"); + strcpy (bosses[3].line1, "\\|_|/"); + strcpy (bosses[3].radar, "O"); + + strcpy (bosses[4].line0, "(----)"); + strcpy (bosses[4].line1, "/||\\"); + strcpy (bosses[4].radar, "O"); + + strcpy (bosses[5].line0, "."); + strcpy (bosses[5].line1, "."); + strcpy (bosses[5].radar, "O"); //boomstuff game_object boomstuff; @@ -1121,6 +1138,7 @@ int main(){ int landercount = 0; int crazycount = 0; int crawlercount = 0; + int bosscount = 0; int alertleft = 0; int alertright = 0; int smartbombs = 4; @@ -1365,9 +1383,11 @@ int main(){ crawlers[crawlerloop] = process_motion(crawlers[crawlerloop], player); }; - if(saucer.active==1){ - saucer = saucer_motion(saucer, player); - saucer = process_motion(saucer, player); + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active==1){ + bosses[bossloop] = boss_motion(bosses[bossloop], player); + bosses[bossloop] = process_motion(bosses[bossloop], player); + }; }; // Draw player object 1 @@ -1463,7 +1483,10 @@ int main(){ drawlocation = draw_object(crawlers[crawlerloop], drawlocation); }; - drawlocation = draw_object(saucer, drawlocation); + // Draw bosses 300-305 + for(int bossloop = 0; bossloop<6; bossloop++){ + drawlocation = draw_object(bosses[bossloop], drawlocation); + }; //Radar plot 18x620 represented in 4x62 radar_plot(gate, drawlocation); @@ -1474,7 +1497,7 @@ int main(){ for(int landerloop = 0; landerloopplayer.y)))){ - saucer.phase = saucer.phase - 5; - if(saucer.phase<=0){ - determine_powerup(powerups, saucer, 600); - boom_object(boomstuff, saucer, boomsound, boomchannel); - saucer = object_out(saucer); - score = score + 100; - }; - }; - }; + //hurt/kill boss + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active==1){ + if((abs(player.y-bosses[bossloop].y)<=40)&&(player.x==bosses[bossloop].x)&&((player.face==0&&(bosses[bossloop].yplayer.y)))){ + bosses[bossloop].phase = bosses[bossloop].phase - 5; + if(bosses[bossloop].phase<=0){ + determine_powerup(powerups, bosses[bossloop], 600); + boom_object(boomstuff, bosses[bossloop], boomsound, boomchannel); + bosses[bossloop] = object_out(bosses[bossloop]); + score = score + 100; + }; + }; + }; + }; laser--; } else { //shot sound @@ -1751,15 +1776,17 @@ int main(){ score = score + 20; }; }; - if(saucer.active==1){ - if(abs(player.y-saucer.y)<=40){ - saucer.phase = saucer.phase - 5; - if(saucer.phase<=0){ - boom_object(boomstuff, saucer, boomsound, boomchannel); - saucer = object_out(saucer); - score = score + 100; + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active==1){ + if(abs(player.y-bosses[bossloop].y)<=40){ + bosses[bossloop].phase = bosses[bossloop].phase - 5; + if(bosses[bossloop].phase<=0){ + boom_object(boomstuff, bosses[bossloop], boomsound, boomchannel); + bosses[bossloop] = object_out(bosses[bossloop]); + score = score + 100; + }; }; - }; + }; }; }; @@ -1822,22 +1849,24 @@ int main(){ }; }; }; - //check saucer - if(saucer.active==1){ - if(check_collision(bullets[bulletloop], saucer)==1){ - //kill hurt or kill saucer, kill bullet - saucer.phase = saucer.phase - 1; - if(saucer.phase<=0){ - determine_powerup(powerups, saucer, 600); - boom_object(boomstuff, saucer, boomsound, boomchannel); - saucer = object_out(saucer); - bullets[bulletloop].vtime = 100; - bullets[bulletloop] = age_bullet(bullets[bulletloop]); - //add to score - score = score + 100; + //check bosses + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active==1){ + if(check_collision(bullets[bulletloop], bosses[bossloop])==1){ + //hurt or kill boss, kill bullet + bosses[bossloop].phase = bosses[bossloop].phase - 1; + if(bosses[bossloop].phase<=0){ + determine_powerup(powerups, bosses[bossloop], 600); + boom_object(boomstuff, bosses[bossloop], boomsound, boomchannel); + bosses[bossloop] = object_out(bosses[bossloop]); + bullets[bulletloop].vtime = 100; + bullets[bulletloop] = age_bullet(bullets[bulletloop]); + //add to score + score = score + 100; + }; }; }; - }; + }; }; }; @@ -1952,29 +1981,30 @@ int main(){ }; }; - //watch for saucer/player collisions - if(saucer.active == 1){ - - if(check_collision(player, saucer)==1){ - //kill player only - lives--; - boom_object(boomstuff, player, boomsound, boomchannel); - life_loss(lives, score); - player = player_init(player); - drawlocation = player.y-20; - //kill any carried pods - if(pod_in>0){ - for(int podloop = 0; podloop"); - strcpy (player.line1, "<_==>"); - }; + //watch for boss/player collisions + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active == 1){ + if(check_collision(player, bosses[bossloop])==1){ + //kill player only + lives--; + boom_object(boomstuff, player, boomsound, boomchannel); + life_loss(lives, score); + player = player_init(player); + drawlocation = player.y-20; + //kill any carried pods + if(pod_in>0){ + for(int podloop = 0; podloop"); + strcpy (player.line1, "<_==>"); + }; }; - }; + }; + }; + //Shields don't hurt bosses! Tee hee. . . }; - //Shields don't hurt the saucer! Tee hee. . . }; // Lander shots @@ -2076,34 +2106,36 @@ int main(){ }; }; - // saucer shots - if(saucer.active==1){ - if(rand()%1000>600){ - // saucer shoot - for(int saucershotloop = 0; saucershotloopsaucer.x){ landershot[saucershotloop].direction = 1; }; - //set multipler based on direction - multiplier = -1; - }; - if(player.y>=saucer.y){ - if(player.xsaucer.x){ landershot[saucershotloop].direction = 3; }; + // boss shots + for(int bossloop = 0; bossloop<6; bossloop++){ + if(bosses[bossloop].active==1){ + if(rand()%1000>600){ + // boss shoot + for(int bossshotloop = 0; bossshotloopbosses[bossloop].x){ landershot[bossshotloop].direction = 1; }; + //set multipler based on direction + multiplier = -1; + }; + if(player.y>=bosses[bossloop].y){ + if(player.xbosses[bossloop].x){ landershot[bossshotloop].direction = 3; }; + }; + landershot[bossshotloop].speed = bosses[bossloop].speed; + landershot[bossshotloop].x = bosses[bossloop].x; + landershot[bossshotloop].y = bosses[bossloop].y + (bosses[bossloop].speed * multiplier); + landershot[bossshotloop].vtime = 1; + break; }; - landershot[saucershotloop].speed = saucer.speed; - landershot[saucershotloop].x = saucer.x; - landershot[saucershotloop].y = saucer.y + (saucer.speed * multiplier); - landershot[saucershotloop].vtime = 1; - break; }; - }; + }; }; }; @@ -2181,7 +2213,9 @@ int main(){ crawlercount = 0; for(int crawlerloop = 0; crawlerloop0){ -- 2.9.0