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.
Map/Map.cpp@9:1ddb8dc93e48, 2020-04-21 (annotated)
- Committer:
- evanso
- Date:
- Tue Apr 21 23:13:19 2020 +0000
- Revision:
- 9:1ddb8dc93e48
- Parent:
- 8:dd1037c5435b
- Child:
- 11:ab578a151f67
Made the map loop back on its self when you reach the ends, therefore the map never ends
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| evanso | 6:12e8433382b3 | 1 | #include "Map.h" |
| evanso | 9:1ddb8dc93e48 | 2 | #define MAP_TERRAIN_Y_POSITION 42 |
| evanso | 9:1ddb8dc93e48 | 3 | Serial usb(USBTX, USBRX); |
| evanso | 6:12e8433382b3 | 4 | Map::Map() { |
| evanso | 6:12e8433382b3 | 5 | |
| evanso | 6:12e8433382b3 | 6 | } |
| evanso | 6:12e8433382b3 | 7 | |
| evanso | 6:12e8433382b3 | 8 | Map::~Map() { |
| evanso | 6:12e8433382b3 | 9 | |
| evanso | 6:12e8433382b3 | 10 | } |
| evanso | 6:12e8433382b3 | 11 | |
| evanso | 8:dd1037c5435b | 12 | void Map::init(AnalogIn &adc) { |
| evanso | 9:1ddb8dc93e48 | 13 | position_x_map_ = -84; |
| evanso | 9:1ddb8dc93e48 | 14 | position_y_map_ = MAP_TERRAIN_Y_POSITION; |
| evanso | 9:1ddb8dc93e48 | 15 | get_random_height_array(adc); |
| evanso | 8:dd1037c5435b | 16 | get_random_length_array(adc); |
| evanso | 7:0af4ced868f5 | 17 | //usb.printf("randome seed = %f\n", rand_seed_); |
| evanso | 9:1ddb8dc93e48 | 18 | map_length_ = 0; |
| evanso | 6:12e8433382b3 | 19 | } |
| evanso | 7:0af4ced868f5 | 20 | |
| evanso | 9:1ddb8dc93e48 | 21 | void Map::get_random_height_array(AnalogIn &adc){ |
| evanso | 7:0af4ced868f5 | 22 | srand(adc.read()*64000); |
| evanso | 9:1ddb8dc93e48 | 23 | for(int i = 0; i < 11; i++){ |
| evanso | 9:1ddb8dc93e48 | 24 | rand_heights_[i]= rand() % 8 + 5; |
| evanso | 7:0af4ced868f5 | 25 | } |
| evanso | 9:1ddb8dc93e48 | 26 | //printf loop to check correct random numbers are generated |
| evanso | 7:0af4ced868f5 | 27 | //for (int i = 0; i < 12; i++){ |
| evanso | 9:1ddb8dc93e48 | 28 | //usb.printf("map height random array = %d\n", rand_heights_[i]); |
| evanso | 7:0af4ced868f5 | 29 | //} |
| evanso | 7:0af4ced868f5 | 30 | } |
| evanso | 7:0af4ced868f5 | 31 | |
| evanso | 8:dd1037c5435b | 32 | void Map::get_random_length_array(AnalogIn &adc){ |
| evanso | 7:0af4ced868f5 | 33 | srand(adc.read()*64000); |
| evanso | 9:1ddb8dc93e48 | 34 | for(int i = 0; i < 11; i++){ |
| evanso | 7:0af4ced868f5 | 35 | rand_lengths_[i]= rand() % 16+ 15; |
| evanso | 7:0af4ced868f5 | 36 | } |
| evanso | 7:0af4ced868f5 | 37 | } |
| evanso | 6:12e8433382b3 | 38 | |
| evanso | 9:1ddb8dc93e48 | 39 | void Map::draw_triangle(N5110 &lcd,int triangle_height){ |
| evanso | 7:0af4ced868f5 | 40 | // draws triangle by drawing two lines with one line having negative gadient |
| evanso | 9:1ddb8dc93e48 | 41 | lcd.drawLine(position_x_map_, position_y_map_, position_x_map_ + triangle_height, position_y_map_ - triangle_height,1); |
| evanso | 9:1ddb8dc93e48 | 42 | lcd.drawLine(position_x_map_ + triangle_height, position_y_map_ - triangle_height,position_x_map_ + 2*triangle_height,position_y_map_,1); |
| evanso | 9:1ddb8dc93e48 | 43 | position_x_map_ = position_x_map_ + 2*triangle_height,position_y_map_; |
| evanso | 7:0af4ced868f5 | 44 | } |
| evanso | 7:0af4ced868f5 | 45 | |
| evanso | 7:0af4ced868f5 | 46 | void Map::draw_line(N5110 &lcd,int line_length){ |
| evanso | 7:0af4ced868f5 | 47 | lcd.drawLine(position_x_map_, position_y_map_, position_x_map_ + line_length, position_y_map_,1); |
| evanso | 9:1ddb8dc93e48 | 48 | position_x_map_ += line_length; |
| evanso | 7:0af4ced868f5 | 49 | } |
| evanso | 7:0af4ced868f5 | 50 | |
| evanso | 7:0af4ced868f5 | 51 | void Map::draw_map(N5110 &lcd, int move_map){ |
| evanso | 8:dd1037c5435b | 52 | //usb.printf("position_x_map_ = %d\n", position_x_map_); |
| evanso | 8:dd1037c5435b | 53 | //usb.printf("move map = %d\n", move_map); |
| evanso | 9:1ddb8dc93e48 | 54 | |
| evanso | 9:1ddb8dc93e48 | 55 | reset_position_x_map_to_origonal_ = position_x_map_; |
| evanso | 9:1ddb8dc93e48 | 56 | int map_length_ = 0; |
| evanso | 9:1ddb8dc93e48 | 57 | |
| evanso | 9:1ddb8dc93e48 | 58 | //prints main part of map |
| evanso | 9:1ddb8dc93e48 | 59 | for(int i = 0; i < 11; i++){ |
| evanso | 9:1ddb8dc93e48 | 60 | draw_triangle(lcd,rand_heights_[i]); |
| evanso | 9:1ddb8dc93e48 | 61 | draw_line(lcd,rand_lengths_[i]); |
| evanso | 9:1ddb8dc93e48 | 62 | final_random_element_used_ = i; |
| evanso | 9:1ddb8dc93e48 | 63 | map_length_ += rand_lengths_[i] + 2*rand_heights_[i]; |
| evanso | 9:1ddb8dc93e48 | 64 | if (map_length_ >252){ // stops random maps lengths being to large only want it about 3 screen widths |
| evanso | 9:1ddb8dc93e48 | 65 | break; |
| evanso | 9:1ddb8dc93e48 | 66 | } |
| evanso | 9:1ddb8dc93e48 | 67 | } |
| evanso | 9:1ddb8dc93e48 | 68 | |
| evanso | 9:1ddb8dc93e48 | 69 | //checks is map need duplicating on forward and backwards loop and fills gap |
| evanso | 9:1ddb8dc93e48 | 70 | check_duplicates_map_forward(lcd, move_map); |
| evanso | 9:1ddb8dc93e48 | 71 | check_duplicates_map_backwards(lcd, move_map); |
| evanso | 9:1ddb8dc93e48 | 72 | |
| evanso | 9:1ddb8dc93e48 | 73 | position_x_map_ = reset_position_x_map_to_origonal_ + move_map; |
| evanso | 9:1ddb8dc93e48 | 74 | |
| evanso | 9:1ddb8dc93e48 | 75 | // Moves map to different persiton so make it look like its looping |
| evanso | 9:1ddb8dc93e48 | 76 | if(position_x_map_+ map_length_ < 0){ |
| evanso | 9:1ddb8dc93e48 | 77 | position_x_map_ = 0; |
| evanso | 7:0af4ced868f5 | 78 | } |
| evanso | 9:1ddb8dc93e48 | 79 | if(position_x_map_ > 84){ |
| evanso | 9:1ddb8dc93e48 | 80 | position_x_map_ = 84 - map_length_; |
| evanso | 9:1ddb8dc93e48 | 81 | } |
| evanso | 9:1ddb8dc93e48 | 82 | } |
| evanso | 9:1ddb8dc93e48 | 83 | |
| evanso | 9:1ddb8dc93e48 | 84 | void Map::check_duplicates_map_forward(N5110 &lcd, int move_map){ |
| evanso | 9:1ddb8dc93e48 | 85 | // Prints 1st part of map to fill gap wear map isn't present just befor its about to loop round it's self |
| evanso | 9:1ddb8dc93e48 | 86 | if(reset_position_x_map_to_origonal_ + map_length_ <84 ){ |
| evanso | 9:1ddb8dc93e48 | 87 | for(int i = 0; i < 4; i++){ |
| evanso | 9:1ddb8dc93e48 | 88 | draw_triangle(lcd,rand_heights_[i]); |
| evanso | 9:1ddb8dc93e48 | 89 | draw_line(lcd,rand_lengths_[i]); |
| evanso | 9:1ddb8dc93e48 | 90 | } |
| evanso | 9:1ddb8dc93e48 | 91 | } |
| evanso | 9:1ddb8dc93e48 | 92 | |
| evanso | 9:1ddb8dc93e48 | 93 | } |
| evanso | 9:1ddb8dc93e48 | 94 | |
| evanso | 9:1ddb8dc93e48 | 95 | void Map::check_duplicates_map_backwards(N5110 &lcd, int move_map){ |
| evanso | 9:1ddb8dc93e48 | 96 | // Prints last part of map to fill gap wear map isn't present just befor its about to loop round it's self |
| evanso | 9:1ddb8dc93e48 | 97 | if(reset_position_x_map_to_origonal_ > 0 ){ |
| evanso | 9:1ddb8dc93e48 | 98 | int print_reverse_position = 0; |
| evanso | 9:1ddb8dc93e48 | 99 | // prints last 4 parts of map to fill gap |
| evanso | 9:1ddb8dc93e48 | 100 | for(int i = final_random_element_used_ ; i > final_random_element_used_ - 4; i--){ |
| evanso | 9:1ddb8dc93e48 | 101 | position_x_map_ = reset_position_x_map_to_origonal_ - rand_lengths_[i] - print_reverse_position; |
| evanso | 9:1ddb8dc93e48 | 102 | draw_line(lcd,rand_lengths_[i]); |
| evanso | 9:1ddb8dc93e48 | 103 | print_reverse_position += rand_lengths_[i]; |
| evanso | 9:1ddb8dc93e48 | 104 | position_x_map_ = reset_position_x_map_to_origonal_ - 2*rand_heights_[i] - print_reverse_position; |
| evanso | 9:1ddb8dc93e48 | 105 | draw_triangle(lcd,rand_heights_[i]); |
| evanso | 9:1ddb8dc93e48 | 106 | print_reverse_position += 2*rand_heights_[i]; |
| evanso | 9:1ddb8dc93e48 | 107 | } |
| evanso | 9:1ddb8dc93e48 | 108 | } |
| evanso | 7:0af4ced868f5 | 109 | } |
| evanso | 7:0af4ced868f5 | 110 | |
| evanso | 7:0af4ced868f5 | 111 | int Map::get_position_x_map(){ |
| evanso | 7:0af4ced868f5 | 112 | return position_x_map_; |
| evanso | 7:0af4ced868f5 | 113 | } |
| evanso | 7:0af4ced868f5 | 114 | |
| evanso | 9:1ddb8dc93e48 | 115 | |
| evanso | 9:1ddb8dc93e48 | 116 | |
| evanso | 9:1ddb8dc93e48 | 117 | |
| evanso | 9:1ddb8dc93e48 | 118 |