ELEC2645 (2016/17) / Mbed 2 deprecated 2645_Project_el15as

Dependencies:   mbed

Revision:
6:33fd1797beb4
Parent:
5:158e2951654b
Child:
7:b54323241435
--- a/Animation/Animation.cpp	Sun Apr 30 22:51:35 2017 +0000
+++ b/Animation/Animation.cpp	Mon May 01 22:47:46 2017 +0000
@@ -1,35 +1,206 @@
-#include "mbed.h"
-#include "N5110.h"
-#include "Gamepad.h"
-#include "Player.h"
-#include "GameEngine.h"
+#include "Animation.h"
+
+Animation::Animation()
+{
+
+}
 
-N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
-Serial pc(USBTX, USBRX); // tx, rx
-Gamepad pad;
-GameEngine game;
-Player player;
+Animation::~Animation()
+{
 
-void update_screen();
+}
 
-int main()
+void Animation::spawn(N5110 &lcd, intVector2D starting_position)
 {
-    lcd.init();
-    pad.init();
+    if (spawnCycle == 0)
+    {
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
+        lcd.refresh();
+        wait(0.1);
 
-    lcd.normalMode();
-    lcd.setBrightness(1);
-    game.init(4);
-    lcd.refresh();
+        lcd.setPixel(starting_position.x, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x + 2, starting_position.y - 1, false);
+        lcd.refresh();
+        wait(0.1);
+
+        lcd.setPixel(starting_position.x - 1, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x + 3, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x, starting_position.y - 1);
+        lcd.setPixel(starting_position.x + 2, starting_position.y - 1);
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1);
+        lcd.refresh();
+        wait(0.1);
 
-    while(1) {  // loop forever
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x, starting_position.y);
+        lcd.setPixel(starting_position.x + 2, starting_position.y);
+        lcd.setPixel(starting_position.x + 1, starting_position.y);
+        lcd.refresh();
+        wait(0.1);
 
-        game.read_input(pad,pc);
-        game.update(pad, pc, lcd);
-        game.draw(lcd);
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1);
+        lcd.setPixel(starting_position.x + 1, starting_position.y, false);
+        lcd.setPixel(starting_position.x, starting_position.y + 1);
+        lcd.setPixel(starting_position.x + 2, starting_position.y + 1);
+        lcd.setPixel(starting_position.x + 1, starting_position.y + 1);
+        lcd.refresh();
+        wait(0.1);
 
-        wait(1.0f/10); // 10 fps
+        spawnCycle++;
+    }
+    else if (spawnCycle == 1)
+    {
+        lcd.setPixel(starting_position.x, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
+        lcd.setPixel(starting_position.x + 2, starting_position.y - 1, false);
+        spawnCycle++;
+    }
+    else if (spawnCycle == 2)
+    {
+        lcd.setPixel(starting_position.x + 1, starting_position.y - 1, false);
+        spawnCycle++;
     }
 }
 
+void Animation::death(N5110 &lcd, intVector2D position, int frame)
+{
+    if (frame == 0)
+    {
+        lcd.setPixel(position.x + 1, position.y, false);
+        lcd.setPixel(position.x, position.y + 1, false);
+        lcd.setPixel(position.x + 1, position.y + 2, false);
+        lcd.setPixel(position.x + 2, position.y + 1, false);
+        lcd.setPixel(position.x + 1, position.y - 1);
+        lcd.setPixel(position.x - 1, position.y + 1);
+        lcd.setPixel(position.x + 1, position.y + 3);
+        lcd.setPixel(position.x + 3, position.y + 1);
+    }
+    else if (frame == 1)
+    {
+        lcd.setPixel(position.x + 1, position.y - 1, false);
+        lcd.setPixel(position.x - 1, position.y + 1, false);
+        lcd.setPixel(position.x + 1, position.y + 3, false);
+        lcd.setPixel(position.x + 3, position.y + 1, false);
+        lcd.setPixel(position.x, position.y, false);
+        lcd.setPixel(position.x + 2, position.y + 2, false);
+        lcd.setPixel(position.x + 2, position.y, false);
+        lcd.setPixel(position.x, position.y + 2, false);
+        lcd.setPixel(position.x, position.y - 1);
+        lcd.setPixel(position.x - 1, position.y);
+        lcd.setPixel(position.x + 3, position.y);
+        lcd.setPixel(position.x + 2, position.y - 1);
+        lcd.setPixel(position.x - 1, position.y + 2);
+        lcd.setPixel(position.x, position.y + 3);
+        lcd.setPixel(position.x + 3, position.y + 2);
+        lcd.setPixel(position.x + 2, position.y + 3);
+    }
+    else if (frame == 2)
+    {
+        lcd.setPixel(position.x, position.y - 1, false);
+        lcd.setPixel(position.x - 1, position.y, false);
+        lcd.setPixel(position.x + 3, position.y, false);
+        lcd.setPixel(position.x + 2, position.y - 1, false);
+        lcd.setPixel(position.x - 1, position.y + 2, false);
+        lcd.setPixel(position.x, position.y + 3, false);
+        lcd.setPixel(position.x + 3, position.y + 2, false);
+        lcd.setPixel(position.x + 2, position.y + 3, false);
+        lcd.setPixel(position.x, position.y - 2);
+        lcd.setPixel(position.x - 2, position.y);
+        lcd.setPixel(position.x + 4, position.y);
+        lcd.setPixel(position.x + 2, position.y - 2);
+        lcd.setPixel(position.x - 2, position.y + 2);
+        lcd.setPixel(position.x, position.y + 4);
+        lcd.setPixel(position.x + 4, position.y + 2);
+        lcd.setPixel(position.x + 2, position.y + 4);
+    }
+    else if (frame == 3)
+    {
+        lcd.setPixel(position.x, position.y - 2, false);
+        lcd.setPixel(position.x - 2, position.y, false);
+        lcd.setPixel(position.x + 4, position.y, false);
+        lcd.setPixel(position.x + 2, position.y - 2, false);
+        lcd.setPixel(position.x - 2, position.y + 2, false);
+        lcd.setPixel(position.x, position.y + 4, false);
+        lcd.setPixel(position.x + 4, position.y + 2, false);
+        lcd.setPixel(position.x + 2, position.y + 4, false);
+    }
+}
 
+void Animation::finish(N5110 &lcd, intVector2D finish_position)
+{
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 2, false);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y, false);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y - 1, false);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 2);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
+    lcd.setPixel(finish_position.x + 3, finish_position.y);
+    lcd.setPixel(finish_position.x + 2, finish_position.y + 1, false);
+    lcd.setPixel(finish_position.x + 1, finish_position.y + 1);
+    lcd.setPixel(finish_position.x, finish_position.y, false);
+    lcd.setPixel(finish_position.x, finish_position.y + 1, false);
+    lcd.setPixel(finish_position.x, finish_position.y + 2, false);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 1, finish_position.y, false);
+    lcd.setPixel(finish_position.x + 1, finish_position.y + 1, false);
+    lcd.setPixel(finish_position.x + 1, finish_position.y + 2, false);
+    lcd.setPixel(finish_position.x + 2, finish_position.y + 1);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 2, finish_position.y, false);
+    lcd.setPixel(finish_position.x + 2, finish_position.y + 1, false);
+    lcd.setPixel(finish_position.x + 2, finish_position.y + 2, false);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y, false);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1, false);
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 2, false);
+    lcd.setPixel(finish_position.x + 3, finish_position.y - 1);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 1);
+    lcd.refresh();
+    wait(0.1);
+
+    lcd.setPixel(finish_position.x + 3, finish_position.y + 2);
+    lcd.refresh();
+    wait(0.1);
+}
+
+/*
+void GameEngine::draw_death_animation(N5110 &lcd)
+{
+    int y = 0;
+    int animation_width = 84;
+    int animation_height = 48;
+
+    for (int x = 0; x < 23; x++) {
+        lcd.drawRect(x, y, animation_width, animation_height, FILL_TRANSPARENT);
+        lcd.refresh();
+        y++;
+        animation_width = animation_width - 2;
+        animation_height = animation_height - 2;
+        wait(0.03);
+    }
+}
+*/
\ No newline at end of file