Yufan Zhong / Mbed 2 deprecated GOLD_MINER

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }