Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Revision:
8:890b986b16a4
Parent:
7:48ba87cd79b5
Child:
9:d1d79d4ee673
--- a/Snake/Snake.cpp	Tue Mar 26 14:45:15 2019 +0000
+++ b/Snake/Snake.cpp	Tue Mar 26 18:36:50 2019 +0000
@@ -11,8 +11,11 @@
 }
 
 //The Snake Sprite.
-int snake_sprite[1][1] = {
-    {1},
+int snake_sprite[3][3] = {
+    {0,1,0},
+    {1,0,1},
+    {0,1,0},
+
     };
     
 int m = 0; //Variable used to allow a starting location for the player.
@@ -26,15 +29,181 @@
 }
 
 
-void Snake::draw(N5110 &lcd)
+void Snake::draw(N5110 &lcd, int length)
 {   
     if(m == 0){
         _x = WIDTH/2;  //Spawns player sprite near the middle of the screen.
+        _xa = _x;
+        _xb = _x;
+        _xc = _x;
+        _xd = _x;
+        _xe = _x;
+        _xf = _x;
+        _xg = _x;
+        _xh = _x;
+        _xi = _x;
+        _xj = _x;
+        _xk = _x;
+        _xl = _x;
+        _xm = _x;
+        _xn = _x;
         _y = HEIGHT - 3; 
         m = m+1;  
         }
     //printf("SPRITE %d %d \n", _x, _y); 
-    lcd.drawSprite(_x,_y,1,1,(int *)snake_sprite); //Function used to draw the sprite.
+    if(length == 0)  {
+    NVIC_SystemReset(); //Software Reset.
+    }
+    if(length == 1)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    }
+    if(length == 2)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    }
+    if(length == 3)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    }
+    if(length == 4)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    }
+    if(length == 5)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    }
+    if(length == 6)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    }
+    if(length == 7)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    }
+    if(length == 8)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    }
+    if(length == 9)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    }
+    if(length == 10)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    }
+    if(length == 11)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xj,_y-30,3,3,(int *)snake_sprite);
+    }
+    if(length == 12)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xj,_y-30,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xk,_y-33,3,3,(int *)snake_sprite);
+    }
+    if(length == 13)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xj,_y-30,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xk,_y-33,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xl,_y-36,3,3,(int *)snake_sprite);
+    }
+    if(length == 14)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xj,_y-30,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xk,_y-33,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xl,_y-36,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xm,_y-39,3,3,(int *)snake_sprite);
+    }
+    if(length == 15)  {
+    lcd.drawSprite(_x,_y,3,3,(int *)snake_sprite); //Function used to draw the sprite.
+    lcd.drawSprite(_xa,_y-3,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xb,_y-6,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xc,_y-9,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xd,_y-12,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xe,_y-15,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xf,_y-18,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xg,_y-21,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xh,_y-24,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xi,_y-27,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xj,_y-30,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xk,_y-33,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xl,_y-36,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xm,_y-39,3,3,(int *)snake_sprite);
+    lcd.drawSprite(_xn,_y-42,3,3,(int *)snake_sprite);
+    }
 }
 
 
@@ -47,18 +216,243 @@
 }
 
 
-void Snake::update(Direction d,float mag)
+void Snake::update(Direction d,float mag,int length)
 {
-    _speed = int(mag*7.0f);  //Speed changes depending on how much you push the joystick.(As Of Now)
-
+    _speed = 1;  //Speed changes depending on how much you push the joystick.(As Of Now)
+    
+    if(length > 1)  {
+        if (_x > _xa)  {
+            _x-=_speed;    
+        }
+        if (_x < _xa)  {
+            _x+=_speed;    
+        }
+        if(length > 2)  {
+            if (_xa > _xb)  {
+                _xa-=_speed;    
+            }
+            if (_xa < _xb)  {
+                _xa+=_speed;    
+            }
+            if(length > 3)  {
+                if (_xb > _xc)  {
+                    _xb-=_speed;    
+                }
+                if (_xb < _xc)  {
+                    _xb+=_speed;    
+                }
+                if(length > 4)  {
+                    if (_xc > _xd)  {
+                        _xc-=_speed;    
+                    }
+                    if (_xc < _xd)  {
+                        _xc+=_speed;    
+                    }
+                    if(length > 5)  {
+                        if (_xd > _xe)  {
+                            _xd-=_speed;    
+                        }
+                        if (_xd < _xe)  {
+                            _xd+=_speed;    
+                        }
+                        if(length > 6)  {
+                            if (_xe > _xf)  {
+                                _xe-=_speed;    
+                            }
+                            if (_xe < _xf)  {
+                                _xe+=_speed;    
+                            }
+                            if(length > 7)  {
+                                if (_xf > _xg)  {
+                                    _xf-=_speed;    
+                                }
+                                if (_xf < _xg)  {
+                                    _xf+=_speed;    
+                                }
+                                if(length > 8)  {
+                                    if (_xg > _xh)  {
+                                        _xg-=_speed;    
+                                    }
+                                    if (_xg < _xh)  {
+                                        _xg+=_speed;    
+                                    }
+                                    if(length > 9)  {
+                                        if (_xh > _xi)  {
+                                            _xh-=_speed;    
+                                        }
+                                        if (_xh < _xi)  {
+                                            _xh+=_speed;    
+                                        }
+                                        if(length > 10)  {
+                                            if (_xi > _xj)  {
+                                                _xi-=_speed;    
+                                            }
+                                            if (_xi < _xj)  {
+                                                _xi+=_speed;    
+                                            }
+                                            if(length > 11)  {
+                                                if (_xj > _xk)  {
+                                                    _xj-=_speed;    
+                                                }
+                                                if (_xj < _xk)  {
+                                                    _xj+=_speed;    
+                                                }
+                                                if(length > 12)  {
+                                                    if (_xk > _xl)  {
+                                                        _xk-=_speed;    
+                                                    }
+                                                    if (_xk < _xl)  {
+                                                        _xk+=_speed;    
+                                                    }
+                                                    if(length > 13)  {
+                                                        if (_xl > _xm)  {
+                                                            _xl-=_speed;    
+                                                        }
+                                                        if (_xl < _xm)  {
+                                                            _xl+=_speed;    
+                                                        }
+                                                        if(length > 14)  {
+                                                            if (_xm > _xn)  {
+                                                                _xm-=_speed;    
+                                                            }
+                                                            if (_xm < _xn)  {
+                                                                _xm+=_speed;    
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 
     // Diagonal speeds are /2 to prevent player from going double the speed.
-
-    if (d == E) {
-        _x+=_speed;
+    if(length == 15)  {
+        if (d == E) {
+            _xn+= _speed;
+        }
+        if (d == W) {
+            _xn-= _speed;
+        }
+    }
+    if(length == 14)  {
+        if (d == E) {
+            _xm+= _speed;
+        }
+        if (d == W) {
+            _xm-= _speed;
+        }
+    }
+    if(length == 13)  {
+        if (d == E) {
+            _xl+= _speed;
+        }
+        if (d == W) {
+            _xl-= _speed;
+        }
+    }
+    if(length == 12)  {
+        if (d == E) {
+            _xk+= _speed;
+        }
+        if (d == W) {
+            _xk-= _speed;
+        }
+    }
+    if(length == 11)  {
+        if (d == E) {
+            _xj+= _speed;
+        }
+        if (d == W) {
+            _xj-= _speed;
+        }
+    }
+    if(length == 10)  {
+        if (d == E) {
+            _xi+= _speed;
+        }
+        if (d == W) {
+            _xi-= _speed;
+        }
+    }
+    if(length == 9)  {
+        if (d == E) {
+            _xh+= _speed;
+        }
+        if (d == W) {
+            _xh-= _speed;
+        }
     }
-    if (d == W) {
-        _x-=_speed;
+    if(length == 8)  {
+        if (d == E) {
+            _xg+= _speed;
+        }
+        if (d == W) {
+            _xg-= _speed;
+        }
+    }
+    if(length == 7)  {
+        if (d == E) {
+            _xf+= _speed;
+        }
+        if (d == W) {
+            _xf-= _speed;
+        }
+    }
+    if(length == 6)  {
+        if (d == E) {
+            _xe+= _speed;
+        }
+        if (d == W) {
+            _xe-= _speed;
+        }
+    }
+    if(length == 5)  {
+        if (d == E) {
+            _xd+= _speed;
+        }
+        if (d == W) {
+            _xd-= _speed;
+        }
+    }
+    if(length == 4)  {
+        if (d == E) {
+            _xc+= _speed;
+        }
+        if (d == W) {
+            _xc-= _speed;
+        }
+    }
+    if(length == 3)  {
+        if (d == E) {
+            _xb+= _speed;
+        }
+        if (d == W) {
+            _xb-= _speed;
+        }
+    }
+    if(length == 2)  {
+        if (d == E) {
+            _xa+= _speed;
+        }
+        if (d == W) {
+            _xa-= _speed;
+        }
+    }
+    if(length == 1)  {
+        if (d == E) {
+            _x+= _speed;
+        }
+        if (d == W) {
+            _x-= _speed;
+        }
     }
 
 
@@ -69,12 +463,92 @@
     if (_x <= 0) {
         _x = 0;
     }
-    if (_x > 78) {
-        _x = 78;
+    if (_xa <= 0) {
+        _xa = 0;
+    }
+    if (_xb <= 0) {
+        _xb = 0;
+    }
+    if (_xc <= 0) {
+        _xc = 0;
+    }
+    if (_xd <= 0) {
+        _xd = 0;
+    }
+    if (_xe <= 0) {
+        _xe = 0;
+    }
+    if (_xf <= 0) {
+        _xf = 0;
+    }
+    if (_xg <= 0) {
+        _xg = 0;
+    }
+    if (_xh <= 0) {
+        _xh = 0;
+    }
+    if (_xi <= 0) {
+        _xi = 0;
+    }
+    if (_xj <= 0) {
+        _xj = 0;
+    }
+    if (_xk <= 0) {
+        _xk = 0;
+    }
+    if (_xl <= 0) {
+        _xl = 0;
+    }
+    if (_xm <= 0) {
+        _xm = 0;
+    }
+    if (_xn <= 0) {
+        _xn = 0;
     }
-    if (_y > 42) {
-        _y = 42;
+    if (_x > 81) {
+        _x = 81;
+    }
+    if (_xa > 81) {
+        _xa = 81;
+    }
+    if (_xb > 81) {
+        _xb = 81;
+    }
+    if (_xc > 81) {
+        _xc = 81;
+    }
+    if (_xd > 81) {
+        _xd = 81;
+    }
+    if (_xe > 81) {
+        _xe = 81;
+    }
+    if (_xf > 81) {
+        _xf = 81;
     }
-
+    if (_xg > 81) {
+        _xg = 81;
+    }
+    if (_xh > 81) {
+        _xh = 81;
+    }
+    if (_xi > 81) {
+        _xi = 81;
+    }
+    if (_xj > 81) {
+        _xj = 81;
+    }
+    if (_xk > 81) {
+        _xk = 81;
+    }
+    if (_xl > 81) {
+        _xl = 81;
+    }
+    if (_xm > 81) {
+        _xm = 81;
+    }
+    if (_xn > 81) {
+        _xn = 81;
+    }
 }