ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_ll17lrc_v2

Dependencies:   mbed

Committer:
ll17lrc
Date:
Mon May 18 16:49:20 2020 +0000
Revision:
9:e2dd152867d1
Parent:
8:10eb578dd754
Child:
10:df6a496270be
Up to level 4 complete

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ll17lrc 2:823dea76ff2e 1 #include "ImpossEngine.h"
ll17lrc 4:a9d5fca3b7ba 2
ll17lrc 2:823dea76ff2e 3
ll17lrc 2:823dea76ff2e 4 ImpossEngine::ImpossEngine()
ll17lrc 2:823dea76ff2e 5 {
ll17lrc 2:823dea76ff2e 6
ll17lrc 2:823dea76ff2e 7 }
ll17lrc 2:823dea76ff2e 8
ll17lrc 2:823dea76ff2e 9 ImpossEngine::~ImpossEngine()
ll17lrc 2:823dea76ff2e 10 {
ll17lrc 2:823dea76ff2e 11
ll17lrc 2:823dea76ff2e 12 }
ll17lrc 2:823dea76ff2e 13
ll17lrc 4:a9d5fca3b7ba 14 StartMenu _start;
ll17lrc 4:a9d5fca3b7ba 15
ll17lrc 4:a9d5fca3b7ba 16 void ImpossEngine::complete(Gamepad &pad,N5110 &lcd)
ll17lrc 3:4494e6928194 17 {
ll17lrc 7:35465b3bf586 18 _start.complete(pad,lcd);
ll17lrc 7:35465b3bf586 19 int x = 0;
ll17lrc 7:35465b3bf586 20 int y = 21;
ll17lrc 7:35465b3bf586 21 _ball.init(x,y);
ll17lrc 3:4494e6928194 22 }
ll17lrc 5:5c132202b642 23
ll17lrc 3:4494e6928194 24 void ImpossEngine::read_input(Gamepad &pad)
ll17lrc 2:823dea76ff2e 25 {
ll17lrc 2:823dea76ff2e 26 _d = pad.get_direction();
ll17lrc 2:823dea76ff2e 27 _mag = pad.get_mag();
ll17lrc 2:823dea76ff2e 28 }
ll17lrc 2:823dea76ff2e 29
ll17lrc 8:10eb578dd754 30 void ImpossEngine::draw(N5110 &lcd,Gamepad &pad)
ll17lrc 2:823dea76ff2e 31 {
ll17lrc 2:823dea76ff2e 32 // draw the elements in the LCD buffer
ll17lrc 5:5c132202b642 33 // pitch
ll17lrc 2:823dea76ff2e 34
ll17lrc 7:35465b3bf586 35
ll17lrc 2:823dea76ff2e 36 if (level == 0){
ll17lrc 3:4494e6928194 37 _zero.draw(lcd);
ll17lrc 2:823dea76ff2e 38 }
ll17lrc 2:823dea76ff2e 39
ll17lrc 2:823dea76ff2e 40 if (level == 1){
ll17lrc 3:4494e6928194 41 _one.draw(lcd);
ll17lrc 7:35465b3bf586 42 }
ll17lrc 7:35465b3bf586 43
ll17lrc 8:10eb578dd754 44 if (level == 2){
ll17lrc 8:10eb578dd754 45 _two.draw(lcd);
ll17lrc 8:10eb578dd754 46 }
ll17lrc 8:10eb578dd754 47
ll17lrc 9:e2dd152867d1 48 if (level == 3){
ll17lrc 9:e2dd152867d1 49 _three.draw(lcd);
ll17lrc 9:e2dd152867d1 50 }
ll17lrc 9:e2dd152867d1 51
ll17lrc 9:e2dd152867d1 52 if (level == 4){
ll17lrc 9:e2dd152867d1 53 _four.draw(lcd);
ll17lrc 9:e2dd152867d1 54 }
ll17lrc 9:e2dd152867d1 55
ll17lrc 8:10eb578dd754 56 _ball.update(_d,pad);
ll17lrc 9:e2dd152867d1 57
ll17lrc 9:e2dd152867d1 58
ll17lrc 5:5c132202b642 59
ll17lrc 5:5c132202b642 60 _ball.draw(lcd);
ll17lrc 2:823dea76ff2e 61
ll17lrc 2:823dea76ff2e 62 }
ll17lrc 2:823dea76ff2e 63
ll17lrc 7:35465b3bf586 64 void ImpossEngine::update(Gamepad &pad,N5110 &lcd)
ll17lrc 2:823dea76ff2e 65 {
ll17lrc 2:823dea76ff2e 66
ll17lrc 4:a9d5fca3b7ba 67 check_collision(pad,lcd);
ll17lrc 2:823dea76ff2e 68
ll17lrc 9:e2dd152867d1 69 check_finish(pad);
ll17lrc 2:823dea76ff2e 70 }
ll17lrc 2:823dea76ff2e 71
ll17lrc 4:a9d5fca3b7ba 72 void ImpossEngine::set_level_zero(){
ll17lrc 4:a9d5fca3b7ba 73 level = 0;
ll17lrc 4:a9d5fca3b7ba 74 }
ll17lrc 4:a9d5fca3b7ba 75
ll17lrc 4:a9d5fca3b7ba 76 void ImpossEngine::set_level_one(){
ll17lrc 4:a9d5fca3b7ba 77 level = 1;
ll17lrc 4:a9d5fca3b7ba 78 }
ll17lrc 4:a9d5fca3b7ba 79
ll17lrc 4:a9d5fca3b7ba 80 void ImpossEngine::check_collision(Gamepad &pad,N5110 &lcd)
ll17lrc 2:823dea76ff2e 81 {
ll17lrc 2:823dea76ff2e 82 int _x = 0;
ll17lrc 2:823dea76ff2e 83 int _y = 0;
ll17lrc 3:4494e6928194 84 int i = 0;
ll17lrc 7:35465b3bf586 85 int x_pos = _ball.get_ball_x_pos() - 1;
ll17lrc 7:35465b3bf586 86 int y_pos = _ball.get_ball_y_pos() - 1;
ll17lrc 2:823dea76ff2e 87 bool collision = false;
ll17lrc 2:823dea76ff2e 88 //check around ball to see if it has made contact with anything
ll17lrc 2:823dea76ff2e 89
ll17lrc 8:10eb578dd754 90 while(i < 3){
ll17lrc 3:4494e6928194 91
ll17lrc 3:4494e6928194 92 i++;
ll17lrc 2:823dea76ff2e 93
ll17lrc 4:a9d5fca3b7ba 94 if(lcd.getPixel(x_pos + _x,y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 95 collision = true;
ll17lrc 2:823dea76ff2e 96 }
ll17lrc 2:823dea76ff2e 97
ll17lrc 2:823dea76ff2e 98 _x ++;
ll17lrc 2:823dea76ff2e 99
ll17lrc 2:823dea76ff2e 100 }
ll17lrc 2:823dea76ff2e 101
ll17lrc 3:4494e6928194 102 i = 0;
ll17lrc 3:4494e6928194 103
ll17lrc 8:10eb578dd754 104 while(i < 3){
ll17lrc 3:4494e6928194 105
ll17lrc 3:4494e6928194 106 i++;
ll17lrc 2:823dea76ff2e 107
ll17lrc 4:a9d5fca3b7ba 108 if(lcd.getPixel(x_pos + _x,y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 109 collision = true;
ll17lrc 2:823dea76ff2e 110 }
ll17lrc 2:823dea76ff2e 111
ll17lrc 2:823dea76ff2e 112 _y ++;
ll17lrc 2:823dea76ff2e 113
ll17lrc 2:823dea76ff2e 114 }
ll17lrc 2:823dea76ff2e 115
ll17lrc 3:4494e6928194 116 i = 0;
ll17lrc 3:4494e6928194 117
ll17lrc 8:10eb578dd754 118 while(i < 3){
ll17lrc 3:4494e6928194 119
ll17lrc 3:4494e6928194 120 i++;
ll17lrc 2:823dea76ff2e 121
ll17lrc 4:a9d5fca3b7ba 122 if(lcd.getPixel(x_pos + _x,y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 123 collision = true;
ll17lrc 2:823dea76ff2e 124 }
ll17lrc 2:823dea76ff2e 125
ll17lrc 2:823dea76ff2e 126 _x --;
ll17lrc 2:823dea76ff2e 127
ll17lrc 2:823dea76ff2e 128 }
ll17lrc 2:823dea76ff2e 129
ll17lrc 3:4494e6928194 130 i = 0;
ll17lrc 3:4494e6928194 131
ll17lrc 8:10eb578dd754 132 while(i < 3){
ll17lrc 3:4494e6928194 133
ll17lrc 3:4494e6928194 134 i++;
ll17lrc 2:823dea76ff2e 135
ll17lrc 4:a9d5fca3b7ba 136 if(lcd.getPixel(x_pos + _x,y_pos + _y) == 1){
ll17lrc 2:823dea76ff2e 137 collision = true;
ll17lrc 2:823dea76ff2e 138 }
ll17lrc 2:823dea76ff2e 139
ll17lrc 2:823dea76ff2e 140 _y --;
ll17lrc 2:823dea76ff2e 141
ll17lrc 2:823dea76ff2e 142 if(collision == true){
ll17lrc 4:a9d5fca3b7ba 143 _ball.level_finish();
ll17lrc 2:823dea76ff2e 144 }
ll17lrc 2:823dea76ff2e 145 }
ll17lrc 3:4494e6928194 146 }
ll17lrc 3:4494e6928194 147
ll17lrc 9:e2dd152867d1 148 void ImpossEngine::check_finish(Gamepad &pad)
ll17lrc 2:823dea76ff2e 149 {
ll17lrc 2:823dea76ff2e 150
ll17lrc 7:35465b3bf586 151 int pos = _ball.get_ball_x_pos();
ll17lrc 4:a9d5fca3b7ba 152
ll17lrc 9:e2dd152867d1 153 if(pos >= 82){
ll17lrc 3:4494e6928194 154 level++;
ll17lrc 4:a9d5fca3b7ba 155 _ball.level_finish();
ll17lrc 2:823dea76ff2e 156 }
ll17lrc 9:e2dd152867d1 157
ll17lrc 9:e2dd152867d1 158 if(pad.Y_pressed() == true){
ll17lrc 9:e2dd152867d1 159 level++;
ll17lrc 9:e2dd152867d1 160 }
ll17lrc 9:e2dd152867d1 161 if(pad.X_pressed() == true){
ll17lrc 9:e2dd152867d1 162 level--;
ll17lrc 9:e2dd152867d1 163 }
ll17lrc 2:823dea76ff2e 164
ll17lrc 3:4494e6928194 165 }