ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_ll17lrc_v2

Dependencies:   mbed

Committer:
ll17lrc
Date:
Sun May 17 15:55:47 2020 +0000
Revision:
4:a9d5fca3b7ba
Parent:
3:4494e6928194
Child:
5:5c132202b642
*Compiles*

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