Crazies chase player.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 14:23:27 +0000 (14:23 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 14:23:27 +0000 (14:23 +0000)
git-svn-id: svn+ssh://svn/var/repos/curfender@575 bc5cbbab-a4ec-0310-bb52-ff3d296db539

CHANGELOG
main.cpp

index e9dcd9e..9976cd2 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+Crazies chase player.
 Landers -> crazies if all pods are dead and none are in.
 Made logo
 Landers respawn, too.
index 4066852..15fbaa5 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -24,6 +24,8 @@ struct game_object {
   int speed; //speed
   int vspeed; //fall speed
   int vtime;
+  int xtrail[10]; //x history
+  int ytrail[10]; //y history
   char line0[6]; //object: left
   char line1[6]; //object: right
   char line2[6]; //object: alt1
@@ -115,6 +117,21 @@ game_object object_out(game_object object){
   return object;
 }
 
+game_object crazy_motion(game_object object, game_object player){
+  if(player.ytrail[9]<object.y){ 
+    if(player.xtrail[9]<object.x){ object.direction = 7; };
+    if(player.xtrail[9]==object.x){ object.direction = 4; };
+    if(player.xtrail[9]>object.x){ object.direction = 1; };
+  };
+  if(player.ytrail[9]>=object.y){
+    if(player.xtrail[9]<object.x){ object.direction = 9; };
+    if(player.xtrail[9]==object.x){ object.direction = 6; };
+    if(player.xtrail[9]>object.x){ object.direction = 3; };
+  };
+
+  return object;
+}
+
 game_object process_motion(game_object object, game_object player){
   if((object.number>=2)&&(object.number<=9)&&(object.number==pod_in)){
       object.direction=player.direction;
@@ -123,6 +140,29 @@ game_object process_motion(game_object object, game_object player){
       object.y=player.y;
   } else {
     
+    if(object.number==1){
+      object.xtrail[9]=object.xtrail[8];
+      object.xtrail[8]=object.xtrail[7];
+      object.xtrail[7]=object.xtrail[6];
+      object.xtrail[6]=object.xtrail[5];
+      object.xtrail[5]=object.xtrail[4];
+      object.xtrail[4]=object.xtrail[3];
+      object.xtrail[3]=object.xtrail[2];
+      object.xtrail[2]=object.xtrail[1];
+      object.xtrail[1]=object.xtrail[0];
+      object.xtrail[0]=object.x;
+      object.ytrail[9]=object.ytrail[8];
+      object.ytrail[8]=object.ytrail[7];
+      object.ytrail[7]=object.ytrail[6];
+      object.ytrail[6]=object.ytrail[5];
+      object.ytrail[5]=object.ytrail[4];
+      object.ytrail[4]=object.ytrail[3];
+      object.ytrail[3]=object.ytrail[2];
+      object.ytrail[2]=object.ytrail[1];
+      object.ytrail[1]=object.ytrail[0];
+      object.ytrail[0]=object.y;
+    };
+
     if(object.direction==9){
       object.y = object.y+object.speed;
       object.x = object.x-object.speed;
@@ -205,7 +245,7 @@ game_object process_motion(game_object object, game_object player){
        object.face=5;
       };
     };
-
+  
   };
   return object;
 
@@ -247,7 +287,7 @@ game_object encrazify(game_object lander, game_object crazy){
   crazy.x = lander.x;
   crazy.y = lander.y;  
   crazy.face = lander.face;
-  crazy.vspeed = lander.vspeed;
+  crazy.vspeed = 1;
   crazy.vtime = lander.vtime;
   crazy.direction = lander.direction;
   crazy.speed = lander.speed;
@@ -436,10 +476,16 @@ int main(){
   player.speed = 0;
   player.vspeed = 0;
   player.vtime = 0;
+  player.xtrail[0] = 0;
+  player.xtrail[1] = 0;
+  player.ytrail[0] = 0;
+  player.ytrail[1] = 0;
   strcpy (player.line0, "<==_>");
   strcpy (player.line1, "<_==>");
   strcpy (player.radar, "=");
 
+  
+
   //gate
   game_object gate;
   gate.number = 10;
@@ -633,6 +679,7 @@ int main(){
 
     for(int crazyloop = 0; crazyloop<landermax; crazyloop++){ 
       if(crazies[crazyloop].active==1){ 
+       crazies[crazyloop] = crazy_motion(crazies[crazyloop], player);
        crazies[crazyloop] = process_motion(crazies[crazyloop], player);
       };
     };