Dependencies:   mbed

Committer:
HenryWTriff
Date:
Tue Feb 11 13:18:40 2020 +0000
Revision:
3:ceed6d026b8b
Parent:
2:d08b6a1eaf2b
Child:
4:9f41fc1c2ad1
Controls added, Proper map drawn, Sprites added

Who changed what in which revision?

UserRevisionLine numberNew 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 2:d08b6a1eaf2b 17 #include "Graphics.h"
HenryWTriff 3:ceed6d026b8b 18 #include "Controls.h"
eencae 0:b7f1f47bb26a 19
HenryWTriff 2:d08b6a1eaf2b 20 //OBJECTS
HenryWTriff 2:d08b6a1eaf2b 21 Gamepad Device;
HenryWTriff 2:d08b6a1eaf2b 22 N5110 LCD;
HenryWTriff 2:d08b6a1eaf2b 23 Graphics Graphics;
HenryWTriff 3:ceed6d026b8b 24 Controls Controls;
HenryWTriff 3:ceed6d026b8b 25
HenryWTriff 3:ceed6d026b8b 26 #ifndef STRUCTS
HenryWTriff 3:ceed6d026b8b 27 #define STRUCTS
HenryWTriff 3:ceed6d026b8b 28
HenryWTriff 3:ceed6d026b8b 29 //STRUCTS
HenryWTriff 3:ceed6d026b8b 30 struct Point_2D {
HenryWTriff 3:ceed6d026b8b 31 float x;
HenryWTriff 3:ceed6d026b8b 32 float y;
HenryWTriff 3:ceed6d026b8b 33 };
HenryWTriff 3:ceed6d026b8b 34 struct Line_2D {
HenryWTriff 3:ceed6d026b8b 35 Point_2D from;
HenryWTriff 3:ceed6d026b8b 36 Point_2D to;
HenryWTriff 3:ceed6d026b8b 37 };
HenryWTriff 3:ceed6d026b8b 38
HenryWTriff 3:ceed6d026b8b 39 struct Map_Data {
HenryWTriff 3:ceed6d026b8b 40 int number_of_track_lines;
HenryWTriff 3:ceed6d026b8b 41 int number_of_dotted_lines;
HenryWTriff 3:ceed6d026b8b 42 int number_of_flags;
HenryWTriff 3:ceed6d026b8b 43 };
HenryWTriff 3:ceed6d026b8b 44
HenryWTriff 3:ceed6d026b8b 45 #endif
eencae 0:b7f1f47bb26a 46
HenryWTriff 2:d08b6a1eaf2b 47 //MAP - 1
HenryWTriff 3:ceed6d026b8b 48 Map_Data Map_1 = {36,1,2};
HenryWTriff 3:ceed6d026b8b 49
HenryWTriff 2:d08b6a1eaf2b 50 //Lines
HenryWTriff 3:ceed6d026b8b 51 const Line_2D Map_1_Track_Lines[36] = {
HenryWTriff 2:d08b6a1eaf2b 52 //Inside Line
HenryWTriff 3:ceed6d026b8b 53 {{-20,0},{-20,80}},
HenryWTriff 3:ceed6d026b8b 54 {{-20,80},{-40,100}},
HenryWTriff 3:ceed6d026b8b 55 {{-40,100},{-80,100}},
HenryWTriff 3:ceed6d026b8b 56 {{-80,100},{-100,80}},
HenryWTriff 3:ceed6d026b8b 57 {{-100,80},{-100,40}},
HenryWTriff 3:ceed6d026b8b 58 {{-100,40},{-140,0}},
HenryWTriff 3:ceed6d026b8b 59 {{-140,0},{-220,0}},
HenryWTriff 3:ceed6d026b8b 60 {{-220,0},{-260,40}},
HenryWTriff 3:ceed6d026b8b 61 {{-260,40},{-260,80}},
HenryWTriff 3:ceed6d026b8b 62 {{-260,80},{-280,100}},
HenryWTriff 3:ceed6d026b8b 63 {{-280,100},{-320,100}},
HenryWTriff 3:ceed6d026b8b 64 {{-320,100},{-360,60}},
HenryWTriff 3:ceed6d026b8b 65 {{-360,60},{-360,-100}},
HenryWTriff 3:ceed6d026b8b 66 {{-360,-100},{-300,-160}},
HenryWTriff 3:ceed6d026b8b 67 {{-300,-160},{-220,-80}},
HenryWTriff 3:ceed6d026b8b 68 {{-220,-80},{-100,-80}},
HenryWTriff 3:ceed6d026b8b 69 {{-100,-80},{-20,0}},
HenryWTriff 3:ceed6d026b8b 70 //Outside Line
HenryWTriff 3:ceed6d026b8b 71 {{20,-20},{20,100}},
HenryWTriff 3:ceed6d026b8b 72 {{20,100},{-20,140}},
HenryWTriff 3:ceed6d026b8b 73 {{-20,140},{-100,140}},
HenryWTriff 3:ceed6d026b8b 74 {{-100,140},{-140,100}},
HenryWTriff 3:ceed6d026b8b 75 {{-140,100},{-140,60}},
HenryWTriff 3:ceed6d026b8b 76 {{-140,60},{-160,40}},
HenryWTriff 3:ceed6d026b8b 77 {{-160,40},{-200,40}},
HenryWTriff 3:ceed6d026b8b 78 {{-200,40},{-220,60}},
HenryWTriff 3:ceed6d026b8b 79 {{-220,60},{-220,100}},
HenryWTriff 3:ceed6d026b8b 80 {{-220,100},{-260,140}},
HenryWTriff 3:ceed6d026b8b 81 {{-260,140},{-340,140}},
HenryWTriff 3:ceed6d026b8b 82 {{-340,140},{-400,80}},
HenryWTriff 3:ceed6d026b8b 83 {{-400,80},{-400,-120}},
HenryWTriff 3:ceed6d026b8b 84 {{-400,-120},{-320,-200}},
HenryWTriff 3:ceed6d026b8b 85 {{-320,-200},{-280,-200}},
HenryWTriff 3:ceed6d026b8b 86 {{-280,-200},{-200,-120}},
HenryWTriff 3:ceed6d026b8b 87 {{-200,-120},{-80,-120}},
HenryWTriff 3:ceed6d026b8b 88 {{-80,-120},{20,-20}},
HenryWTriff 3:ceed6d026b8b 89 };
HenryWTriff 3:ceed6d026b8b 90
HenryWTriff 3:ceed6d026b8b 91 const Line_2D Map_1_Track_Dotted_Lines[1] = {
HenryWTriff 3:ceed6d026b8b 92 {{-20,0},{20,0}},
HenryWTriff 3:ceed6d026b8b 93 };
HenryWTriff 3:ceed6d026b8b 94
HenryWTriff 3:ceed6d026b8b 95 Point_2D Map_1_Flags[2] = {
HenryWTriff 3:ceed6d026b8b 96 {-20,0},
HenryWTriff 3:ceed6d026b8b 97 {24,0}
HenryWTriff 2:d08b6a1eaf2b 98 };
HenryWTriff 2:d08b6a1eaf2b 99
HenryWTriff 2:d08b6a1eaf2b 100 //GLOBAL VARIABLES
HenryWTriff 2:d08b6a1eaf2b 101
HenryWTriff 2:d08b6a1eaf2b 102 //Transform
HenryWTriff 2:d08b6a1eaf2b 103 int angle = 0;
HenryWTriff 2:d08b6a1eaf2b 104 Point_2D translation = {0,0};
HenryWTriff 2:d08b6a1eaf2b 105 float squish = 0.15;
HenryWTriff 2:d08b6a1eaf2b 106
HenryWTriff 3:ceed6d026b8b 107 //Vehicle parameters
HenryWTriff 3:ceed6d026b8b 108 float speed = 0;
HenryWTriff 3:ceed6d026b8b 109 float max_speed = 4;
HenryWTriff 3:ceed6d026b8b 110 int handling = 1;
HenryWTriff 3:ceed6d026b8b 111
HenryWTriff 2:d08b6a1eaf2b 112 //Game parameters
HenryWTriff 3:ceed6d026b8b 113 int game_fps = 30;
eencae 0:b7f1f47bb26a 114
eencae 0:b7f1f47bb26a 115 int main()
eencae 0:b7f1f47bb26a 116 {
HenryWTriff 2:d08b6a1eaf2b 117 LCD.init();
HenryWTriff 2:d08b6a1eaf2b 118 Device.init();
HenryWTriff 2:d08b6a1eaf2b 119 while(1) {
HenryWTriff 3:ceed6d026b8b 120 angle = Controls.Get_Angle(angle, handling, Device);
HenryWTriff 3:ceed6d026b8b 121 translation = Controls.Get_Translation(translation, angle, speed, max_speed, Device);
HenryWTriff 3:ceed6d026b8b 122 Graphics.Change_Contrast(LCD,Device);
HenryWTriff 3:ceed6d026b8b 123 Graphics.Draw_Map(game_fps, translation, angle, squish, (Line_2D *) Map_1_Track_Lines, (Line_2D *)Map_1_Track_Dotted_Lines, (Point_2D *)Map_1_Flags, Map_1, LCD);
HenryWTriff 2:d08b6a1eaf2b 124 }
HenryWTriff 2:d08b6a1eaf2b 125
HenryWTriff 2:d08b6a1eaf2b 126
eencae 0:b7f1f47bb26a 127 }
eencae 0:b7f1f47bb26a 128