ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_ll17lrc_v2

Dependencies:   mbed

Committer:
ll17lrc
Date:
Sat May 16 15:51:02 2020 +0000
Revision:
3:4494e6928194
Parent:
2:823dea76ff2e
Child:
4:a9d5fca3b7ba
*some problems fixed*

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ll17lrc 2:823dea76ff2e 1 #include "ImpossEngine.h"
ll17lrc 2:823dea76ff2e 2 #include "Zero.h"
ll17lrc 3:4494e6928194 3 #include "One.h"
ll17lrc 3:4494e6928194 4 #include "mbed.h"
ll17lrc 3:4494e6928194 5 #include "N5110.h"
ll17lrc 3:4494e6928194 6 #include "Gamepad.h"
ll17lrc 3:4494e6928194 7 #include "Ball.h"
ll17lrc 3:4494e6928194 8 #include "StartMenu.h"
ll17lrc 2:823dea76ff2e 9
ll17lrc 2:823dea76ff2e 10 ImpossEngine::ImpossEngine()
ll17lrc 2:823dea76ff2e 11 {
ll17lrc 2:823dea76ff2e 12
ll17lrc 2:823dea76ff2e 13 }
ll17lrc 2:823dea76ff2e 14
ll17lrc 2:823dea76ff2e 15 ImpossEngine::~ImpossEngine()
ll17lrc 2:823dea76ff2e 16 {
ll17lrc 2:823dea76ff2e 17
ll17lrc 2:823dea76ff2e 18 }
ll17lrc 2:823dea76ff2e 19
ll17lrc 3:4494e6928194 20 void ImpossEngine::complete(Gamepad &pad,N5110 &lcd,int level)
ll17lrc 3:4494e6928194 21 {
ll17lrc 3:4494e6928194 22 _start.complete(pad,lcd,level);
ll17lrc 3:4494e6928194 23 }
ll17lrc 3:4494e6928194 24
ll17lrc 3:4494e6928194 25 void ImpossEngine::read_input(Gamepad &pad)
ll17lrc 2:823dea76ff2e 26 {
ll17lrc 2:823dea76ff2e 27 _d = pad.get_direction();
ll17lrc 2:823dea76ff2e 28 _mag = pad.get_mag();
ll17lrc 2:823dea76ff2e 29 }
ll17lrc 2:823dea76ff2e 30
ll17lrc 2:823dea76ff2e 31 void ImpossEngine::draw(N5110 &lcd)
ll17lrc 2:823dea76ff2e 32 {
ll17lrc 2:823dea76ff2e 33 // draw the elements in the LCD buffer
ll17lrc 2:823dea76ff2e 34 // pitch
ll17lrc 2:823dea76ff2e 35
ll17lrc 2:823dea76ff2e 36 _ball.draw(lcd);
ll17lrc 2:823dea76ff2e 37
ll17lrc 2:823dea76ff2e 38 if (level == 0){
ll17lrc 3:4494e6928194 39 _zero.draw(lcd);
ll17lrc 2:823dea76ff2e 40 }
ll17lrc 2:823dea76ff2e 41
ll17lrc 2:823dea76ff2e 42 if (level == 1){
ll17lrc 3:4494e6928194 43 _one.draw(lcd);
ll17lrc 2:823dea76ff2e 44 }
ll17lrc 2:823dea76ff2e 45
ll17lrc 2:823dea76ff2e 46
ll17lrc 2:823dea76ff2e 47 }
ll17lrc 2:823dea76ff2e 48
ll17lrc 3:4494e6928194 49 void ImpossEngine::update(Gamepad &pad,N5110 &lcd, int ball_x_pos, int ball_y_pos)
ll17lrc 2:823dea76ff2e 50 {
ll17lrc 2:823dea76ff2e 51 _ball.update(_d);
ll17lrc 2:823dea76ff2e 52
ll17lrc 3:4494e6928194 53 check_collision(pad,lcd,ball_x_pos,ball_y_pos);
ll17lrc 2:823dea76ff2e 54
ll17lrc 3:4494e6928194 55 check_finish(pad,ball_x_pos,ball_y_pos,level);
ll17lrc 2:823dea76ff2e 56 }
ll17lrc 2:823dea76ff2e 57
ll17lrc 3:4494e6928194 58 void check_collision(Gamepad &pad,N5110 &lcd, int ball_x_pos, int ball_y_pos)
ll17lrc 2:823dea76ff2e 59 {
ll17lrc 2:823dea76ff2e 60 int _x = 0;
ll17lrc 2:823dea76ff2e 61 int _y = 0;
ll17lrc 3:4494e6928194 62 int i = 0;
ll17lrc 2:823dea76ff2e 63 bool collision = false;
ll17lrc 2:823dea76ff2e 64 //check around ball to see if it has made contact with anything
ll17lrc 2:823dea76ff2e 65
ll17lrc 3:4494e6928194 66 while(i < 4){
ll17lrc 3:4494e6928194 67
ll17lrc 3:4494e6928194 68 i++;
ll17lrc 2:823dea76ff2e 69
ll17lrc 2:823dea76ff2e 70 if(lcd.getPixel(ball_x_pos + _x,ball_y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 71 collision = true;
ll17lrc 2:823dea76ff2e 72 }
ll17lrc 2:823dea76ff2e 73
ll17lrc 2:823dea76ff2e 74 _x ++;
ll17lrc 2:823dea76ff2e 75
ll17lrc 2:823dea76ff2e 76 }
ll17lrc 2:823dea76ff2e 77
ll17lrc 3:4494e6928194 78 i = 0;
ll17lrc 3:4494e6928194 79
ll17lrc 3:4494e6928194 80 while(i < 4){
ll17lrc 3:4494e6928194 81
ll17lrc 3:4494e6928194 82 i++;
ll17lrc 2:823dea76ff2e 83
ll17lrc 2:823dea76ff2e 84 if(lcd.getPixel(ball_x_pos + _x,ball_y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 85 collision = true;
ll17lrc 2:823dea76ff2e 86 }
ll17lrc 2:823dea76ff2e 87
ll17lrc 2:823dea76ff2e 88 _y ++;
ll17lrc 2:823dea76ff2e 89
ll17lrc 2:823dea76ff2e 90 }
ll17lrc 2:823dea76ff2e 91
ll17lrc 3:4494e6928194 92 i = 0;
ll17lrc 3:4494e6928194 93
ll17lrc 3:4494e6928194 94 while(i < 4){
ll17lrc 3:4494e6928194 95
ll17lrc 3:4494e6928194 96 i++;
ll17lrc 2:823dea76ff2e 97
ll17lrc 2:823dea76ff2e 98 if(lcd.getPixel(ball_x_pos + _x,ball_y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 99 collision = true;
ll17lrc 2:823dea76ff2e 100 }
ll17lrc 2:823dea76ff2e 101
ll17lrc 2:823dea76ff2e 102 _x --;
ll17lrc 2:823dea76ff2e 103
ll17lrc 2:823dea76ff2e 104 }
ll17lrc 2:823dea76ff2e 105
ll17lrc 3:4494e6928194 106 i = 0;
ll17lrc 3:4494e6928194 107
ll17lrc 3:4494e6928194 108 while(i < 4){
ll17lrc 3:4494e6928194 109
ll17lrc 3:4494e6928194 110 i++;
ll17lrc 2:823dea76ff2e 111
ll17lrc 2:823dea76ff2e 112 if(lcd.getPixel(ball_x_pos + _x,ball_y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 113 collision = true;
ll17lrc 2:823dea76ff2e 114 }
ll17lrc 2:823dea76ff2e 115
ll17lrc 2:823dea76ff2e 116 _y --;
ll17lrc 2:823dea76ff2e 117
ll17lrc 2:823dea76ff2e 118 if(collision == true){
ll17lrc 2:823dea76ff2e 119 ball_x_pos = 0;
ll17lrc 2:823dea76ff2e 120 ball_y_pos = 21;
ll17lrc 2:823dea76ff2e 121 }
ll17lrc 2:823dea76ff2e 122 }
ll17lrc 3:4494e6928194 123 }
ll17lrc 3:4494e6928194 124
ll17lrc 3:4494e6928194 125 void check_finish(Gamepad &pad, int ball_x_pos, int ball_y_pos, int level)
ll17lrc 2:823dea76ff2e 126 {
ll17lrc 2:823dea76ff2e 127
ll17lrc 2:823dea76ff2e 128 if(ball_x_pos == 82){
ll17lrc 3:4494e6928194 129 level++;
ll17lrc 2:823dea76ff2e 130 ball_x_pos = 0;
ll17lrc 2:823dea76ff2e 131 ball_y_pos = 21;
ll17lrc 2:823dea76ff2e 132 }
ll17lrc 2:823dea76ff2e 133
ll17lrc 3:4494e6928194 134 }
ll17lrc 3:4494e6928194 135