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@3:4494e6928194, 2020-05-16 (annotated)
- 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?
User | Revision | Line number | New 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 |