aaa

Fork of Move by 涼太郎 中村

Revision:
6:0aa97a99c9cb
Parent:
5:0e18cf25291a
Child:
7:7f1721542753
--- a/move.cpp	Tue Sep 06 09:31:07 2016 +0000
+++ b/move.cpp	Tue Sep 06 10:18:17 2016 +0000
@@ -212,84 +212,40 @@
 }
 
 
-void back(int x, int y)
+void back300()
 { 
     float k = 0.9;
     int   k_theta = 2;
 
-    int length, dx, dy;
-    int *d_length, *disorder;
-    int absd_length;
-    float dtheta, ptheta;
+    int length, px, py, dx, dy;
     float daikei;
-
-    char direction;
-    if(abs(x - coordinateX()) > abs(y - coordinateY())) {
-        y = coordinateY();
-        direction = X_PLUS;
-        length = abs(x - coordinateX());
-        d_length = &dx;
-        disorder = &dy;
-    }
-    else {
-        x = coordinateX();
-        direction = Y_PLUS;
-        length = abs(y - coordinateY());
-        d_length = &dy;
-        disorder = &dx;
-    }
-
-    if(*d_length < 0)
-        direction *= -1;
-
-    switch(direction) {
-        case X_PLUS:
-            ptheta = 0;
-            break;
-        case Y_PLUS:
-            k *= -1;
-            ptheta = PI/2;
-            break;
-        case X_MINUS:
-            k *= -1;
-            ptheta = PI;
-            break;
-        case Y_MINUS:
-            ptheta = PI*3/2;
-            break;
-        default:
-            return;
-    }
-
-    turn_abs_rad(ptheta);
-
+    
+    update();
+    
+    px = coordinateX(); py = coordinateY();
+    
+    length = 300;
+    
     if(length == 0) return;
 
+    turn_abs_rad(PI);
+    
     while(1) {
         update();
-        dx = x - coordinateX();
-        dy = y - coordinateY();
-        dtheta = coordinateTheta() - ptheta;
-
-        if(*disorder>1) {
-            *disorder = 1;
-        } else if(*disorder<-1) {
-            *disorder = -1;
-        }
-
-        absd_length = abs(*d_length);
+        dx = coordinateX() - px;
+        dy = coordinateY() - py;
 
-        if(absd_length > length - 30) {
-            daikei = -(length - absd_length) / 30.0;
-        } else if(absd_length < 150) {
-            daikei = -absd_length / 150.0;
-        } else
-            daikei = -1;
+        if(dy>2) {
+            dy = 2;
+        } else if(dy<-2) {
+            dy = -2;
+        }
+    
 
-        move(daikei * (rightspeed*6/7.0 - k*(*disorder) + k_theta*dtheta) - rightspeed/7.0,
-             daikei * (leftspeed*6/7.0  + k*(*disorder) - k_theta*dtheta) - leftspeed/7.0);
+        move(-30*6/7.0 - k*dy, -33 + k*dy);
 
-        if((direction > 0 && *d_length <= 0) || (direction < 0 &&  *d_length >= 0)) {
+        
+        if(dx>length) {
             move(0, 0);
             break;
         }