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
engine/engine.cpp@15:0a55e0ac8421, 2018-04-23 (annotated)
- Committer:
- RickYu
- Date:
- Mon Apr 23 22:36:11 2018 +0000
- Revision:
- 15:0a55e0ac8421
- Parent:
- 14:a4176da69b49
- Child:
- 16:75122d14153c
add score while not work.....
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| RickYu | 2:421fb0670c5c | 1 | #include "engine.h" |
| RickYu | 2:421fb0670c5c | 2 | |
| RickYu | 2:421fb0670c5c | 3 | engine::engine() |
| RickYu | 2:421fb0670c5c | 4 | { |
| RickYu | 2:421fb0670c5c | 5 | |
| RickYu | 2:421fb0670c5c | 6 | } |
| RickYu | 2:421fb0670c5c | 7 | |
| RickYu | 2:421fb0670c5c | 8 | engine::~engine() |
| RickYu | 2:421fb0670c5c | 9 | { |
| RickYu | 2:421fb0670c5c | 10 | |
| RickYu | 2:421fb0670c5c | 11 | } |
| RickYu | 2:421fb0670c5c | 12 | |
| RickYu | 5:0a116644cce2 | 13 | void engine::init(int speed) |
| RickYu | 2:421fb0670c5c | 14 | { |
| RickYu | 2:421fb0670c5c | 15 | // initialise the game parameters |
| RickYu | 6:46d0caedf217 | 16 | //_speed = speed; |
| RickYu | 2:421fb0670c5c | 17 | |
| RickYu | 2:421fb0670c5c | 18 | } |
| RickYu | 2:421fb0670c5c | 19 | void engine::draw(N5110 &lcd) |
| RickYu | 2:421fb0670c5c | 20 | { |
| RickYu | 2:421fb0670c5c | 21 | |
| RickYu | 7:1964f649676e | 22 | //draw and re-draw rectangle, boom and money on the screen |
| RickYu | 7:1964f649676e | 23 | _rect.draw(lcd); |
| RickYu | 3:1a134243e2f0 | 24 | _boom.draw(lcd); |
| RickYu | 6:46d0caedf217 | 25 | _money.draw(lcd); |
| RickYu | 2:421fb0670c5c | 26 | |
| RickYu | 2:421fb0670c5c | 27 | |
| RickYu | 2:421fb0670c5c | 28 | } |
| RickYu | 2:421fb0670c5c | 29 | |
| RickYu | 2:421fb0670c5c | 30 | void engine::read_input(Gamepad &pad) |
| RickYu | 2:421fb0670c5c | 31 | { |
| RickYu | 2:421fb0670c5c | 32 | _d = pad.get_direction(); |
| RickYu | 2:421fb0670c5c | 33 | _mag = pad.get_mag(); |
| RickYu | 2:421fb0670c5c | 34 | } |
| RickYu | 2:421fb0670c5c | 35 | |
| RickYu | 2:421fb0670c5c | 36 | |
| RickYu | 11:7027f69672fc | 37 | void engine::update(Gamepad &pad,N5110 &lcd) |
| RickYu | 2:421fb0670c5c | 38 | { |
| RickYu | 6:46d0caedf217 | 39 | |
| RickYu | 7:1964f649676e | 40 | _rect.update(_d,_mag); //get the position of rect when jopystick moves |
| RickYu | 7:1964f649676e | 41 | |
| RickYu | 7:1964f649676e | 42 | //boom and money will keep moving with initial settings |
| RickYu | 7:1964f649676e | 43 | _boom.update(); |
| RickYu | 6:46d0caedf217 | 44 | _money.update(); |
| RickYu | 5:0a116644cce2 | 45 | |
| RickYu | 6:46d0caedf217 | 46 | check_boom_pos(pad); |
| RickYu | 6:46d0caedf217 | 47 | check_money_pos(pad); |
| RickYu | 6:46d0caedf217 | 48 | check_rect_pos(pad); |
| RickYu | 11:7027f69672fc | 49 | check_boom_collision(pad,lcd); |
| RickYu | 13:7ad2072d63ac | 50 | check_money_collision(pad,lcd); |
| RickYu | 2:421fb0670c5c | 51 | |
| RickYu | 2:421fb0670c5c | 52 | } |
| RickYu | 2:421fb0670c5c | 53 | |
| RickYu | 6:46d0caedf217 | 54 | void engine::check_money_pos(Gamepad &pad) |
| RickYu | 6:46d0caedf217 | 55 | { |
| RickYu | 6:46d0caedf217 | 56 | Vector2D money_pos = _money.get_pos(); |
| RickYu | 6:46d0caedf217 | 57 | |
| RickYu | 6:46d0caedf217 | 58 | if (money_pos.y > 48) { |
| RickYu | 6:46d0caedf217 | 59 | money_pos.y = 0; |
| RickYu | 7:1964f649676e | 60 | money_pos.x = rand()%84; //the money will back to top with random x position |
| RickYu | 6:46d0caedf217 | 61 | } |
| RickYu | 6:46d0caedf217 | 62 | |
| RickYu | 7:1964f649676e | 63 | //avoid money out of the screen |
| RickYu | 9:d217a636c18d | 64 | if (money_pos.x+4 >= 84) { |
| RickYu | 9:d217a636c18d | 65 | money_pos.x = 80; |
| RickYu | 6:46d0caedf217 | 66 | } |
| RickYu | 6:46d0caedf217 | 67 | |
| RickYu | 6:46d0caedf217 | 68 | if (money_pos.x <2){ |
| RickYu | 6:46d0caedf217 | 69 | money_pos.x = 3; |
| RickYu | 6:46d0caedf217 | 70 | } |
| RickYu | 6:46d0caedf217 | 71 | _money.set_pos(money_pos); |
| RickYu | 6:46d0caedf217 | 72 | |
| RickYu | 6:46d0caedf217 | 73 | |
| RickYu | 6:46d0caedf217 | 74 | } |
| RickYu | 6:46d0caedf217 | 75 | |
| RickYu | 6:46d0caedf217 | 76 | void engine::check_boom_pos(Gamepad &pad) |
| RickYu | 5:0a116644cce2 | 77 | { |
| RickYu | 5:0a116644cce2 | 78 | Vector2D boom_pos = _boom.get_pos(); |
| RickYu | 6:46d0caedf217 | 79 | if (boom_pos.y > 48) { |
| RickYu | 5:0a116644cce2 | 80 | boom_pos.y = 0; |
| RickYu | 7:1964f649676e | 81 | boom_pos.x = rand()%84; //boom will back to top with random x position |
| RickYu | 5:0a116644cce2 | 82 | } |
| RickYu | 7:1964f649676e | 83 | |
| RickYu | 7:1964f649676e | 84 | //avoid boom go outside of the screen |
| RickYu | 9:d217a636c18d | 85 | if (boom_pos.x >= 82) { |
| RickYu | 5:0a116644cce2 | 86 | boom_pos.x = 81; |
| RickYu | 5:0a116644cce2 | 87 | } |
| RickYu | 5:0a116644cce2 | 88 | |
| RickYu | 5:0a116644cce2 | 89 | if (boom_pos.x <2){ |
| RickYu | 5:0a116644cce2 | 90 | boom_pos.x = 3; |
| RickYu | 6:46d0caedf217 | 91 | } |
| RickYu | 6:46d0caedf217 | 92 | _boom.set_pos(boom_pos); |
| RickYu | 6:46d0caedf217 | 93 | } |
| RickYu | 6:46d0caedf217 | 94 | |
| RickYu | 6:46d0caedf217 | 95 | void engine::check_rect_pos(Gamepad &pad) |
| RickYu | 6:46d0caedf217 | 96 | { |
| RickYu | 6:46d0caedf217 | 97 | Vector2D rect_pos = _rect.get_pos(); |
| RickYu | 7:1964f649676e | 98 | |
| RickYu | 7:1964f649676e | 99 | //keep the rect moving inside the screen |
| RickYu | 6:46d0caedf217 | 100 | if (rect_pos.x < 1) { |
| RickYu | 6:46d0caedf217 | 101 | rect_pos.x = 1; |
| RickYu | 6:46d0caedf217 | 102 | } |
| RickYu | 6:46d0caedf217 | 103 | if (rect_pos.x > 74) { |
| RickYu | 6:46d0caedf217 | 104 | rect_pos.x = 74; |
| RickYu | 6:46d0caedf217 | 105 | } |
| RickYu | 6:46d0caedf217 | 106 | _rect.set_pos(rect_pos); |
| RickYu | 6:46d0caedf217 | 107 | |
| RickYu | 6:46d0caedf217 | 108 | |
| RickYu | 5:0a116644cce2 | 109 | } |
| RickYu | 11:7027f69672fc | 110 | void engine::check_boom_collision(Gamepad &pad,N5110 &lcd) |
| RickYu | 5:0a116644cce2 | 111 | { |
| RickYu | 5:0a116644cce2 | 112 | Vector2D boom_pos = _boom.get_pos(); |
| RickYu | 5:0a116644cce2 | 113 | Vector2D rect_pos = _rect.get_pos(); |
| RickYu | 5:0a116644cce2 | 114 | |
| RickYu | 9:d217a636c18d | 115 | if ( |
| RickYu | 11:7027f69672fc | 116 | (boom_pos.x-3 >= rect_pos.x)and |
| RickYu | 11:7027f69672fc | 117 | (boom_pos.x+3 <= rect_pos.x+10)and |
| RickYu | 11:7027f69672fc | 118 | (boom_pos.y == 40)) |
| RickYu | 10:ef01b3076040 | 119 | |
| RickYu | 7:1964f649676e | 120 | { |
| RickYu | 10:ef01b3076040 | 121 | boom_pos.y = 0; |
| RickYu | 10:ef01b3076040 | 122 | boom_pos.x = rand()%84; |
| RickYu | 6:46d0caedf217 | 123 | pad.tone(750.0,0.1); |
| RickYu | 13:7ad2072d63ac | 124 | engine::print_scores(lcd); |
| RickYu | 6:46d0caedf217 | 125 | } |
| RickYu | 7:1964f649676e | 126 | |
| RickYu | 13:7ad2072d63ac | 127 | |
| RickYu | 5:0a116644cce2 | 128 | _boom.set_pos(boom_pos); |
| RickYu | 5:0a116644cce2 | 129 | _rect.set_pos(rect_pos); |
| RickYu | 5:0a116644cce2 | 130 | } |
| RickYu | 13:7ad2072d63ac | 131 | |
| RickYu | 13:7ad2072d63ac | 132 | void engine::check_money_collision(Gamepad &pad,N5110 &lcd) |
| RickYu | 10:ef01b3076040 | 133 | { |
| RickYu | 10:ef01b3076040 | 134 | Vector2D rect_pos = _rect.get_pos(); |
| RickYu | 10:ef01b3076040 | 135 | Vector2D money_pos = _money.get_pos(); |
| RickYu | 13:7ad2072d63ac | 136 | if ( |
| RickYu | 14:a4176da69b49 | 137 | (money_pos.x >= rect_pos.x+3)and |
| RickYu | 14:a4176da69b49 | 138 | (money_pos.x+4 <= rect_pos.x+7)and |
| RickYu | 14:a4176da69b49 | 139 | (money_pos.y+2 == 40)) |
| RickYu | 13:7ad2072d63ac | 140 | |
| RickYu | 13:7ad2072d63ac | 141 | { |
| RickYu | 13:7ad2072d63ac | 142 | money_pos.y = 0; |
| RickYu | 13:7ad2072d63ac | 143 | money_pos.x = rand()%84; |
| RickYu | 13:7ad2072d63ac | 144 | pad.tone(750.0,0.1); |
| RickYu | 15:0a55e0ac8421 | 145 | _rect.add_score(); |
| RickYu | 13:7ad2072d63ac | 146 | //engine::print_scores(lcd); |
| RickYu | 13:7ad2072d63ac | 147 | } |
| RickYu | 5:0a116644cce2 | 148 | |
| RickYu | 13:7ad2072d63ac | 149 | _money.set_pos(money_pos); |
| RickYu | 13:7ad2072d63ac | 150 | _rect.set_pos(rect_pos); |
| RickYu | 10:ef01b3076040 | 151 | } |
| RickYu | 13:7ad2072d63ac | 152 | |
| RickYu | 13:7ad2072d63ac | 153 | |
| RickYu | 13:7ad2072d63ac | 154 | |
| RickYu | 10:ef01b3076040 | 155 | void engine::print_scores(N5110 &lcd) |
| RickYu | 10:ef01b3076040 | 156 | { |
| RickYu | 15:0a55e0ac8421 | 157 | int rect_score = _rect.get_score(); |
| RickYu | 15:0a55e0ac8421 | 158 | char buffer1[14]; |
| RickYu | 15:0a55e0ac8421 | 159 | |
| RickYu | 11:7027f69672fc | 160 | lcd.clear(); |
| RickYu | 15:0a55e0ac8421 | 161 | sprintf(buffer1,"%2d",rect_score); |
| RickYu | 15:0a55e0ac8421 | 162 | lcd.printString(buffer1,WIDTH/2 - 20,1); |
| RickYu | 15:0a55e0ac8421 | 163 | |
| RickYu | 13:7ad2072d63ac | 164 | lcd.printString(" Game Over",0,1); |
| RickYu | 11:7027f69672fc | 165 | lcd.refresh(); |
| RickYu | 14:a4176da69b49 | 166 | wait(2); |
| RickYu | 10:ef01b3076040 | 167 | } |
| RickYu | 10:ef01b3076040 | 168 | |
| RickYu | 10:ef01b3076040 | 169 | |
| RickYu | 10:ef01b3076040 | 170 | |
| RickYu | 10:ef01b3076040 | 171 |