Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Imposs/ImpossEngine.cpp@9:e2dd152867d1, 2020-05-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |