Basic gravity.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Mon, 4 Dec 2006 14:42:32 +0000 (14:42 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Mon, 4 Dec 2006 14:42:32 +0000 (14:42 +0000)
git-svn-id: svn+ssh://svn/var/repos/curfender@550 bc5cbbab-a4ec-0310-bb52-ff3d296db539

CHANGELOG [new file with mode: 0644]
main.cpp

diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644 (file)
index 0000000..6e088b0
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1 @@
+Basic gravity.
index 5259072..24bf827 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -18,6 +18,8 @@ struct game_object {
   int direction; //direction, 10-key numbers 2-4-6-8 default to 5, stationary
   int face; // facing 0 left or 1 right, 4 is two-line
   int speed; //speed
+  int vspeed; //fall speed
+  int vtime;
   char line0[6]; //object: left
   char line1[6]; //object: right
   char line2[6]; //object: alt1
@@ -25,6 +27,16 @@ struct game_object {
   char radar[1]; //radar symbol
 };
 
+game_object gravitize(game_object object){
+  if(object.vspeed<4&&object.vspeed>0&&object.vtime%4==0){
+    object.vspeed = object.vspeed + 1;
+  };
+
+  object.vtime++;
+
+  return object;
+}
+
 void radar_plot(game_object object, int drawlocation){
 
   if(object.x>0&&object.y>0){
@@ -77,16 +89,21 @@ game_object process_motion(game_object object, game_object player){
       object.y = object.y-object.speed;
     };
     
+    object = gravitize(object);
+    object.x = object.x + object.vspeed;
+
     //bounds check
     if(object.x<=0){
       object.x=1;
       object.direction=5;
-      object.speed=0;
+      object.vspeed=1;
+      object.vtime=0;
     };
     if(object.x>=19){
       object.x=18;
       object.direction=5;
-     object.speed=0;
+      object.vspeed=0;
+      object.vtime=0;
     };
     
     //wrap check
@@ -165,9 +182,16 @@ game_object process_direction(game_object object, int input){
     };
     if(input==2){
       object.x++;
+      if(object.vspeed<4&&object.vspeed>0){
+       object.vspeed++;
+      };
     };
     if(input==8){
       object.x--;
+      if(object.vspeed>0){
+       object.vspeed--;
+       object.vtime=0;
+      };
     };
   };
   if(input==4){object.face=0;};
@@ -275,6 +299,8 @@ int main(){
   player.direction = 5;
   player.face = 1;
   player.speed = 0;
+  player.vspeed = 0;
+  player.vtime = 0;
   strcpy (player.line0, "<==_>");
   strcpy (player.line1, "<_==>");
   strcpy (player.radar, "=");
@@ -287,6 +313,8 @@ int main(){
   gate.direction = 5;
   gate.face = 4;
   gate.speed = 0;
+  gate.vspeed = 0;
+  gate.vtime = 0;
   strcpy (gate.line0, " ^ ");
   strcpy (gate.line1, "/|\\");
   strcpy (gate.radar, "|");
@@ -299,6 +327,8 @@ int main(){
   gatebeam1.direction = 5;
   gatebeam1.face = 4;
   gatebeam1.speed = 0;
+  gatebeam1.vspeed = 0;
+  gatebeam1.vtime = 0;
   strcpy (gatebeam1.line0, " ] ");
   strcpy (gatebeam1.line1, " [ ");
   strcpy (gatebeam1.radar, "|");
@@ -311,6 +341,8 @@ int main(){
   gatebeam2.direction = 5;
   gatebeam2.face = 4;
   gatebeam2.speed = 0;
+  gatebeam2.vspeed = 0;
+  gatebeam2.vtime = 0;
   strcpy (gatebeam2.line0, " ] ");
   strcpy (gatebeam2.line1, " [ ");
   strcpy (gatebeam2.radar, "|");
@@ -323,6 +355,8 @@ int main(){
   gatebeam3.direction = 5;
   gatebeam3.face = 4;
   gatebeam3.speed = 0;
+  gatebeam3.vspeed = 0;
+  gatebeam3.vtime = 0;
   strcpy (gatebeam3.line0, " ] ");
   strcpy (gatebeam3.line1, " [ ");
   strcpy (gatebeam3.radar, "|");
@@ -340,6 +374,8 @@ int main(){
   };
   pod2.face = 0;
   pod2.speed = 1;
+  pod2.vspeed = 0;
+  pod2.vtime = 0;
   strcpy (pod2.line0, " x ");
   strcpy (pod2.line1, " x ");
   strcpy (pod2.line2, " + ");
@@ -359,6 +395,8 @@ int main(){
   };
   pod3.face = 0;
   pod3.speed = 1;
+  pod3.vspeed = 0;
+  pod3.vtime = 0;
   strcpy (pod3.line0, " + ");
   strcpy (pod3.line1, " + ");
   strcpy (pod3.line2, " x ");
@@ -378,6 +416,8 @@ int main(){
   };
   pod4.face = 0;
   pod4.speed = 1;
+  pod4.vspeed = 0;
+  pod4.vtime = 0;
   strcpy (pod4.line0, " x ");
   strcpy (pod4.line1, " x ");
   strcpy (pod4.line2, " + ");
@@ -397,6 +437,8 @@ game_object pod5;
   };
   pod5.face = 0;
   pod5.speed = 1;
+  pod5.vspeed = 0;
+  pod5.vtime = 0;
   strcpy (pod5.line0, " + ");
   strcpy (pod5.line1, " + ");
   strcpy (pod5.line2, " x ");
@@ -416,6 +458,8 @@ game_object pod6;
   };
   pod6.face = 0;
   pod6.speed = 1;
+  pod6.vspeed = 0;
+  pod6.vtime = 0;
   strcpy (pod6.line0, " x ");
   strcpy (pod6.line1, " x ");
   strcpy (pod6.line2, " + ");
@@ -435,6 +479,8 @@ game_object pod7;
   };
   pod7.face = 0;
   pod7.speed = 1;
+  pod7.vspeed = 0;
+  pod7.vtime = 0;
   strcpy (pod7.line0, " + ");
   strcpy (pod7.line1, " + ");
   strcpy (pod7.line2, " x ");
@@ -454,6 +500,8 @@ game_object pod8;
   };
   pod8.face = 0;
   pod8.speed = 1;
+  pod8.vspeed = 0;
+  pod8.vtime = 0;
   strcpy (pod8.line0, " x ");
   strcpy (pod8.line1, " x ");
   strcpy (pod8.line2, " + ");
@@ -473,6 +521,8 @@ game_object pod9;
   };
   pod9.face = 0;
   pod9.speed = 1;
+  pod9.vspeed = 0;
+  pod9.vtime = 0;
   strcpy (pod9.line0, " + ");
   strcpy (pod9.line1, " + ");
   strcpy (pod9.line2, " x ");