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.
Gold/Gold.cpp@19:08c582bcdc98, 2020-05-13 (annotated)
- Committer:
- ZhongYufan
- Date:
- Wed May 13 14:07:20 2020 +0000
- Revision:
- 19:08c582bcdc98
- Parent:
- 12:07a9f2140d9b
The final version
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ZhongYufan | 1:9c7bb3db32bc | 1 | #include "Gold.h" |
| ZhongYufan | 1:9c7bb3db32bc | 2 | |
| ZhongYufan | 1:9c7bb3db32bc | 3 | Gold::Gold() |
| ZhongYufan | 1:9c7bb3db32bc | 4 | { |
| ZhongYufan | 1:9c7bb3db32bc | 5 | |
| ZhongYufan | 1:9c7bb3db32bc | 6 | } |
| ZhongYufan | 1:9c7bb3db32bc | 7 | |
| ZhongYufan | 1:9c7bb3db32bc | 8 | Gold::~Gold() |
| ZhongYufan | 1:9c7bb3db32bc | 9 | { |
| ZhongYufan | 1:9c7bb3db32bc | 10 | |
| ZhongYufan | 1:9c7bb3db32bc | 11 | } |
| ZhongYufan | 19:08c582bcdc98 | 12 | // initialise the gold |
| ZhongYufan | 1:9c7bb3db32bc | 13 | void Gold::init(int gold_num) |
| ZhongYufan | 1:9c7bb3db32bc | 14 | { |
| ZhongYufan | 19:08c582bcdc98 | 15 | _gold_num = gold_num; //number of gold |
| ZhongYufan | 19:08c582bcdc98 | 16 | _gold_left = _gold_num; //left number |
| ZhongYufan | 19:08c582bcdc98 | 17 | //create random positions for golds |
| ZhongYufan | 19:08c582bcdc98 | 18 | srand(time(NULL)); |
| ZhongYufan | 19:08c582bcdc98 | 19 | _gold_speed=1; |
| ZhongYufan | 19:08c582bcdc98 | 20 | for (int i=0;i<_gold_num;i++){ |
| ZhongYufan | 19:08c582bcdc98 | 21 | _gold_caught[i] = 0; |
| ZhongYufan | 19:08c582bcdc98 | 22 | _gold_reached[i] = 0; |
| ZhongYufan | 19:08c582bcdc98 | 23 | _x[i] = 3+(rand()%78); |
| ZhongYufan | 19:08c582bcdc98 | 24 | _y[i] = 19+(rand()%27); |
| ZhongYufan | 19:08c582bcdc98 | 25 | } |
| ZhongYufan | 1:9c7bb3db32bc | 26 | } |
| ZhongYufan | 1:9c7bb3db32bc | 27 | |
| ZhongYufan | 19:08c582bcdc98 | 28 | //draw the golds |
| ZhongYufan | 1:9c7bb3db32bc | 29 | void Gold::draw(N5110 &lcd) |
| ZhongYufan | 1:9c7bb3db32bc | 30 | { |
| ZhongYufan | 8:c5969685cf02 | 31 | for (int i=0;i<9;i++){ |
| ZhongYufan | 8:c5969685cf02 | 32 | if(_gold_reached[i]==0){ |
| ZhongYufan | 19:08c582bcdc98 | 33 | lcd.drawCircle(_x[i],_y[i],2,FILL_BLACK); // draw circles as golds |
| ZhongYufan | 1:9c7bb3db32bc | 34 | } |
| ZhongYufan | 1:9c7bb3db32bc | 35 | } |
| ZhongYufan | 8:c5969685cf02 | 36 | lcd.refresh(); |
| ZhongYufan | 1:9c7bb3db32bc | 37 | } |
| ZhongYufan | 1:9c7bb3db32bc | 38 | |
| ZhongYufan | 19:08c582bcdc98 | 39 | //update the positions of golds |
| ZhongYufan | 1:9c7bb3db32bc | 40 | void Gold::update() |
| ZhongYufan | 1:9c7bb3db32bc | 41 | { |
| ZhongYufan | 10:51870f8e2e1a | 42 | for (int i=0;i<_gold_num;i++) { |
| ZhongYufan | 19:08c582bcdc98 | 43 | //if the gold is been caught, it will go up |
| ZhongYufan | 10:51870f8e2e1a | 44 | if (_gold_caught[i]==1&&_gold_reached[i]==0) { |
| ZhongYufan | 12:07a9f2140d9b | 45 | _y[i]-=_gold_speed; |
| ZhongYufan | 19:08c582bcdc98 | 46 | //if gold reached the upper boundary, reached flag will be 1 |
| ZhongYufan | 19:08c582bcdc98 | 47 | //and left number will -1 |
| ZhongYufan | 12:07a9f2140d9b | 48 | if (_y[i]<=17) { |
| ZhongYufan | 10:51870f8e2e1a | 49 | _gold_reached[i]=1; |
| ZhongYufan | 10:51870f8e2e1a | 50 | _gold_left--; |
| ZhongYufan | 10:51870f8e2e1a | 51 | } |
| ZhongYufan | 1:9c7bb3db32bc | 52 | } |
| ZhongYufan | 10:51870f8e2e1a | 53 | } |
| ZhongYufan | 1:9c7bb3db32bc | 54 | } |
| ZhongYufan | 1:9c7bb3db32bc | 55 | |
| ZhongYufan | 19:08c582bcdc98 | 56 | //mark the gold has been caught |
| ZhongYufan | 1:9c7bb3db32bc | 57 | void Gold::gold_caught(int caught_i) |
| ZhongYufan | 1:9c7bb3db32bc | 58 | { |
| ZhongYufan | 1:9c7bb3db32bc | 59 | _gold_caught[caught_i]=1; |
| ZhongYufan | 1:9c7bb3db32bc | 60 | } |
| ZhongYufan | 1:9c7bb3db32bc | 61 | |
| ZhongYufan | 19:08c582bcdc98 | 62 | // return the lifted gold number |
| ZhongYufan | 1:9c7bb3db32bc | 63 | int Gold::get_reached_num() |
| ZhongYufan | 1:9c7bb3db32bc | 64 | { |
| ZhongYufan | 1:9c7bb3db32bc | 65 | int n=0; |
| ZhongYufan | 1:9c7bb3db32bc | 66 | for (int i=0;i<_gold_num;i++){ |
| ZhongYufan | 1:9c7bb3db32bc | 67 | if (_gold_reached[i]==1){ |
| ZhongYufan | 1:9c7bb3db32bc | 68 | n+=1; |
| ZhongYufan | 1:9c7bb3db32bc | 69 | } |
| ZhongYufan | 1:9c7bb3db32bc | 70 | } |
| ZhongYufan | 1:9c7bb3db32bc | 71 | return n; |
| ZhongYufan | 1:9c7bb3db32bc | 72 | } |
| ZhongYufan | 1:9c7bb3db32bc | 73 | |
| ZhongYufan | 19:08c582bcdc98 | 74 | //reyurn the number of left gold |
| ZhongYufan | 8:c5969685cf02 | 75 | int Gold::get_left_num() |
| ZhongYufan | 8:c5969685cf02 | 76 | { |
| ZhongYufan | 8:c5969685cf02 | 77 | int left_n = _gold_left; |
| ZhongYufan | 8:c5969685cf02 | 78 | return left_n; |
| ZhongYufan | 8:c5969685cf02 | 79 | } |
| ZhongYufan | 8:c5969685cf02 | 80 | |
| ZhongYufan | 19:08c582bcdc98 | 81 | //return the position of gold with serial number gold_i |
| ZhongYufan | 1:9c7bb3db32bc | 82 | Vector2D Gold::get_pos(int gold_i) |
| ZhongYufan | 1:9c7bb3db32bc | 83 | { |
| ZhongYufan | 1:9c7bb3db32bc | 84 | Vector2D p = {_x[gold_i],_y[gold_i]}; |
| ZhongYufan | 1:9c7bb3db32bc | 85 | return p; |
| ZhongYufan | 1:9c7bb3db32bc | 86 | } |
| ZhongYufan | 1:9c7bb3db32bc | 87 | |
| ZhongYufan | 19:08c582bcdc98 | 88 | //set the position of gold with serial number gold_i |
| ZhongYufan | 1:9c7bb3db32bc | 89 | void Gold::set_pos(Vector2D p) { |
| ZhongYufan | 1:9c7bb3db32bc | 90 | for (int i=0;i<_gold_num;i++){ |
| ZhongYufan | 10:51870f8e2e1a | 91 | if(_gold_reached[i]==0){ |
| ZhongYufan | 1:9c7bb3db32bc | 92 | _x[i] = p.x; |
| ZhongYufan | 1:9c7bb3db32bc | 93 | _y[i] = p.y; |
| ZhongYufan | 19:08c582bcdc98 | 94 | } |
| ZhongYufan | 1:9c7bb3db32bc | 95 | } |
| ZhongYufan | 12:07a9f2140d9b | 96 | } |
| ZhongYufan | 12:07a9f2140d9b | 97 | |
| ZhongYufan | 19:08c582bcdc98 | 98 | //set the rising speed of gold |
| ZhongYufan | 12:07a9f2140d9b | 99 | void Gold::set_speed(int speed) { |
| ZhongYufan | 12:07a9f2140d9b | 100 | _gold_speed = speed; |
| ZhongYufan | 1:9c7bb3db32bc | 101 | } |