Henry Triff
/
ELEC2645_Project_el18ht
Game
main.cpp@10:29126a41b1da, 2020-03-25 (annotated)
- Committer:
- HenryWTriff
- Date:
- Wed Mar 25 15:36:01 2020 +0000
- Revision:
- 10:29126a41b1da
- Parent:
- 9:7b1093d3f03a
- Child:
- 11:7b12992156de
Better ghost mode using SD card
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
HenryWTriff | 2:d08b6a1eaf2b | 1 | /* |
eencae | 0:b7f1f47bb26a | 2 | ELEC2645 Embedded Systems Project |
eencae | 0:b7f1f47bb26a | 3 | School of Electronic & Electrical Engineering |
eencae | 0:b7f1f47bb26a | 4 | University of Leeds |
eencae | 0:b7f1f47bb26a | 5 | 2019/20 |
eencae | 0:b7f1f47bb26a | 6 | |
HenryWTriff | 1:8c335af04679 | 7 | Name: Henry Triff |
HenryWTriff | 1:8c335af04679 | 8 | Username: el18ht |
HenryWTriff | 1:8c335af04679 | 9 | Student ID Number: 201224295 |
HenryWTriff | 1:8c335af04679 | 10 | Date: 10/02/2020 |
eencae | 0:b7f1f47bb26a | 11 | */ |
eencae | 0:b7f1f47bb26a | 12 | |
HenryWTriff | 2:d08b6a1eaf2b | 13 | //LIBRARIES |
eencae | 0:b7f1f47bb26a | 14 | #include "mbed.h" |
eencae | 0:b7f1f47bb26a | 15 | #include "Gamepad.h" |
eencae | 0:b7f1f47bb26a | 16 | #include "N5110.h" |
HenryWTriff | 6:5f76dd718dc3 | 17 | #include "FXOS8700CQ.h" |
HenryWTriff | 10:29126a41b1da | 18 | #include "SDFileSystem.h" |
HenryWTriff | 2:d08b6a1eaf2b | 19 | #include "Graphics.h" |
HenryWTriff | 6:5f76dd718dc3 | 20 | #include "Mechanics.h" |
HenryWTriff | 6:5f76dd718dc3 | 21 | #include "Menu.h" |
HenryWTriff | 6:5f76dd718dc3 | 22 | #include "LEDs.h" |
HenryWTriff | 6:5f76dd718dc3 | 23 | #include "Ghost.h" |
HenryWTriff | 6:5f76dd718dc3 | 24 | #include <string> |
eencae | 0:b7f1f47bb26a | 25 | |
HenryWTriff | 2:d08b6a1eaf2b | 26 | //OBJECTS |
HenryWTriff | 2:d08b6a1eaf2b | 27 | Gamepad Device; |
HenryWTriff | 2:d08b6a1eaf2b | 28 | N5110 LCD; |
HenryWTriff | 6:5f76dd718dc3 | 29 | FXOS8700CQ Gyro(I2C_SDA,I2C_SCL); |
HenryWTriff | 10:29126a41b1da | 30 | SDFileSystem SD(PTE3, PTE1, PTE2, PTE4, "sd"); |
HenryWTriff | 2:d08b6a1eaf2b | 31 | Graphics Graphics; |
HenryWTriff | 5:2d9f3c36bcb9 | 32 | Mechanics Mechanics; |
HenryWTriff | 6:5f76dd718dc3 | 33 | Menu Menu; |
HenryWTriff | 6:5f76dd718dc3 | 34 | LEDs LEDs; |
HenryWTriff | 6:5f76dd718dc3 | 35 | Ghost Ghost; |
HenryWTriff | 3:ceed6d026b8b | 36 | |
HenryWTriff | 3:ceed6d026b8b | 37 | #ifndef STRUCTS |
HenryWTriff | 3:ceed6d026b8b | 38 | #define STRUCTS |
HenryWTriff | 3:ceed6d026b8b | 39 | |
HenryWTriff | 3:ceed6d026b8b | 40 | //STRUCTS |
HenryWTriff | 3:ceed6d026b8b | 41 | struct Point_2D { |
HenryWTriff | 3:ceed6d026b8b | 42 | float x; |
HenryWTriff | 3:ceed6d026b8b | 43 | float y; |
HenryWTriff | 3:ceed6d026b8b | 44 | }; |
HenryWTriff | 3:ceed6d026b8b | 45 | struct Line_2D { |
HenryWTriff | 3:ceed6d026b8b | 46 | Point_2D from; |
HenryWTriff | 3:ceed6d026b8b | 47 | Point_2D to; |
HenryWTriff | 3:ceed6d026b8b | 48 | }; |
HenryWTriff | 3:ceed6d026b8b | 49 | |
HenryWTriff | 5:2d9f3c36bcb9 | 50 | struct Square_2D { |
HenryWTriff | 5:2d9f3c36bcb9 | 51 | Point_2D TL; |
HenryWTriff | 5:2d9f3c36bcb9 | 52 | Point_2D BR; |
HenryWTriff | 5:2d9f3c36bcb9 | 53 | }; |
HenryWTriff | 5:2d9f3c36bcb9 | 54 | struct Triangle_2D { |
HenryWTriff | 5:2d9f3c36bcb9 | 55 | Point_2D TL; |
HenryWTriff | 5:2d9f3c36bcb9 | 56 | Point_2D BR; |
HenryWTriff | 5:2d9f3c36bcb9 | 57 | int Type; |
HenryWTriff | 5:2d9f3c36bcb9 | 58 | }; |
HenryWTriff | 5:2d9f3c36bcb9 | 59 | |
HenryWTriff | 3:ceed6d026b8b | 60 | struct Map_Data { |
HenryWTriff | 3:ceed6d026b8b | 61 | int number_of_track_lines; |
HenryWTriff | 3:ceed6d026b8b | 62 | int number_of_dotted_lines; |
HenryWTriff | 3:ceed6d026b8b | 63 | int number_of_flags; |
HenryWTriff | 5:2d9f3c36bcb9 | 64 | int number_of_walls; |
HenryWTriff | 5:2d9f3c36bcb9 | 65 | int number_of_off_track_squares; |
HenryWTriff | 5:2d9f3c36bcb9 | 66 | int number_of_off_track_triangles; |
HenryWTriff | 5:2d9f3c36bcb9 | 67 | int number_of_out_of_bounds_squares; |
HenryWTriff | 5:2d9f3c36bcb9 | 68 | int number_of_out_of_bounds_triangles; |
HenryWTriff | 5:2d9f3c36bcb9 | 69 | int number_of_gates; |
HenryWTriff | 6:5f76dd718dc3 | 70 | int number_of_boost_plates; |
HenryWTriff | 6:5f76dd718dc3 | 71 | }; |
HenryWTriff | 6:5f76dd718dc3 | 72 | |
HenryWTriff | 6:5f76dd718dc3 | 73 | struct Time { |
HenryWTriff | 6:5f76dd718dc3 | 74 | int mins; |
HenryWTriff | 6:5f76dd718dc3 | 75 | int secs; |
HenryWTriff | 6:5f76dd718dc3 | 76 | int milis; |
HenryWTriff | 6:5f76dd718dc3 | 77 | }; |
HenryWTriff | 6:5f76dd718dc3 | 78 | |
HenryWTriff | 6:5f76dd718dc3 | 79 | struct Gyro_Data { |
HenryWTriff | 6:5f76dd718dc3 | 80 | float ax; |
HenryWTriff | 6:5f76dd718dc3 | 81 | float ay; |
HenryWTriff | 6:5f76dd718dc3 | 82 | float az; |
HenryWTriff | 6:5f76dd718dc3 | 83 | float mx; |
HenryWTriff | 6:5f76dd718dc3 | 84 | float my; |
HenryWTriff | 6:5f76dd718dc3 | 85 | float mz; |
HenryWTriff | 3:ceed6d026b8b | 86 | }; |
HenryWTriff | 3:ceed6d026b8b | 87 | |
HenryWTriff | 7:2ce6e90f6d47 | 88 | struct Menu_Data { |
HenryWTriff | 7:2ce6e90f6d47 | 89 | int Menu_return; |
HenryWTriff | 7:2ce6e90f6d47 | 90 | bool Back; |
HenryWTriff | 7:2ce6e90f6d47 | 91 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 92 | |
HenryWTriff | 3:ceed6d026b8b | 93 | #endif |
eencae | 0:b7f1f47bb26a | 94 | |
HenryWTriff | 8:4503c92acaf6 | 95 | #include "Maps.h" |
HenryWTriff | 6:5f76dd718dc3 | 96 | |
HenryWTriff | 2:d08b6a1eaf2b | 97 | //GLOBAL VARIABLES |
HenryWTriff | 10:29126a41b1da | 98 | #ifndef ENUMS |
HenryWTriff | 10:29126a41b1da | 99 | #define ENUMS |
HenryWTriff | 10:29126a41b1da | 100 | enum track {Small, Medium, Large}; |
HenryWTriff | 7:2ce6e90f6d47 | 101 | enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid}; |
HenryWTriff | 10:29126a41b1da | 102 | #endif |
HenryWTriff | 7:2ce6e90f6d47 | 103 | |
HenryWTriff | 2:d08b6a1eaf2b | 104 | //Transform |
HenryWTriff | 2:d08b6a1eaf2b | 105 | int angle = 0; |
HenryWTriff | 2:d08b6a1eaf2b | 106 | Point_2D translation = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 107 | float squish = 0.15; |
HenryWTriff | 2:d08b6a1eaf2b | 108 | |
HenryWTriff | 3:ceed6d026b8b | 109 | //Vehicle parameters |
HenryWTriff | 7:2ce6e90f6d47 | 110 | float speed; |
HenryWTriff | 7:2ce6e90f6d47 | 111 | float max_speed; |
HenryWTriff | 7:2ce6e90f6d47 | 112 | int handling; |
HenryWTriff | 7:2ce6e90f6d47 | 113 | float off_track_speed; |
HenryWTriff | 7:2ce6e90f6d47 | 114 | float acceleration; |
HenryWTriff | 7:2ce6e90f6d47 | 115 | float deceleration; |
HenryWTriff | 7:2ce6e90f6d47 | 116 | int car_model = Stupid; |
HenryWTriff | 3:ceed6d026b8b | 117 | |
HenryWTriff | 5:2d9f3c36bcb9 | 118 | //Mechanics |
HenryWTriff | 5:2d9f3c36bcb9 | 119 | int lap_gate = 0; |
HenryWTriff | 5:2d9f3c36bcb9 | 120 | int laps = 1; |
HenryWTriff | 6:5f76dd718dc3 | 121 | int number_of_laps = 3; |
HenryWTriff | 6:5f76dd718dc3 | 122 | int race_time = 0; |
HenryWTriff | 9:7b1093d3f03a | 123 | bool ghost_enable = false; |
HenryWTriff | 5:2d9f3c36bcb9 | 124 | |
HenryWTriff | 2:d08b6a1eaf2b | 125 | //Game parameters |
HenryWTriff | 4:9f41fc1c2ad1 | 126 | int game_fps = 50; |
HenryWTriff | 6:5f76dd718dc3 | 127 | bool back_light = true; |
HenryWTriff | 6:5f76dd718dc3 | 128 | bool leds = true; |
HenryWTriff | 10:29126a41b1da | 129 | bool sound = true; |
HenryWTriff | 6:5f76dd718dc3 | 130 | bool gyro_enabled = false; |
eencae | 0:b7f1f47bb26a | 131 | |
eencae | 0:b7f1f47bb26a | 132 | int main() |
eencae | 0:b7f1f47bb26a | 133 | { |
HenryWTriff | 2:d08b6a1eaf2b | 134 | LCD.init(); |
HenryWTriff | 2:d08b6a1eaf2b | 135 | Device.init(); |
HenryWTriff | 6:5f76dd718dc3 | 136 | Gyro.init(); |
HenryWTriff | 6:5f76dd718dc3 | 137 | Graphics.Change_Contrast(LCD,Device); |
HenryWTriff | 6:5f76dd718dc3 | 138 | |
HenryWTriff | 10:29126a41b1da | 139 | //START LOGO |
HenryWTriff | 10:29126a41b1da | 140 | Graphics.Draw_Logo(LCD); |
HenryWTriff | 10:29126a41b1da | 141 | |
HenryWTriff | 6:5f76dd718dc3 | 142 | //MENU |
HenryWTriff | 6:5f76dd718dc3 | 143 | |
HenryWTriff | 7:2ce6e90f6d47 | 144 | Menu_Data select_main_menu = {0,true}; |
HenryWTriff | 7:2ce6e90f6d47 | 145 | Menu_Data select_settings_menu = {0,false}; |
HenryWTriff | 7:2ce6e90f6d47 | 146 | Menu_Data select_game_mode = {0,true}; |
HenryWTriff | 7:2ce6e90f6d47 | 147 | Menu_Data select_map = {0,true}; |
HenryWTriff | 7:2ce6e90f6d47 | 148 | Menu_Data select_laps = {0,true}; |
HenryWTriff | 7:2ce6e90f6d47 | 149 | Menu_Data select_car = {0,true}; |
HenryWTriff | 6:5f76dd718dc3 | 150 | |
HenryWTriff | 7:2ce6e90f6d47 | 151 | do { |
HenryWTriff | 7:2ce6e90f6d47 | 152 | |
HenryWTriff | 7:2ce6e90f6d47 | 153 | select_main_menu = Menu.Main_Menu(LCD, Device); |
HenryWTriff | 7:2ce6e90f6d47 | 154 | |
HenryWTriff | 7:2ce6e90f6d47 | 155 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 2) { |
HenryWTriff | 10:29126a41b1da | 156 | bool format_done = false; |
HenryWTriff | 10:29126a41b1da | 157 | if(Menu.Settings_Menu(LCD, Device) == true && format_done == false) { |
HenryWTriff | 10:29126a41b1da | 158 | if(Menu.Format_SD(LCD, Device) == true && format_done == false) { |
HenryWTriff | 10:29126a41b1da | 159 | Ghost.SD_init(SD); |
HenryWTriff | 10:29126a41b1da | 160 | format_done = true; |
HenryWTriff | 10:29126a41b1da | 161 | } |
HenryWTriff | 10:29126a41b1da | 162 | } |
HenryWTriff | 7:2ce6e90f6d47 | 163 | select_main_menu.Back = true; |
HenryWTriff | 7:2ce6e90f6d47 | 164 | } |
HenryWTriff | 8:4503c92acaf6 | 165 | |
HenryWTriff | 7:2ce6e90f6d47 | 166 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 3) { |
HenryWTriff | 7:2ce6e90f6d47 | 167 | Menu.Credits_Menu(LCD, Device); |
HenryWTriff | 7:2ce6e90f6d47 | 168 | select_main_menu.Back = true; |
HenryWTriff | 7:2ce6e90f6d47 | 169 | } |
HenryWTriff | 7:2ce6e90f6d47 | 170 | |
HenryWTriff | 7:2ce6e90f6d47 | 171 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 1) { |
HenryWTriff | 7:2ce6e90f6d47 | 172 | select_game_mode = Menu.Select_Game_Mode(LCD, Device); |
HenryWTriff | 10:29126a41b1da | 173 | if(select_game_mode.Menu_return == 2) { |
HenryWTriff | 10:29126a41b1da | 174 | select_laps.Back = false; |
HenryWTriff | 10:29126a41b1da | 175 | select_laps.Menu_return = 3; |
HenryWTriff | 10:29126a41b1da | 176 | } |
HenryWTriff | 7:2ce6e90f6d47 | 177 | } |
HenryWTriff | 7:2ce6e90f6d47 | 178 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 1 && select_game_mode.Back == false) { |
HenryWTriff | 7:2ce6e90f6d47 | 179 | select_map = Menu.Select_Map(LCD, Device); |
HenryWTriff | 7:2ce6e90f6d47 | 180 | } |
HenryWTriff | 10:29126a41b1da | 181 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 1 && select_game_mode.Back == false && select_map.Back == false && select_laps.Back == true) { |
HenryWTriff | 7:2ce6e90f6d47 | 182 | select_laps = Menu.Select_Laps(LCD, Device); |
HenryWTriff | 7:2ce6e90f6d47 | 183 | } |
HenryWTriff | 7:2ce6e90f6d47 | 184 | if(select_main_menu.Back == false && select_main_menu.Menu_return == 1 && select_game_mode.Back == false && select_map.Back == false && select_laps.Back == false) { |
HenryWTriff | 7:2ce6e90f6d47 | 185 | select_car = Menu.Select_Car(LCD, Device); |
HenryWTriff | 7:2ce6e90f6d47 | 186 | } |
HenryWTriff | 7:2ce6e90f6d47 | 187 | } while(select_car.Back == true); |
HenryWTriff | 7:2ce6e90f6d47 | 188 | |
HenryWTriff | 7:2ce6e90f6d47 | 189 | car_model = select_car.Menu_return; |
HenryWTriff | 7:2ce6e90f6d47 | 190 | number_of_laps = select_laps.Menu_return; |
HenryWTriff | 10:29126a41b1da | 191 | if(select_game_mode.Menu_return == 2) { |
HenryWTriff | 9:7b1093d3f03a | 192 | ghost_enable = true; |
HenryWTriff | 9:7b1093d3f03a | 193 | } |
HenryWTriff | 7:2ce6e90f6d47 | 194 | leds = Menu.Get_LED_Setting(); |
HenryWTriff | 7:2ce6e90f6d47 | 195 | gyro_enabled = Menu.Get_Gyro_Setting(); |
HenryWTriff | 7:2ce6e90f6d47 | 196 | |
HenryWTriff | 7:2ce6e90f6d47 | 197 | //CAR PARAMETERS SETUP |
HenryWTriff | 7:2ce6e90f6d47 | 198 | max_speed = Mechanics.Get_Max_Speed(car_model); |
HenryWTriff | 7:2ce6e90f6d47 | 199 | acceleration = Mechanics.Get_Acceleration(car_model); |
HenryWTriff | 7:2ce6e90f6d47 | 200 | deceleration = Mechanics.Get_Deceleration(car_model); |
HenryWTriff | 7:2ce6e90f6d47 | 201 | off_track_speed = Mechanics.Get_Off_Road_Speed(car_model); |
HenryWTriff | 7:2ce6e90f6d47 | 202 | handling = Mechanics.Get_Handling(car_model); |
HenryWTriff | 7:2ce6e90f6d47 | 203 | |
HenryWTriff | 8:4503c92acaf6 | 204 | if(select_map.Menu_return == 1) { |
HenryWTriff | 8:4503c92acaf6 | 205 | |
HenryWTriff | 8:4503c92acaf6 | 206 | while(1) { |
HenryWTriff | 10:29126a41b1da | 207 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 208 | Ghost.SD_Read(Small, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 209 | } |
HenryWTriff | 8:4503c92acaf6 | 210 | |
HenryWTriff | 8:4503c92acaf6 | 211 | //COUNTDOWN |
HenryWTriff | 8:4503c92acaf6 | 212 | for(int count = 3; count >= 0; count--) { |
HenryWTriff | 8:4503c92acaf6 | 213 | LCD.clear(); |
HenryWTriff | 8:4503c92acaf6 | 214 | Graphics.Draw_Map( |
HenryWTriff | 8:4503c92acaf6 | 215 | translation, |
HenryWTriff | 8:4503c92acaf6 | 216 | angle, |
HenryWTriff | 8:4503c92acaf6 | 217 | squish, |
HenryWTriff | 8:4503c92acaf6 | 218 | (Line_2D *) Map_1_Track_Lines, |
HenryWTriff | 8:4503c92acaf6 | 219 | (Line_2D *)Map_1_Track_Dotted_Lines, |
HenryWTriff | 8:4503c92acaf6 | 220 | (Line_2D *)Map_1_Walls, |
HenryWTriff | 8:4503c92acaf6 | 221 | (Point_2D *)Map_1_Flags, |
HenryWTriff | 8:4503c92acaf6 | 222 | (Triangle_2D *)Map_1_Boost_Plates, |
HenryWTriff | 8:4503c92acaf6 | 223 | Map_1, |
HenryWTriff | 8:4503c92acaf6 | 224 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 225 | Ghost.Play(false, race_time), |
HenryWTriff | 8:4503c92acaf6 | 226 | LCD |
HenryWTriff | 8:4503c92acaf6 | 227 | ); |
HenryWTriff | 8:4503c92acaf6 | 228 | Graphics.Start_Sequence(count, LCD); |
HenryWTriff | 8:4503c92acaf6 | 229 | LEDs.Start_Sequence(leds, count, Device); |
HenryWTriff | 8:4503c92acaf6 | 230 | LCD.refresh(); |
HenryWTriff | 8:4503c92acaf6 | 231 | wait(1); |
HenryWTriff | 8:4503c92acaf6 | 232 | } |
HenryWTriff | 8:4503c92acaf6 | 233 | LEDs.Clear(Device); |
HenryWTriff | 8:4503c92acaf6 | 234 | |
HenryWTriff | 10:29126a41b1da | 235 | |
HenryWTriff | 8:4503c92acaf6 | 236 | while(laps <= number_of_laps) { |
HenryWTriff | 8:4503c92acaf6 | 237 | //MECHANICS |
HenryWTriff | 8:4503c92acaf6 | 238 | laps = Mechanics.Get_Laps(laps, Map_1_Gates, Map_1.number_of_gates, translation, lap_gate); |
HenryWTriff | 8:4503c92acaf6 | 239 | lap_gate = Mechanics.Get_Gate(Map_1_Gates, Map_1.number_of_gates, translation, lap_gate); |
HenryWTriff | 8:4503c92acaf6 | 240 | angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); |
HenryWTriff | 8:4503c92acaf6 | 241 | speed = Mechanics.Get_Speed( |
HenryWTriff | 8:4503c92acaf6 | 242 | speed, |
HenryWTriff | 8:4503c92acaf6 | 243 | max_speed, |
HenryWTriff | 8:4503c92acaf6 | 244 | acceleration, |
HenryWTriff | 8:4503c92acaf6 | 245 | deceleration, |
HenryWTriff | 8:4503c92acaf6 | 246 | off_track_speed, |
HenryWTriff | 8:4503c92acaf6 | 247 | translation, |
HenryWTriff | 8:4503c92acaf6 | 248 | Map_1_Off_Track_Square, |
HenryWTriff | 8:4503c92acaf6 | 249 | Map_1_Off_Track_Triangle, |
HenryWTriff | 8:4503c92acaf6 | 250 | Map_1_Out_Of_Bounds_Square, |
HenryWTriff | 8:4503c92acaf6 | 251 | Map_1_Out_Of_Bounds_Triangle, |
HenryWTriff | 8:4503c92acaf6 | 252 | Map_1_Boost_Plates, |
HenryWTriff | 8:4503c92acaf6 | 253 | Map_1, |
HenryWTriff | 8:4503c92acaf6 | 254 | Device |
HenryWTriff | 8:4503c92acaf6 | 255 | ); |
HenryWTriff | 8:4503c92acaf6 | 256 | translation = Mechanics.Get_Translation(translation, angle, speed, Map_1_Out_Of_Bounds_Square, Map_1_Out_Of_Bounds_Triangle, Map_1, Device); |
HenryWTriff | 8:4503c92acaf6 | 257 | |
HenryWTriff | 8:4503c92acaf6 | 258 | //LEDS |
HenryWTriff | 8:4503c92acaf6 | 259 | LEDs.Speed(leds, speed, max_speed, Device); |
HenryWTriff | 8:4503c92acaf6 | 260 | |
HenryWTriff | 8:4503c92acaf6 | 261 | //GHOST |
HenryWTriff | 9:7b1093d3f03a | 262 | if(ghost_enable == true) { |
HenryWTriff | 9:7b1093d3f03a | 263 | Ghost.Record(translation, race_time); |
HenryWTriff | 9:7b1093d3f03a | 264 | } |
HenryWTriff | 8:4503c92acaf6 | 265 | |
HenryWTriff | 8:4503c92acaf6 | 266 | //GRAPHICS |
HenryWTriff | 8:4503c92acaf6 | 267 | LCD.clear(); |
HenryWTriff | 8:4503c92acaf6 | 268 | Graphics.Change_Contrast(LCD,Device); |
HenryWTriff | 10:29126a41b1da | 269 | Graphics.Draw_Map( |
HenryWTriff | 10:29126a41b1da | 270 | translation, |
HenryWTriff | 10:29126a41b1da | 271 | angle, |
HenryWTriff | 10:29126a41b1da | 272 | squish, |
HenryWTriff | 10:29126a41b1da | 273 | (Line_2D *) Map_1_Track_Lines, |
HenryWTriff | 10:29126a41b1da | 274 | (Line_2D *)Map_1_Track_Dotted_Lines, |
HenryWTriff | 10:29126a41b1da | 275 | (Line_2D *)Map_1_Walls, |
HenryWTriff | 10:29126a41b1da | 276 | (Point_2D *)Map_1_Flags, |
HenryWTriff | 10:29126a41b1da | 277 | (Triangle_2D *)Map_1_Boost_Plates, |
HenryWTriff | 10:29126a41b1da | 278 | Map_1, |
HenryWTriff | 10:29126a41b1da | 279 | car_model, |
HenryWTriff | 10:29126a41b1da | 280 | Ghost.Play(ghost_enable, race_time), |
HenryWTriff | 10:29126a41b1da | 281 | LCD |
HenryWTriff | 10:29126a41b1da | 282 | ); |
HenryWTriff | 8:4503c92acaf6 | 283 | Graphics.Draw_Laps(laps, LCD); |
HenryWTriff | 8:4503c92acaf6 | 284 | Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 8:4503c92acaf6 | 285 | LCD.refresh(); |
HenryWTriff | 8:4503c92acaf6 | 286 | wait((1 / float(game_fps))); |
HenryWTriff | 8:4503c92acaf6 | 287 | race_time++; |
HenryWTriff | 8:4503c92acaf6 | 288 | |
HenryWTriff | 8:4503c92acaf6 | 289 | } |
HenryWTriff | 7:2ce6e90f6d47 | 290 | |
HenryWTriff | 8:4503c92acaf6 | 291 | LEDs.Clear(Device); |
HenryWTriff | 7:2ce6e90f6d47 | 292 | LCD.clear(); |
HenryWTriff | 7:2ce6e90f6d47 | 293 | Graphics.Draw_Map( |
HenryWTriff | 7:2ce6e90f6d47 | 294 | translation, |
HenryWTriff | 7:2ce6e90f6d47 | 295 | angle, |
HenryWTriff | 7:2ce6e90f6d47 | 296 | squish, |
HenryWTriff | 7:2ce6e90f6d47 | 297 | (Line_2D *) Map_1_Track_Lines, |
HenryWTriff | 7:2ce6e90f6d47 | 298 | (Line_2D *)Map_1_Track_Dotted_Lines, |
HenryWTriff | 7:2ce6e90f6d47 | 299 | (Line_2D *)Map_1_Walls, |
HenryWTriff | 7:2ce6e90f6d47 | 300 | (Point_2D *)Map_1_Flags, |
HenryWTriff | 7:2ce6e90f6d47 | 301 | (Triangle_2D *)Map_1_Boost_Plates, |
HenryWTriff | 7:2ce6e90f6d47 | 302 | Map_1, |
HenryWTriff | 7:2ce6e90f6d47 | 303 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 304 | Ghost.Play(false, race_time), |
HenryWTriff | 7:2ce6e90f6d47 | 305 | LCD |
HenryWTriff | 7:2ce6e90f6d47 | 306 | ); |
HenryWTriff | 8:4503c92acaf6 | 307 | Graphics.Finish(LCD); |
HenryWTriff | 8:4503c92acaf6 | 308 | Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 309 | LCD.refresh(); |
HenryWTriff | 10:29126a41b1da | 310 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 311 | Ghost.Copy(race_time, Small, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 312 | } |
HenryWTriff | 8:4503c92acaf6 | 313 | |
HenryWTriff | 8:4503c92acaf6 | 314 | //RESET |
HenryWTriff | 8:4503c92acaf6 | 315 | angle = 0; |
HenryWTriff | 8:4503c92acaf6 | 316 | Point_2D test = {0,0}; |
HenryWTriff | 8:4503c92acaf6 | 317 | translation = test; |
HenryWTriff | 8:4503c92acaf6 | 318 | squish = 0.15; |
HenryWTriff | 8:4503c92acaf6 | 319 | speed = 0; |
HenryWTriff | 8:4503c92acaf6 | 320 | max_speed = 4; |
HenryWTriff | 8:4503c92acaf6 | 321 | handling = 2; |
HenryWTriff | 8:4503c92acaf6 | 322 | lap_gate = 0; |
HenryWTriff | 8:4503c92acaf6 | 323 | laps = 1; |
HenryWTriff | 8:4503c92acaf6 | 324 | race_time = 0; |
HenryWTriff | 8:4503c92acaf6 | 325 | |
HenryWTriff | 8:4503c92acaf6 | 326 | wait(3); |
HenryWTriff | 7:2ce6e90f6d47 | 327 | } |
HenryWTriff | 8:4503c92acaf6 | 328 | } else if(select_map.Menu_return == 2) { |
HenryWTriff | 8:4503c92acaf6 | 329 | while(1) { |
HenryWTriff | 8:4503c92acaf6 | 330 | |
HenryWTriff | 10:29126a41b1da | 331 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 332 | Ghost.SD_Read(Medium, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 333 | } |
HenryWTriff | 8:4503c92acaf6 | 334 | //COUNTDOWN |
HenryWTriff | 8:4503c92acaf6 | 335 | for(int count = 3; count >= 0; count--) { |
HenryWTriff | 8:4503c92acaf6 | 336 | LCD.clear(); |
HenryWTriff | 8:4503c92acaf6 | 337 | Graphics.Draw_Map( |
HenryWTriff | 8:4503c92acaf6 | 338 | translation, |
HenryWTriff | 8:4503c92acaf6 | 339 | angle, |
HenryWTriff | 8:4503c92acaf6 | 340 | squish, |
HenryWTriff | 8:4503c92acaf6 | 341 | (Line_2D *) Map_2_Track_Lines, |
HenryWTriff | 8:4503c92acaf6 | 342 | (Line_2D *)Map_2_Track_Dotted_Lines, |
HenryWTriff | 8:4503c92acaf6 | 343 | (Line_2D *)Map_2_Walls, |
HenryWTriff | 8:4503c92acaf6 | 344 | (Point_2D *)Map_2_Flags, |
HenryWTriff | 8:4503c92acaf6 | 345 | (Triangle_2D *)Map_2_Boost_Plates, |
HenryWTriff | 8:4503c92acaf6 | 346 | Map_2, |
HenryWTriff | 8:4503c92acaf6 | 347 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 348 | Ghost.Play(false, race_time), |
HenryWTriff | 8:4503c92acaf6 | 349 | LCD |
HenryWTriff | 8:4503c92acaf6 | 350 | ); |
HenryWTriff | 8:4503c92acaf6 | 351 | Graphics.Start_Sequence(count, LCD); |
HenryWTriff | 8:4503c92acaf6 | 352 | LEDs.Start_Sequence(leds, count, Device); |
HenryWTriff | 8:4503c92acaf6 | 353 | LCD.refresh(); |
HenryWTriff | 8:4503c92acaf6 | 354 | wait(1); |
HenryWTriff | 8:4503c92acaf6 | 355 | } |
HenryWTriff | 8:4503c92acaf6 | 356 | LEDs.Clear(Device); |
HenryWTriff | 6:5f76dd718dc3 | 357 | |
HenryWTriff | 8:4503c92acaf6 | 358 | while(laps <= number_of_laps) { |
HenryWTriff | 8:4503c92acaf6 | 359 | //MECHANICS |
HenryWTriff | 8:4503c92acaf6 | 360 | laps = Mechanics.Get_Laps(laps, Map_2_Gates, Map_2.number_of_gates, translation, lap_gate); |
HenryWTriff | 8:4503c92acaf6 | 361 | lap_gate = Mechanics.Get_Gate(Map_2_Gates, Map_2.number_of_gates, translation, lap_gate); |
HenryWTriff | 8:4503c92acaf6 | 362 | angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); |
HenryWTriff | 8:4503c92acaf6 | 363 | speed = Mechanics.Get_Speed( |
HenryWTriff | 8:4503c92acaf6 | 364 | speed, |
HenryWTriff | 8:4503c92acaf6 | 365 | max_speed, |
HenryWTriff | 8:4503c92acaf6 | 366 | acceleration, |
HenryWTriff | 8:4503c92acaf6 | 367 | deceleration, |
HenryWTriff | 8:4503c92acaf6 | 368 | off_track_speed, |
HenryWTriff | 8:4503c92acaf6 | 369 | translation, |
HenryWTriff | 8:4503c92acaf6 | 370 | Map_2_Off_Track_Square, |
HenryWTriff | 8:4503c92acaf6 | 371 | Map_2_Off_Track_Triangle, |
HenryWTriff | 8:4503c92acaf6 | 372 | Map_2_Out_Of_Bounds_Square, |
HenryWTriff | 8:4503c92acaf6 | 373 | Map_2_Out_Of_Bounds_Triangle, |
HenryWTriff | 8:4503c92acaf6 | 374 | Map_2_Boost_Plates, |
HenryWTriff | 8:4503c92acaf6 | 375 | Map_2, |
HenryWTriff | 8:4503c92acaf6 | 376 | Device |
HenryWTriff | 8:4503c92acaf6 | 377 | ); |
HenryWTriff | 8:4503c92acaf6 | 378 | translation = Mechanics.Get_Translation(translation, angle, speed, Map_2_Out_Of_Bounds_Square, Map_2_Out_Of_Bounds_Triangle, Map_2, Device); |
HenryWTriff | 8:4503c92acaf6 | 379 | |
HenryWTriff | 8:4503c92acaf6 | 380 | //LEDS |
HenryWTriff | 8:4503c92acaf6 | 381 | LEDs.Speed(leds, speed, max_speed, Device); |
HenryWTriff | 8:4503c92acaf6 | 382 | |
HenryWTriff | 8:4503c92acaf6 | 383 | //GHOST |
HenryWTriff | 9:7b1093d3f03a | 384 | if(ghost_enable == true) { |
HenryWTriff | 9:7b1093d3f03a | 385 | Ghost.Record(translation, race_time); |
HenryWTriff | 9:7b1093d3f03a | 386 | } |
HenryWTriff | 6:5f76dd718dc3 | 387 | |
HenryWTriff | 8:4503c92acaf6 | 388 | //GRAPHICS |
HenryWTriff | 8:4503c92acaf6 | 389 | LCD.clear(); |
HenryWTriff | 8:4503c92acaf6 | 390 | Graphics.Change_Contrast(LCD,Device); |
HenryWTriff | 10:29126a41b1da | 391 | Graphics.Draw_Map( |
HenryWTriff | 10:29126a41b1da | 392 | translation, |
HenryWTriff | 10:29126a41b1da | 393 | angle, |
HenryWTriff | 10:29126a41b1da | 394 | squish, |
HenryWTriff | 10:29126a41b1da | 395 | (Line_2D *) Map_2_Track_Lines, |
HenryWTriff | 10:29126a41b1da | 396 | (Line_2D *)Map_2_Track_Dotted_Lines, |
HenryWTriff | 10:29126a41b1da | 397 | (Line_2D *)Map_2_Walls, |
HenryWTriff | 10:29126a41b1da | 398 | (Point_2D *)Map_2_Flags, |
HenryWTriff | 10:29126a41b1da | 399 | (Triangle_2D *)Map_2_Boost_Plates, |
HenryWTriff | 10:29126a41b1da | 400 | Map_2, |
HenryWTriff | 10:29126a41b1da | 401 | car_model, |
HenryWTriff | 10:29126a41b1da | 402 | Ghost.Play(ghost_enable, race_time), |
HenryWTriff | 10:29126a41b1da | 403 | LCD |
HenryWTriff | 10:29126a41b1da | 404 | ); |
HenryWTriff | 8:4503c92acaf6 | 405 | Graphics.Draw_Laps(laps, LCD); |
HenryWTriff | 8:4503c92acaf6 | 406 | Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 8:4503c92acaf6 | 407 | LCD.refresh(); |
HenryWTriff | 8:4503c92acaf6 | 408 | wait((1 / float(game_fps))); |
HenryWTriff | 8:4503c92acaf6 | 409 | race_time++; |
HenryWTriff | 6:5f76dd718dc3 | 410 | |
HenryWTriff | 8:4503c92acaf6 | 411 | } |
HenryWTriff | 8:4503c92acaf6 | 412 | |
HenryWTriff | 6:5f76dd718dc3 | 413 | |
HenryWTriff | 8:4503c92acaf6 | 414 | LEDs.Clear(Device); |
HenryWTriff | 6:5f76dd718dc3 | 415 | LCD.clear(); |
HenryWTriff | 6:5f76dd718dc3 | 416 | Graphics.Draw_Map( |
HenryWTriff | 6:5f76dd718dc3 | 417 | translation, |
HenryWTriff | 6:5f76dd718dc3 | 418 | angle, |
HenryWTriff | 6:5f76dd718dc3 | 419 | squish, |
HenryWTriff | 8:4503c92acaf6 | 420 | (Line_2D *) Map_2_Track_Lines, |
HenryWTriff | 8:4503c92acaf6 | 421 | (Line_2D *)Map_2_Track_Dotted_Lines, |
HenryWTriff | 8:4503c92acaf6 | 422 | (Line_2D *)Map_2_Walls, |
HenryWTriff | 8:4503c92acaf6 | 423 | (Point_2D *)Map_2_Flags, |
HenryWTriff | 8:4503c92acaf6 | 424 | (Triangle_2D *)Map_2_Boost_Plates, |
HenryWTriff | 8:4503c92acaf6 | 425 | Map_2, |
HenryWTriff | 7:2ce6e90f6d47 | 426 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 427 | Ghost.Play(false, race_time), |
HenryWTriff | 9:7b1093d3f03a | 428 | LCD |
HenryWTriff | 9:7b1093d3f03a | 429 | ); |
HenryWTriff | 9:7b1093d3f03a | 430 | Graphics.Finish(LCD); |
HenryWTriff | 9:7b1093d3f03a | 431 | Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 9:7b1093d3f03a | 432 | LCD.refresh(); |
HenryWTriff | 10:29126a41b1da | 433 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 434 | Ghost.Copy(race_time, Medium, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 435 | } |
HenryWTriff | 9:7b1093d3f03a | 436 | |
HenryWTriff | 9:7b1093d3f03a | 437 | //RESET |
HenryWTriff | 9:7b1093d3f03a | 438 | angle = 0; |
HenryWTriff | 9:7b1093d3f03a | 439 | Point_2D test = {0,0}; |
HenryWTriff | 9:7b1093d3f03a | 440 | translation = test; |
HenryWTriff | 9:7b1093d3f03a | 441 | squish = 0.15; |
HenryWTriff | 9:7b1093d3f03a | 442 | speed = 0; |
HenryWTriff | 9:7b1093d3f03a | 443 | max_speed = 4; |
HenryWTriff | 9:7b1093d3f03a | 444 | handling = 2; |
HenryWTriff | 9:7b1093d3f03a | 445 | lap_gate = 0; |
HenryWTriff | 9:7b1093d3f03a | 446 | laps = 1; |
HenryWTriff | 9:7b1093d3f03a | 447 | race_time = 0; |
HenryWTriff | 9:7b1093d3f03a | 448 | |
HenryWTriff | 9:7b1093d3f03a | 449 | wait(3); |
HenryWTriff | 9:7b1093d3f03a | 450 | } |
HenryWTriff | 9:7b1093d3f03a | 451 | } else if(select_map.Menu_return == 3) { |
HenryWTriff | 9:7b1093d3f03a | 452 | while(1) { |
HenryWTriff | 9:7b1093d3f03a | 453 | |
HenryWTriff | 10:29126a41b1da | 454 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 455 | Ghost.SD_Read(Large, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 456 | } |
HenryWTriff | 10:29126a41b1da | 457 | |
HenryWTriff | 9:7b1093d3f03a | 458 | //COUNTDOWN |
HenryWTriff | 9:7b1093d3f03a | 459 | for(int count = 3; count >= 0; count--) { |
HenryWTriff | 9:7b1093d3f03a | 460 | LCD.clear(); |
HenryWTriff | 9:7b1093d3f03a | 461 | Graphics.Draw_Map( |
HenryWTriff | 9:7b1093d3f03a | 462 | translation, |
HenryWTriff | 9:7b1093d3f03a | 463 | angle, |
HenryWTriff | 9:7b1093d3f03a | 464 | squish, |
HenryWTriff | 9:7b1093d3f03a | 465 | (Line_2D *) Map_3_Track_Lines, |
HenryWTriff | 9:7b1093d3f03a | 466 | (Line_2D *)Map_3_Track_Dotted_Lines, |
HenryWTriff | 9:7b1093d3f03a | 467 | (Line_2D *)Map_3_Walls, |
HenryWTriff | 9:7b1093d3f03a | 468 | (Point_2D *)Map_3_Flags, |
HenryWTriff | 9:7b1093d3f03a | 469 | (Triangle_2D *)Map_3_Boost_Plates, |
HenryWTriff | 9:7b1093d3f03a | 470 | Map_3, |
HenryWTriff | 9:7b1093d3f03a | 471 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 472 | Ghost.Play(false, race_time), |
HenryWTriff | 9:7b1093d3f03a | 473 | LCD |
HenryWTriff | 9:7b1093d3f03a | 474 | ); |
HenryWTriff | 9:7b1093d3f03a | 475 | Graphics.Start_Sequence(count, LCD); |
HenryWTriff | 9:7b1093d3f03a | 476 | LEDs.Start_Sequence(leds, count, Device); |
HenryWTriff | 9:7b1093d3f03a | 477 | LCD.refresh(); |
HenryWTriff | 9:7b1093d3f03a | 478 | wait(1); |
HenryWTriff | 9:7b1093d3f03a | 479 | } |
HenryWTriff | 9:7b1093d3f03a | 480 | LEDs.Clear(Device); |
HenryWTriff | 9:7b1093d3f03a | 481 | |
HenryWTriff | 10:29126a41b1da | 482 | |
HenryWTriff | 9:7b1093d3f03a | 483 | while(laps <= number_of_laps) { |
HenryWTriff | 9:7b1093d3f03a | 484 | //MECHANICS |
HenryWTriff | 9:7b1093d3f03a | 485 | laps = Mechanics.Get_Laps(laps, Map_3_Gates, Map_3.number_of_gates, translation, lap_gate); |
HenryWTriff | 9:7b1093d3f03a | 486 | lap_gate = Mechanics.Get_Gate(Map_3_Gates, Map_3.number_of_gates, translation, lap_gate); |
HenryWTriff | 9:7b1093d3f03a | 487 | angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); |
HenryWTriff | 9:7b1093d3f03a | 488 | speed = Mechanics.Get_Speed( |
HenryWTriff | 9:7b1093d3f03a | 489 | speed, |
HenryWTriff | 9:7b1093d3f03a | 490 | max_speed, |
HenryWTriff | 9:7b1093d3f03a | 491 | acceleration, |
HenryWTriff | 9:7b1093d3f03a | 492 | deceleration, |
HenryWTriff | 9:7b1093d3f03a | 493 | off_track_speed, |
HenryWTriff | 9:7b1093d3f03a | 494 | translation, |
HenryWTriff | 9:7b1093d3f03a | 495 | Map_3_Off_Track_Square, |
HenryWTriff | 9:7b1093d3f03a | 496 | Map_3_Off_Track_Triangle, |
HenryWTriff | 9:7b1093d3f03a | 497 | Map_3_Out_Of_Bounds_Square, |
HenryWTriff | 9:7b1093d3f03a | 498 | Map_3_Out_Of_Bounds_Triangle, |
HenryWTriff | 9:7b1093d3f03a | 499 | Map_3_Boost_Plates, |
HenryWTriff | 9:7b1093d3f03a | 500 | Map_3, |
HenryWTriff | 9:7b1093d3f03a | 501 | Device |
HenryWTriff | 9:7b1093d3f03a | 502 | ); |
HenryWTriff | 9:7b1093d3f03a | 503 | translation = Mechanics.Get_Translation(translation, angle, speed, Map_3_Out_Of_Bounds_Square, Map_3_Out_Of_Bounds_Triangle, Map_3, Device); |
HenryWTriff | 9:7b1093d3f03a | 504 | |
HenryWTriff | 9:7b1093d3f03a | 505 | //LEDS |
HenryWTriff | 9:7b1093d3f03a | 506 | LEDs.Speed(leds, speed, max_speed, Device); |
HenryWTriff | 9:7b1093d3f03a | 507 | |
HenryWTriff | 9:7b1093d3f03a | 508 | //GHOST |
HenryWTriff | 9:7b1093d3f03a | 509 | if(ghost_enable == true) { |
HenryWTriff | 9:7b1093d3f03a | 510 | Ghost.Record(translation, race_time); |
HenryWTriff | 9:7b1093d3f03a | 511 | } |
HenryWTriff | 9:7b1093d3f03a | 512 | |
HenryWTriff | 9:7b1093d3f03a | 513 | //GRAPHICS |
HenryWTriff | 9:7b1093d3f03a | 514 | LCD.clear(); |
HenryWTriff | 9:7b1093d3f03a | 515 | Graphics.Change_Contrast(LCD,Device); |
HenryWTriff | 10:29126a41b1da | 516 | Graphics.Draw_Map( |
HenryWTriff | 10:29126a41b1da | 517 | translation, |
HenryWTriff | 10:29126a41b1da | 518 | angle, |
HenryWTriff | 10:29126a41b1da | 519 | squish, |
HenryWTriff | 10:29126a41b1da | 520 | (Line_2D *) Map_3_Track_Lines, |
HenryWTriff | 10:29126a41b1da | 521 | (Line_2D *)Map_3_Track_Dotted_Lines, |
HenryWTriff | 10:29126a41b1da | 522 | (Line_2D *)Map_3_Walls, |
HenryWTriff | 10:29126a41b1da | 523 | (Point_2D *)Map_3_Flags, |
HenryWTriff | 10:29126a41b1da | 524 | (Triangle_2D *)Map_3_Boost_Plates, |
HenryWTriff | 10:29126a41b1da | 525 | Map_3, |
HenryWTriff | 10:29126a41b1da | 526 | car_model, |
HenryWTriff | 10:29126a41b1da | 527 | Ghost.Play(ghost_enable, race_time), |
HenryWTriff | 10:29126a41b1da | 528 | LCD |
HenryWTriff | 10:29126a41b1da | 529 | ); |
HenryWTriff | 9:7b1093d3f03a | 530 | Graphics.Draw_Laps(laps, LCD); |
HenryWTriff | 9:7b1093d3f03a | 531 | Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 9:7b1093d3f03a | 532 | LCD.refresh(); |
HenryWTriff | 9:7b1093d3f03a | 533 | wait((1 / float(game_fps))); |
HenryWTriff | 9:7b1093d3f03a | 534 | race_time++; |
HenryWTriff | 9:7b1093d3f03a | 535 | |
HenryWTriff | 9:7b1093d3f03a | 536 | } |
HenryWTriff | 9:7b1093d3f03a | 537 | |
HenryWTriff | 9:7b1093d3f03a | 538 | |
HenryWTriff | 9:7b1093d3f03a | 539 | LEDs.Clear(Device); |
HenryWTriff | 9:7b1093d3f03a | 540 | LCD.clear(); |
HenryWTriff | 9:7b1093d3f03a | 541 | Graphics.Draw_Map( |
HenryWTriff | 9:7b1093d3f03a | 542 | translation, |
HenryWTriff | 9:7b1093d3f03a | 543 | angle, |
HenryWTriff | 9:7b1093d3f03a | 544 | squish, |
HenryWTriff | 9:7b1093d3f03a | 545 | (Line_2D *) Map_3_Track_Lines, |
HenryWTriff | 9:7b1093d3f03a | 546 | (Line_2D *)Map_3_Track_Dotted_Lines, |
HenryWTriff | 9:7b1093d3f03a | 547 | (Line_2D *)Map_3_Walls, |
HenryWTriff | 9:7b1093d3f03a | 548 | (Point_2D *)Map_3_Flags, |
HenryWTriff | 9:7b1093d3f03a | 549 | (Triangle_2D *)Map_3_Boost_Plates, |
HenryWTriff | 9:7b1093d3f03a | 550 | Map_3, |
HenryWTriff | 9:7b1093d3f03a | 551 | car_model, |
HenryWTriff | 9:7b1093d3f03a | 552 | Ghost.Play(false, race_time), |
HenryWTriff | 6:5f76dd718dc3 | 553 | LCD |
HenryWTriff | 6:5f76dd718dc3 | 554 | ); |
HenryWTriff | 8:4503c92acaf6 | 555 | Graphics.Finish(LCD); |
HenryWTriff | 8:4503c92acaf6 | 556 | Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); |
HenryWTriff | 6:5f76dd718dc3 | 557 | LCD.refresh(); |
HenryWTriff | 10:29126a41b1da | 558 | if(ghost_enable == true) { |
HenryWTriff | 10:29126a41b1da | 559 | Ghost.Copy(race_time, Large, car_model, SD); |
HenryWTriff | 10:29126a41b1da | 560 | } |
HenryWTriff | 7:2ce6e90f6d47 | 561 | |
HenryWTriff | 8:4503c92acaf6 | 562 | //RESET |
HenryWTriff | 8:4503c92acaf6 | 563 | angle = 0; |
HenryWTriff | 8:4503c92acaf6 | 564 | Point_2D test = {0,0}; |
HenryWTriff | 8:4503c92acaf6 | 565 | translation = test; |
HenryWTriff | 8:4503c92acaf6 | 566 | squish = 0.15; |
HenryWTriff | 8:4503c92acaf6 | 567 | speed = 0; |
HenryWTriff | 8:4503c92acaf6 | 568 | max_speed = 4; |
HenryWTriff | 8:4503c92acaf6 | 569 | handling = 2; |
HenryWTriff | 8:4503c92acaf6 | 570 | lap_gate = 0; |
HenryWTriff | 8:4503c92acaf6 | 571 | laps = 1; |
HenryWTriff | 8:4503c92acaf6 | 572 | race_time = 0; |
HenryWTriff | 6:5f76dd718dc3 | 573 | |
HenryWTriff | 8:4503c92acaf6 | 574 | wait(3); |
HenryWTriff | 8:4503c92acaf6 | 575 | } |
HenryWTriff | 2:d08b6a1eaf2b | 576 | } |
eencae | 0:b7f1f47bb26a | 577 | } |
eencae | 0:b7f1f47bb26a | 578 |