ELEC2645 (2017/18) / Mbed 2 deprecated el15ww

Dependencies:   mbed

Revision:
13:4026781772cb
Parent:
12:d45bc5d878ad
Child:
15:47ea86f1ed70
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/snake_engine/snake_engine.cpp	Sun May 06 12:44:41 2018 +0000
@@ -0,0 +1,74 @@
+#include "snake_engine.h"
+
+snake_engine::snake_engine()
+{
+
+}
+
+snake_engine::~snake_engine()
+{
+    
+        
+    
+}
+
+void snake_engine::init()
+{
+    s.init();
+
+}
+
+void snake_engine::draw(N5110 &lcd)
+{
+        lcd.refresh();
+        lcd.clear();
+        lcd.drawRect(0,8,WIDTH ,HEIGHT -8,FILL_TRANSPARENT);    
+
+    s.draw(lcd);
+    f.draw(lcd);
+    print_point(lcd);
+}
+
+void snake_engine::update(Gamepad &pad, N5110 &lcd)
+{
+    s.update(_d,_mag); 
+   
+    if(getfruit(pad)) { 
+        f.reborn();
+        s.point();
+
+    }
+}
+
+
+bool snake_engine::getfruit(Gamepad &pad)
+{
+    Vector2D _f_pos = f.get_pos();
+    Vector2D _s_pos = s.get_pos();
+    if ((_f_pos.y >= _s_pos.y || _f_pos.y == _s_pos.y-1) &&
+            (_f_pos.y <= _s_pos.y || _f_pos.y+1 == _s_pos.y-1) &&
+            (_f_pos.x >= _s_pos.x || _f_pos.x+1 >= _s_pos.x || _f_pos.x+1 >= _s_pos.x ) &&
+            (_f_pos.x <= _s_pos.x || _f_pos.x+1 <= _s_pos.x)) { 
+        return true;
+    } else {
+        return false;
+    }
+}
+
+
+void snake_engine::print_point(N5110 &lcd)
+{
+    int print_point = s.get_point();
+    char buffer[14];
+    sprintf(buffer,"%2d",print_point);
+    lcd.printString(buffer,WIDTH/2 - 40,0); 
+}
+
+
+void snake_engine::read_input(Gamepad &pad)
+{
+    _d = pad.get_direction();
+    _mag = pad.get_mag();
+}
+
+