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@4:a9d5fca3b7ba, 2020-05-17 (annotated)
- 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?
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 | 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 |