Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Revision:
22:ee698f66146f
Parent:
21:e41126528cc6
Child:
24:1c118b071430
--- a/Snake/Snake.cpp	Wed Apr 10 04:08:13 2019 +0000
+++ b/Snake/Snake.cpp	Wed Apr 10 05:24:20 2019 +0000
@@ -32,52 +32,16 @@
 {   
     if(m == 0){
         _x[0] = WIDTH/2;  //Spawns player sprite near the middle of the screen.
-        _x[1] = _x[0];
-        _x[2] = _x[1];
-        _x[3] = _x[2];
-        _x[4] = _x[3];
-        _x[5] = _x[4];
-        _x[6] = _x[5];
-        _x[7] = _x[6];
-        _x[8] = _x[7];
-        _x[9] = _x[8];
-        _x[10] = _x[9];
-        _x[11] = _x[10];
-        _x[12] = _x[11];
-        _x[13] = _x[12];
-        _x[14] = _x[13];
-        _y[0] = HEIGHT - 3;
-        _y[1] = _y[0] - 3; 
-        _y[2] = _y[0] - 6; 
-        _y[3] = _y[0] - 9; 
-        _y[4] = _y[0] - 12; 
-        _y[5] = _y[0] - 15; 
-        _y[6] = _y[0] - 18; 
-        _y[7] = _y[0] - 21; 
-        _y[8] = _y[0] - 24; 
-        _y[9] = _y[0] - 27; 
-        _y[10] = _y[0] - 30; 
-        _y[11] = _y[0] - 33; 
-        _y[12] = _y[0] - 36; 
-        _y[13] = _y[0] - 39; 
-        _y[14] = _y[0] - 42;
-        b[0] = 1;
-        b[1] = 1;
-        b[2] = 1;
-        b[3] = 1;
-        b[4] = 1;
-        b[5] = 1;
-        b[6] = 1;
-        b[7] = 1;
-        b[8] = 1;
-        b[9] = 1;
-        b[10] = 1;
-        b[11] = 1;
-        b[12] = 1;
-        b[13] = 1;
+        _y[0] = HEIGHT - 3; 
+        
+        for(int i=0; i<=13; i++)  {
+            _x[i+1] = _x[i];
+            _y[i+1] = _y[i] - 3;
+            b[i] = 1;
+        }
         b[14] = 1; 
         m = m+1;  
-        }
+    }
     //printf("SPRITE %d %d \n", _x[0], _y[0]); 
     if(length == 0)  {
         while ((pad.check_event(Gamepad::BACK_PRESSED) == false)) {
@@ -886,397 +850,51 @@
 
 
 
-void Snake::update(Direction d,float mag,int length, int speed, int* b0_to_b14)
+void Snake::update(Direction d,float mag,int length, int speed, int* b)
 {
     _speed = speed;  //Speed changes depending on how much you push the joystick.(As Of Now)
-    b[0] = b0_to_b14[0];
-    b[1] = b0_to_b14[1];
-    b[2] = b0_to_b14[2];
-    b[3] = b0_to_b14[3];
-    b[4] = b0_to_b14[4];
-    b[5] = b0_to_b14[5];
-    b[6] = b0_to_b14[6];
-    b[7] = b0_to_b14[7];
-    b[8] = b0_to_b14[8];
-    b[9] = b0_to_b14[9];
-    b[10] = b0_to_b14[10];
-    b[11] = b0_to_b14[11];
-    b[12] = b0_to_b14[12];
-    b[13] = b0_to_b14[13];
-    b[14] = b0_to_b14[14];
     
-    if(length > 1)  {
-        if ((_x[0] > _x[1])&&(b[1] == 1)&&(b[0] == 1))  {
-            _x[0]-=_speed;    
-        }
-        if ((_x[0] < _x[1])&&(b[1] == 1)&&(b[0] == 1))  {
-            _x[0]+=_speed;    
-        }
-    }
-    if(length > 2)  {
-        if ((_x[1] > _x[2])&&(b[2] == 1)&&(b[1] == 1))  {
-            _x[1]-=_speed;    
-        }
-        if ((_x[1] < _x[2])&&(b[2] == 1)&&(b[1] == 1))  {
-            _x[1]+=_speed;    
-        }
-    }
-    if(length > 3)  {
-        if ((_x[2] > _x[3])&&(b[3] == 1)&&(b[2] == 1))  {
-            _x[2]-=_speed;    
-            }
-        if ((_x[2] < _x[3])&&(b[3] == 1)&&(b[2] == 1))  {
-            _x[2]+=_speed;    
+    for(int i=0; i<=13; i++)  {
+        if(length > i+1)  {
+            if ((_x[i] > _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1))  {
+                _x[i]-=_speed;    
             }
-    }
-    if(length > 4)  {
-        if ((_x[3] > _x[4])&&(b[4] == 1)&&(b[3] == 1))  {
-            _x[3]-=_speed;    
-        }
-        if ((_x[3] < _x[4])&&(b[4] == 1)&&(b[3] == 1))  {
-            _x[3]+=_speed;    
-        }
-    }
-    if(length > 5)  {
-        if ((_x[4] > _x[5])&&(b[5] == 1)&&(b[4] == 1))  {
-            _x[4]-=_speed;    
-        }
-        if ((_x[4] < _x[5])&&(b[5] == 1)&&(b[4] == 1))  {
-            _x[4]+=_speed;    
-        }
-    }
-    if(length > 6)  {
-        if ((_x[5] > _x[6])&&(b[6] == 1)&&(b[5] == 1))  {
-            _x[5]-=_speed;    
-        }
-    if ((_x[5] < _x[6])&&(b[6] == 1)&&(b[5] == 1))  {
-            _x[5]+=_speed;    
-        }
-    }
-    if(length > 7)  {
-        if ((_x[6] > _x[7])&&(b[7] == 1)&&(b[6] == 1))  {
-            _x[6]-=_speed;    
-        }
-        if ((_x[6] < _x[7])&&(b[7] == 1)&&(b[6] == 1))  {
-            _x[6]+=_speed;    
-        }
-    }
-    if(length > 8)  {
-        if ((_x[7] > _x[8])&&(b[8] == 1)&&(b[7] == 1))  {
-            _x[7]-=_speed;    
-        }
-        if ((_x[7] < _x[8])&&(b[8] == 1)&&(b[7] == 1))  {
-            _x[7]+=_speed;    
-        }
-    }
-    if(length > 9)  {
-        if ((_x[8] > _x[9])&&(b[9] == 1)&&(b[8] == 1))  {
-            _x[8]-=_speed;    
-        }
-        if ((_x[8] < _x[9])&&(b[9] == 1)&&(b[8] == 1))  {
-            _x[8]+=_speed;    
-        }
-    }
-    if(length > 10)  {
-        if ((_x[9] > _x[10])&&(b[10] == 1)&&(b[9] == 1))  {
-            _x[9]-=_speed;    
-        }
-        if ((_x[9] < _x[10])&&(b[10] == 1)&&(b[9] == 1))  {
-            _x[9]+=_speed;    
-        }
-    }
-    if(length > 11)  {
-        if ((_x[10] > _x[11])&&(b[11] == 1)&&(b[10] == 1))  {
-            _x[10]-=_speed;    
-        }
-        if ((_x[10] < _x[11])&&(b[11] == 1)&&(b[10] == 1))  {
-            _x[10]+=_speed;    
-        }
-    }
-    if(length > 12)  {
-        if ((_x[11] > _x[12])&&(b[12] == 1)&&(b[11] == 1))  {
-            _x[11]-=_speed;    
-        }
-        if ((_x[11] < _x[12])&&(b[12] == 1)&&(b[11] == 1))  {
-            _x[11]+=_speed;    
-        }
-    }
-    if(length > 13)  {
-        if ((_x[12] > _x[13])&&(b[13] == 1)&&(b[12] == 1))  {
-            _x[12]-=_speed;    
-        }
-        if ((_x[12] < _x[13])&&(b[13] == 1)&&(b[12] == 1))  {
-            _x[12]+=_speed;    
+            if ((_x[i] < _x[i+1])&&(b[i+1] == 1)&&(b[i] == 1))  {
+                _x[i]+=_speed;    
+            }
         }
     }
-    if(length > 14)  {
-        if ((_x[13] > _x[14])&&(b[14] == 1)&&(b[13] == 1))  {
-            _x[13]-=_speed;    
-        }
-        if ((_x[13] < _x[14])&&(b[14] == 1)&&(b[13] == 1))  {
-            _x[13]+=_speed;                                                      
-        }
-    }
-    
-    if((length == 15)&&(b[14] == 1))  {
-        if (d == E) {
-            _x[14]+= _speed;
-        }
-        if (d == W) {
-            _x[14]-= _speed;
-        }
-    }
-    if((length == 14)&&(b[13] == 1))  {
-        if (d == E) {
-            _x[13]+= _speed;
-        }
-        if (d == W) {
-            _x[13]-= _speed;
-        }
-    }
-    if((length == 13)&&(b[12] == 1))  {
-        if (d == E) {
-            _x[12]+= _speed;
-        }
-        if (d == W) {
-            _x[12]-= _speed;
-        }
-    }
-    if((length == 12)&&(b[11] == 1))  {
-        if (d == E) {
-            _x[11]+= _speed;
-        }
-        if (d == W) {
-            _x[11]-= _speed;
-        }
-    }
-    if((length == 11)&&(b[10] == 1))  {
-        if (d == E) {
-            _x[10]+= _speed;
-        }
-        if (d == W) {
-            _x[10]-= _speed;
-        }
-    }
-    if((length == 10)&&(b[9] == 1))  {
-        if (d == E) {
-            _x[9]+= _speed;
-        }
-        if (d == W) {
-            _x[9]-= _speed;
-        }
-    }
-    if((length == 9)&&(b[8] == 1))  {
-        if (d == E) {
-            _x[8]+= _speed;
-        }
-        if (d == W) {
-            _x[8]-= _speed;
-        }
-    }
-    if((length == 8)&&(b[7] == 1))  {
-        if (d == E) {
-            _x[7]+= _speed;
-        }
-        if (d == W) {
-            _x[7]-= _speed;
-        }
-    }
-    if((length == 7)&&(b[6] == 1))  {
-        if (d == E) {
-            _x[6]+= _speed;
-        }
-        if (d == W) {
-            _x[6]-= _speed;
-        }
-    }
-    if((length == 6)&&(b[5] == 1))  {
-        if (d == E) {
-            _x[5]+= _speed;
-        }
-        if (d == W) {
-            _x[5]-= _speed;
-        }
-    }
-    if((length == 5)&&(b[4] == 1))  {
-        if (d == E) {
-            _x[4]+= _speed;
-        }
-        if (d == W) {
-            _x[4]-= _speed;
-        }
-    }
-    if((length == 4)&&(b[3] == 1))  {
-        if (d == E) {
-            _x[3]+= _speed;
-        }
-        if (d == W) {
-            _x[3]-= _speed;
-        }
-    }
-    if((length == 3)&&(b[2] == 1))  {
-        if (d == E) {
-            _x[2]+= _speed;
-        }
-        if (d == W) {
-            _x[2]-= _speed;
-        }
-    }
-    if((length == 2)&&(b[1] == 1))  {
-        if (d == E) {
-            _x[1]+= _speed;
-        }
-        if (d == W) {
-            _x[1]-= _speed;
-        }
-    }
-    if((length == 1)&&(b[0] == 1))  {
-        if (d == E) {
-            _x[0]+= _speed;
-        }
-        if (d == W) {
-            _x[0]-= _speed;
-        }
+ 
+    for(int i=14; i>=0; i--)  {
+            if((length == i+1)&&(b[i] == 1))  {
+                if (d == E) {
+                    _x[i]+= _speed;
+                }
+                if (d == W) {
+                    _x[i]-= _speed;
+                }
+            }
     }
 
 // the following makes sure that when the length is increased, the snake stays where it was when it ate food.
 
-    if(length < 2)  {
-        _x[1] = _x[0];
-    }
-    else if(length < 3)  {
-        _x[2] = _x[1];
-    }
-    else if(length < 4)  {
-        _x[3] = _x[2];
-    }
-    else if(length < 5)  {
-        _x[4] = _x[3];
-    }
-    else if(length < 6)  {
-        _x[5] = _x[4];
-    }
-    else if(length < 7)  {
-        _x[6] = _x[5];
-    }
-    else if(length < 8)  {
-        _x[7] = _x[6];
-    }
-    else if(length < 9)  {
-        _x[8] = _x[7];
-    }
-    else if(length < 10)  {
-        _x[9] = _x[8];
-    }
-    else if(length < 11) {
-        _x[10] = _x[9];
-    }
-    else if(length < 12)  {
-        _x[11] = _x[10];
-    }
-    else if(length < 13)  {
-        _x[12] = _x[11];
-    }
-    else if(length < 14)  {
-        _x[13] = _x[12];
-    }
-    else if(length < 15)  {
-        _x[14] = _x[13];
+    for(int i=3; i<=15; i++)  {
+            if(length < 2)  {
+                _x[1] = _x[0];
+            }
+            else if(length < i)  {
+                _x[i-1] = _x[i-2];
+            }
     }
     
     //Limits set so that the sprite does not travel off the screen.
-    if (_y[0] <= 0) {
-        _y[0] = 0;
-    }
-    if (_x[0] <= 0) {
-        _x[0] = 0;
-    }
-    if (_x[1] <= 0) {
-        _x[1] = 0;
-    }
-    if (_x[2] <= 0) {
-        _x[2] = 0;
-    }
-    if (_x[3] <= 0) {
-        _x[3] = 0;
-    }
-    if (_x[4] <= 0) {
-        _x[4] = 0;
-    }
-    if (_x[5] <= 0) {
-        _x[5] = 0;
-    }
-    if (_x[6] <= 0) {
-        _x[6] = 0;
-    }
-    if (_x[7] <= 0) {
-        _x[7] = 0;
-    }
-    if (_x[8] <= 0) {
-        _x[8] = 0;
-    }
-    if (_x[9] <= 0) {
-        _x[9] = 0;
-    }
-    if (_x[10] <= 0) {
-        _x[10] = 0;
-    }
-    if (_x[11] <= 0) {
-        _x[11] = 0;
-    }
-    if (_x[12] <= 0) {
-        _x[12] = 0;
-    }
-    if (_x[13] <= 0) {
-        _x[13] = 0;
-    }
-    if (_x[14] <= 0) {
-        _x[14] = 0;
-    }
-    if (_x[0] > 81) {
-        _x[0] = 81;
-    }
-    if (_x[1] > 81) {
-        _x[1] = 81;
-    }
-    if (_x[2] > 81) {
-        _x[2] = 81;
-    }
-    if (_x[3] > 81) {
-        _x[3] = 81;
-    }
-    if (_x[4] > 81) {
-        _x[4] = 81;
-    }
-    if (_x[5] > 81) {
-        _x[5] = 81;
-    }
-    if (_x[6] > 81) {
-        _x[6] = 81;
-    }
-    if (_x[7] > 81) {
-        _x[7] = 81;
-    }
-    if (_x[8] > 81) {
-        _x[8] = 81;
-    }
-    if (_x[9] > 81) {
-        _x[9] = 81;
-    }
-    if (_x[10] > 81) {
-        _x[10] = 81;
-    }
-    if (_x[11] > 81) {
-        _x[11] = 81;
-    }
-    if (_x[12] > 81) {
-        _x[12] = 81;
-    }
-    if (_x[13] > 81) {
-        _x[13] = 81;
-    }
-    if (_x[14] > 81) {
-        _x[14] = 81;
+    for(int i=0; i<=14; i++)  {
+            if (_x[i] <= 0) {
+                _x[i] = 0;
+            }
+            if (_x[i] > 81) {
+                _x[i] = 81;
+            }
     }
 }