Henry Triff
/
ELEC2645_Project_el18ht
Graphics/Graphics.cpp@17:4c5f25d5c4d5, 2020-03-28 (annotated)
- Committer:
- HenryWTriff
- Date:
- Sat Mar 28 12:50:59 2020 +0000
- Revision:
- 17:4c5f25d5c4d5
- Parent:
- 10:29126a41b1da
- Child:
- 18:5fcb0514fb70
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
HenryWTriff | 2:d08b6a1eaf2b | 1 | #include "Graphics.h" |
HenryWTriff | 2:d08b6a1eaf2b | 2 | |
HenryWTriff | 17:4c5f25d5c4d5 | 3 | Graphics::Graphics() |
HenryWTriff | 17:4c5f25d5c4d5 | 4 | { |
HenryWTriff | 17:4c5f25d5c4d5 | 5 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 6 | |
HenryWTriff | 17:4c5f25d5c4d5 | 7 | Graphics::~Graphics() |
HenryWTriff | 17:4c5f25d5c4d5 | 8 | { |
HenryWTriff | 17:4c5f25d5c4d5 | 9 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 10 | |
HenryWTriff | 17:4c5f25d5c4d5 | 11 | |
HenryWTriff | 17:4c5f25d5c4d5 | 12 | |
HenryWTriff | 17:4c5f25d5c4d5 | 13 | |
HenryWTriff | 3:ceed6d026b8b | 14 | //*********** |
HenryWTriff | 3:ceed6d026b8b | 15 | // Sprites |
HenryWTriff | 3:ceed6d026b8b | 16 | //*********** |
HenryWTriff | 3:ceed6d026b8b | 17 | |
HenryWTriff | 10:29126a41b1da | 18 | int logo[48][84] = { |
HenryWTriff | 10:29126a41b1da | 19 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 20 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 21 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0}, |
HenryWTriff | 10:29126a41b1da | 22 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0}, |
HenryWTriff | 10:29126a41b1da | 23 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 24 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 25 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 26 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 27 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 28 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 29 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 30 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 31 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 32 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 33 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 34 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 35 | {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 36 | {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 37 | {0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 38 | {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 39 | {0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0}, |
HenryWTriff | 10:29126a41b1da | 40 | {0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0}, |
HenryWTriff | 10:29126a41b1da | 41 | {0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 42 | {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 43 | {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 44 | {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 45 | {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 46 | {0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 47 | {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 48 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 49 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 50 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 51 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 52 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 53 | {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 54 | {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 55 | {0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 56 | {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 57 | {0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 58 | {0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 59 | {0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 60 | {0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 61 | {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 62 | {0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 63 | {0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 64 | {0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 65 | {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
HenryWTriff | 10:29126a41b1da | 66 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} |
HenryWTriff | 10:29126a41b1da | 67 | }; |
HenryWTriff | 10:29126a41b1da | 68 | |
HenryWTriff | 3:ceed6d026b8b | 69 | int flag[8][8] = { |
HenryWTriff | 3:ceed6d026b8b | 70 | {4,1,1,1,1,1,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 71 | {4,1,1,0,1,0,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 72 | {4,1,0,1,0,1,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 73 | {4,1,1,0,1,0,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 74 | {4,1,1,1,1,1,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 75 | {4,4,4,4,4,4,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 76 | {4,4,4,4,4,4,1,1}, |
HenryWTriff | 3:ceed6d026b8b | 77 | {4,4,4,4,4,4,1,1}, |
HenryWTriff | 4:9f41fc1c2ad1 | 78 | }; |
HenryWTriff | 3:ceed6d026b8b | 79 | |
HenryWTriff | 7:2ce6e90f6d47 | 80 | //CARS |
HenryWTriff | 7:2ce6e90f6d47 | 81 | |
HenryWTriff | 7:2ce6e90f6d47 | 82 | int basic_car[8][8] = { |
HenryWTriff | 7:2ce6e90f6d47 | 83 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 84 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 85 | {4,4,1,1,1,1,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 86 | {4,1,0,0,0,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 87 | {4,1,0,0,0,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 88 | {1,0,0,0,0,0,0,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 89 | {1,1,1,1,1,1,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 90 | {1,1,4,4,4,4,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 91 | |
HenryWTriff | 7:2ce6e90f6d47 | 92 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 93 | |
HenryWTriff | 7:2ce6e90f6d47 | 94 | int offroad_car[8][8] = { |
HenryWTriff | 7:2ce6e90f6d47 | 95 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 96 | {4,1,1,1,1,1,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 97 | {4,1,0,1,1,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 98 | {4,1,1,0,0,1,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 99 | {4,1,1,0,0,1,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 100 | {1,1,0,1,1,0,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 101 | {1,1,1,1,1,1,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 102 | {1,1,4,4,4,4,1,1} |
HenryWTriff | 7:2ce6e90f6d47 | 103 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 104 | |
HenryWTriff | 7:2ce6e90f6d47 | 105 | int drifter_car[8][8] = { |
HenryWTriff | 7:2ce6e90f6d47 | 106 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 107 | {1,1,4,4,4,4,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 108 | {4,4,1,1,1,1,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 109 | {4,1,0,0,0,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 110 | {4,1,0,0,0,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 111 | {1,4,1,1,1,1,4,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 112 | {1,1,1,1,1,1,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 113 | {1,4,4,4,4,4,4,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 114 | |
HenryWTriff | 7:2ce6e90f6d47 | 115 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 116 | |
HenryWTriff | 7:2ce6e90f6d47 | 117 | int sports_car[8][8] = { |
HenryWTriff | 7:2ce6e90f6d47 | 118 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 119 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 120 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 121 | {1,1,4,4,4,4,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 122 | {4,4,1,1,1,1,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 123 | {4,1,0,0,0,0,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 124 | {1,1,1,1,1,1,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 125 | {1,1,4,4,4,4,1,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 126 | |
HenryWTriff | 7:2ce6e90f6d47 | 127 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 128 | |
HenryWTriff | 7:2ce6e90f6d47 | 129 | int race_car[8][8] = { |
HenryWTriff | 4:9f41fc1c2ad1 | 130 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 4:9f41fc1c2ad1 | 131 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 4:9f41fc1c2ad1 | 132 | {4,1,1,1,1,1,1,4}, |
HenryWTriff | 4:9f41fc1c2ad1 | 133 | {4,4,4,1,1,4,4,4}, |
HenryWTriff | 4:9f41fc1c2ad1 | 134 | {4,4,4,1,1,4,4,4}, |
HenryWTriff | 4:9f41fc1c2ad1 | 135 | {1,4,1,1,1,1,4,1}, |
HenryWTriff | 4:9f41fc1c2ad1 | 136 | {1,1,1,0,0,1,1,1}, |
HenryWTriff | 4:9f41fc1c2ad1 | 137 | {1,4,1,1,1,1,4,1}, |
HenryWTriff | 4:9f41fc1c2ad1 | 138 | }; |
HenryWTriff | 3:ceed6d026b8b | 139 | |
HenryWTriff | 7:2ce6e90f6d47 | 140 | int stupid_car[8][8] = { |
HenryWTriff | 7:2ce6e90f6d47 | 141 | {4,4,4,4,4,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 142 | {4,4,4,1,1,4,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 143 | {4,4,1,0,0,1,4,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 144 | {4,1,1,0,0,1,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 145 | {1,0,1,1,1,1,0,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 146 | {1,0,0,0,0,0,0,1}, |
HenryWTriff | 7:2ce6e90f6d47 | 147 | {4,1,1,1,1,1,1,4}, |
HenryWTriff | 7:2ce6e90f6d47 | 148 | {4,4,4,4,4,4,4,4} |
HenryWTriff | 7:2ce6e90f6d47 | 149 | }; |
HenryWTriff | 7:2ce6e90f6d47 | 150 | |
HenryWTriff | 6:5f76dd718dc3 | 151 | int ghost[8][8] = { |
HenryWTriff | 6:5f76dd718dc3 | 152 | {0,0,4,4,4,4,0,0}, |
HenryWTriff | 6:5f76dd718dc3 | 153 | {0,1,0,4,4,0,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 154 | {4,0,1,0,0,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 155 | {4,4,0,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 156 | {4,4,0,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 157 | {4,0,1,0,0,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 158 | {0,1,0,4,4,0,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 159 | {0,0,4,4,4,4,0,0}, |
HenryWTriff | 6:5f76dd718dc3 | 160 | }; |
HenryWTriff | 6:5f76dd718dc3 | 161 | |
HenryWTriff | 6:5f76dd718dc3 | 162 | int count_down_3[17][17] = { |
HenryWTriff | 6:5f76dd718dc3 | 163 | {4,4,4,4,0,0,0,0,0,0,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 164 | {4,4,4,0,1,1,1,1,1,1,1,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 165 | {4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 166 | {4,0,1,1,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 167 | {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 168 | {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 169 | {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 170 | {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 171 | {4,4,4,4,4,4,4,0,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 172 | {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 173 | {4,0,1,1,1,0,4,4,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 174 | {4,0,1,1,1,0,4,4,4,4,0,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 175 | {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 176 | {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 177 | {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 178 | {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 179 | {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4} |
HenryWTriff | 6:5f76dd718dc3 | 180 | }; |
HenryWTriff | 6:5f76dd718dc3 | 181 | |
HenryWTriff | 6:5f76dd718dc3 | 182 | int count_down_2[17][17] = { |
HenryWTriff | 6:5f76dd718dc3 | 183 | {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 184 | {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 185 | {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 186 | {4,4,0,1,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 187 | {4,0,1,1,1,1,0,0,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 188 | {4,0,1,1,1,0,4,4,4,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 189 | {4,0,1,1,1,0,4,4,0,1,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 190 | {4,4,0,0,0,4,4,0,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 191 | {4,4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 192 | {4,4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 193 | {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 194 | {4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 195 | {4,4,0,1,1,1,1,1,0,0,0,0,0,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 196 | {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 197 | {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 198 | {4,0,1,1,1,1,1,1,1,1,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 199 | {4,4,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4} |
HenryWTriff | 6:5f76dd718dc3 | 200 | }; |
HenryWTriff | 6:5f76dd718dc3 | 201 | |
HenryWTriff | 6:5f76dd718dc3 | 202 | int count_down_1[17][17] = { |
HenryWTriff | 6:5f76dd718dc3 | 203 | {4,4,4,4,4,4,4,0,0,0,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 204 | {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 205 | {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 206 | {4,4,4,4,0,1,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 207 | {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 208 | {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 209 | {4,4,4,0,1,1,1,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 210 | {4,4,4,4,0,0,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 211 | {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 212 | {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 213 | {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 214 | {4,4,4,4,4,4,0,1,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 215 | {4,4,4,4,0,0,1,1,1,1,1,0,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 216 | {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 217 | {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 218 | {4,4,4,0,1,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 219 | {4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4} |
HenryWTriff | 6:5f76dd718dc3 | 220 | }; |
HenryWTriff | 6:5f76dd718dc3 | 221 | |
HenryWTriff | 6:5f76dd718dc3 | 222 | int count_down_0[18][18] = { |
HenryWTriff | 6:5f76dd718dc3 | 223 | {4,4,4,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 224 | {4,4,0,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 225 | {4,0,1,1,1,1,1,0,4,4,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 226 | {0,1,1,1,0,0,0,4,4,4,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 227 | {0,1,1,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 228 | {0,1,1,0,0,1,1,1,1,0,4,4,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 229 | {0,1,1,0,0,1,1,1,1,0,4,0,0,0,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 230 | {0,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 231 | {0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 232 | {4,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 233 | {4,4,0,1,1,1,1,0,0,1,1,0,0,0,0,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 234 | {4,4,4,0,0,0,0,4,0,1,1,0,0,0,0,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 235 | {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 236 | {4,4,4,4,4,4,4,4,0,1,1,0,0,0,0,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 237 | {4,4,4,4,4,4,4,4,0,1,1,1,0,0,1,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 238 | {4,4,4,4,4,4,4,4,4,0,1,1,1,1,1,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 239 | {4,4,4,4,4,4,4,4,4,4,0,1,1,1,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 240 | {4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 241 | }; |
HenryWTriff | 6:5f76dd718dc3 | 242 | |
HenryWTriff | 6:5f76dd718dc3 | 243 | int cup[16][16] = { |
HenryWTriff | 6:5f76dd718dc3 | 244 | {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 245 | {4,0,0,0,0,1,1,1,1,1,1,0,0,0,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 246 | {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 247 | {0,1,0,0,0,1,1,0,1,1,1,0,0,0,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 248 | {0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0}, |
HenryWTriff | 6:5f76dd718dc3 | 249 | {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 250 | {4,0,1,0,0,1,1,0,0,1,1,0,0,1,0,4}, |
HenryWTriff | 6:5f76dd718dc3 | 251 | {4,4,0,1,0,1,1,0,0,1,1,0,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 252 | {4,4,0,1,0,1,1,1,0,1,1,0,1,0,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 253 | {4,4,4,0,1,1,1,1,1,1,1,1,0,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 254 | {4,4,4,4,0,0,1,1,1,1,0,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 255 | {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 256 | {4,4,4,4,4,4,0,1,1,0,4,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 257 | {4,4,4,4,4,0,1,1,1,1,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 258 | {4,4,4,4,0,1,1,1,1,1,1,0,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 259 | {4,4,4,4,4,0,0,0,0,0,0,4,4,4,4,4}, |
HenryWTriff | 6:5f76dd718dc3 | 260 | }; |
HenryWTriff | 6:5f76dd718dc3 | 261 | |
HenryWTriff | 2:d08b6a1eaf2b | 262 | //************************** |
HenryWTriff | 2:d08b6a1eaf2b | 263 | // MAIN GRAPHICS FUNCTION |
HenryWTriff | 2:d08b6a1eaf2b | 264 | //************************** |
HenryWTriff | 10:29126a41b1da | 265 | // This is the main function for the graphics. It is a LARGE function but it reduces the clutter in the main function. |
HenryWTriff | 10:29126a41b1da | 266 | // It is a LARGE function but it reduces the clutter in the main function. |
HenryWTriff | 10:29126a41b1da | 267 | // This is run once every frame |
HenryWTriff | 2:d08b6a1eaf2b | 268 | |
HenryWTriff | 7:2ce6e90f6d47 | 269 | void Graphics::Draw_Map(Point_2D translation, int angle, float squish, Line_2D *Track_Lines, Line_2D *Track_Dotted_Lines, Line_2D *Track_Walls, Point_2D *Track_Flags, Triangle_2D *Track_Boost_Plates, Map_Data map_info, int car_type, Point_2D ghost_position, N5110 &LCD) |
HenryWTriff | 2:d08b6a1eaf2b | 270 | { |
HenryWTriff | 10:29126a41b1da | 271 | //Variable declaration |
HenryWTriff | 7:2ce6e90f6d47 | 272 | enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid}; |
HenryWTriff | 3:ceed6d026b8b | 273 | Line_2D Track_Lines_Transformed[map_info.number_of_track_lines]; |
HenryWTriff | 3:ceed6d026b8b | 274 | Line_2D Track_Dotted_Lines_Transformed[map_info.number_of_dotted_lines]; |
HenryWTriff | 3:ceed6d026b8b | 275 | Point_2D Transformed_Flags[map_info.number_of_flags]; |
HenryWTriff | 5:2d9f3c36bcb9 | 276 | Line_2D Transformed_Walls[map_info.number_of_walls]; |
HenryWTriff | 6:5f76dd718dc3 | 277 | Point_2D Transformed_Ghost; |
HenryWTriff | 17:4c5f25d5c4d5 | 278 | |
HenryWTriff | 10:29126a41b1da | 279 | //Transforms the points of the track lines |
HenryWTriff | 10:29126a41b1da | 280 | for(int i = 0; i < map_info.number_of_track_lines; i++) { //Iterates through the given track array |
HenryWTriff | 2:d08b6a1eaf2b | 281 | Track_Lines_Transformed[i] = Track_Lines[i]; |
HenryWTriff | 2:d08b6a1eaf2b | 282 | //Translation |
HenryWTriff | 2:d08b6a1eaf2b | 283 | Track_Lines_Transformed[i].from = Translate_Point(Track_Lines_Transformed[i].from, Round(translation.x), Round(translation.y)); |
HenryWTriff | 2:d08b6a1eaf2b | 284 | Track_Lines_Transformed[i].to = Translate_Point(Track_Lines_Transformed[i].to, Round(translation.x), Round(translation.y)); |
HenryWTriff | 2:d08b6a1eaf2b | 285 | //Rotation |
HenryWTriff | 2:d08b6a1eaf2b | 286 | Track_Lines_Transformed[i].from = Rotate_Point(Track_Lines_Transformed[i].from, angle); |
HenryWTriff | 2:d08b6a1eaf2b | 287 | Track_Lines_Transformed[i].to = Rotate_Point(Track_Lines_Transformed[i].to, angle); |
HenryWTriff | 2:d08b6a1eaf2b | 288 | //Squish |
HenryWTriff | 2:d08b6a1eaf2b | 289 | Track_Lines_Transformed[i].from = Squish_Point(Track_Lines_Transformed[i].from, squish); |
HenryWTriff | 2:d08b6a1eaf2b | 290 | Track_Lines_Transformed[i].to = Squish_Point(Track_Lines_Transformed[i].to, squish); |
HenryWTriff | 2:d08b6a1eaf2b | 291 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 292 | |
HenryWTriff | 10:29126a41b1da | 293 | //Transforms the points of the dotted lines on the track |
HenryWTriff | 10:29126a41b1da | 294 | for(int i = 0; i < map_info.number_of_dotted_lines; i++) { //Iterates through the given dotted lines array |
HenryWTriff | 3:ceed6d026b8b | 295 | Track_Dotted_Lines_Transformed[i] = Track_Dotted_Lines[i]; |
HenryWTriff | 3:ceed6d026b8b | 296 | //Translation |
HenryWTriff | 3:ceed6d026b8b | 297 | Track_Dotted_Lines_Transformed[i].from = Translate_Point(Track_Dotted_Lines_Transformed[i].from, Round(translation.x), Round(translation.y)); |
HenryWTriff | 3:ceed6d026b8b | 298 | Track_Dotted_Lines_Transformed[i].to = Translate_Point(Track_Dotted_Lines_Transformed[i].to, Round(translation.x), Round(translation.y)); |
HenryWTriff | 3:ceed6d026b8b | 299 | //Rotation |
HenryWTriff | 3:ceed6d026b8b | 300 | Track_Dotted_Lines_Transformed[i].from = Rotate_Point(Track_Dotted_Lines_Transformed[i].from, angle); |
HenryWTriff | 3:ceed6d026b8b | 301 | Track_Dotted_Lines_Transformed[i].to = Rotate_Point(Track_Dotted_Lines_Transformed[i].to, angle); |
HenryWTriff | 3:ceed6d026b8b | 302 | //Squish |
HenryWTriff | 3:ceed6d026b8b | 303 | Track_Dotted_Lines_Transformed[i].from = Squish_Point(Track_Dotted_Lines_Transformed[i].from, squish); |
HenryWTriff | 3:ceed6d026b8b | 304 | Track_Dotted_Lines_Transformed[i].to = Squish_Point(Track_Dotted_Lines_Transformed[i].to, squish); |
HenryWTriff | 3:ceed6d026b8b | 305 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 306 | |
HenryWTriff | 10:29126a41b1da | 307 | //Transforms the points of the start flags |
HenryWTriff | 10:29126a41b1da | 308 | for(int i = 0; i < map_info.number_of_flags; i++) { //Iterates through the given flags array |
HenryWTriff | 3:ceed6d026b8b | 309 | Transformed_Flags[i] = Track_Flags[i]; |
HenryWTriff | 3:ceed6d026b8b | 310 | //Translation |
HenryWTriff | 3:ceed6d026b8b | 311 | Transformed_Flags[i] = Translate_Point(Transformed_Flags[i], Round(translation.x), Round(translation.y)); |
HenryWTriff | 3:ceed6d026b8b | 312 | //Rotation |
HenryWTriff | 3:ceed6d026b8b | 313 | Transformed_Flags[i] = Rotate_Point(Transformed_Flags[i], angle); |
HenryWTriff | 3:ceed6d026b8b | 314 | //Squish |
HenryWTriff | 3:ceed6d026b8b | 315 | Transformed_Flags[i] = Squish_Point(Transformed_Flags[i], squish); |
HenryWTriff | 3:ceed6d026b8b | 316 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 317 | |
HenryWTriff | 10:29126a41b1da | 318 | //Transforms the points of the walls |
HenryWTriff | 10:29126a41b1da | 319 | for(int i = 0; i < map_info.number_of_walls; i++) { //Iterates throught the given walls array |
HenryWTriff | 5:2d9f3c36bcb9 | 320 | Transformed_Walls[i] = Track_Walls[i]; |
HenryWTriff | 5:2d9f3c36bcb9 | 321 | //Translation |
HenryWTriff | 5:2d9f3c36bcb9 | 322 | Transformed_Walls[i].from = Translate_Point(Transformed_Walls[i].from, Round(translation.x), Round(translation.y)); |
HenryWTriff | 5:2d9f3c36bcb9 | 323 | Transformed_Walls[i].to = Translate_Point(Transformed_Walls[i].to, Round(translation.x), Round(translation.y)); |
HenryWTriff | 5:2d9f3c36bcb9 | 324 | //Rotation |
HenryWTriff | 5:2d9f3c36bcb9 | 325 | Transformed_Walls[i].from = Rotate_Point(Transformed_Walls[i].from, angle); |
HenryWTriff | 5:2d9f3c36bcb9 | 326 | Transformed_Walls[i].to = Rotate_Point(Transformed_Walls[i].to, angle); |
HenryWTriff | 5:2d9f3c36bcb9 | 327 | //Squish |
HenryWTriff | 5:2d9f3c36bcb9 | 328 | Transformed_Walls[i].from = Squish_Point(Transformed_Walls[i].from, squish); |
HenryWTriff | 5:2d9f3c36bcb9 | 329 | Transformed_Walls[i].to = Squish_Point(Transformed_Walls[i].to, squish); |
HenryWTriff | 5:2d9f3c36bcb9 | 330 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 331 | |
HenryWTriff | 10:29126a41b1da | 332 | //Transforms the points of the ghost position |
HenryWTriff | 6:5f76dd718dc3 | 333 | Transformed_Ghost = ghost_position; |
HenryWTriff | 6:5f76dd718dc3 | 334 | //Translation |
HenryWTriff | 6:5f76dd718dc3 | 335 | Transformed_Ghost = Translate_Point(Transformed_Ghost, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 336 | //Rotation |
HenryWTriff | 6:5f76dd718dc3 | 337 | Transformed_Ghost = Rotate_Point(Transformed_Ghost, angle); |
HenryWTriff | 6:5f76dd718dc3 | 338 | //Squish |
HenryWTriff | 6:5f76dd718dc3 | 339 | Transformed_Ghost = Squish_Point(Transformed_Ghost, squish); |
HenryWTriff | 9:7b1093d3f03a | 340 | Transformed_Ghost.x = Transformed_Ghost.x + 4; |
HenryWTriff | 17:4c5f25d5c4d5 | 341 | |
HenryWTriff | 10:29126a41b1da | 342 | //Draws the track lines |
HenryWTriff | 10:29126a41b1da | 343 | for(int i = 0; i < map_info.number_of_track_lines; i++) { //Iterates through each line |
HenryWTriff | 2:d08b6a1eaf2b | 344 | Graphics_Draw_Line(Track_Lines_Transformed[i].from, Track_Lines_Transformed[i].to, true, LCD); |
HenryWTriff | 2:d08b6a1eaf2b | 345 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 346 | |
HenryWTriff | 10:29126a41b1da | 347 | //Draws the dotted lines |
HenryWTriff | 10:29126a41b1da | 348 | for(int i = 0; i < map_info.number_of_dotted_lines; i++) { //Iterates through each line |
HenryWTriff | 3:ceed6d026b8b | 349 | Graphics_Draw_Line(Track_Dotted_Lines_Transformed[i].from, Track_Dotted_Lines_Transformed[i].to,false, LCD); |
HenryWTriff | 3:ceed6d026b8b | 350 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 351 | |
HenryWTriff | 10:29126a41b1da | 352 | //Draws the boost plates |
HenryWTriff | 10:29126a41b1da | 353 | for(int i = 0; i < map_info.number_of_boost_plates; i++) { //Iterates through each plate |
HenryWTriff | 6:5f76dd718dc3 | 354 | Graphics_Draw_Boost_Plate(Track_Boost_Plates[i], translation, angle, squish, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 355 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 356 | |
HenryWTriff | 10:29126a41b1da | 357 | //Draws the flags |
HenryWTriff | 10:29126a41b1da | 358 | for(int i = 0; i < map_info.number_of_flags; i++) { //Iterates through each flag |
HenryWTriff | 3:ceed6d026b8b | 359 | Graphics_Draw_Sprite(Transformed_Flags[i], 8, 8, (int *)flag, LCD); |
HenryWTriff | 3:ceed6d026b8b | 360 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 361 | |
HenryWTriff | 10:29126a41b1da | 362 | //Draws the ghost |
HenryWTriff | 17:4c5f25d5c4d5 | 363 | Graphics_Draw_Sprite(Transformed_Ghost, 8, 8, (int *)ghost, LCD); |
HenryWTriff | 17:4c5f25d5c4d5 | 364 | |
HenryWTriff | 10:29126a41b1da | 365 | //Draws the walls |
HenryWTriff | 5:2d9f3c36bcb9 | 366 | for(int i = 0; i < map_info.number_of_walls; i++) { |
HenryWTriff | 5:2d9f3c36bcb9 | 367 | Graphics_Draw_Wall(Transformed_Walls[i].from, Transformed_Walls[i].to,4, LCD); |
HenryWTriff | 5:2d9f3c36bcb9 | 368 | } |
HenryWTriff | 17:4c5f25d5c4d5 | 369 | |
HenryWTriff | 10:29126a41b1da | 370 | //Draws the players car |
HenryWTriff | 4:9f41fc1c2ad1 | 371 | Point_2D car_position = {4,0}; |
HenryWTriff | 7:2ce6e90f6d47 | 372 | if(car_type == Stupid) { |
HenryWTriff | 7:2ce6e90f6d47 | 373 | Graphics_Draw_Sprite(car_position,8,8,(int *)stupid_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 374 | } else if(car_type == Racecar) { |
HenryWTriff | 7:2ce6e90f6d47 | 375 | Graphics_Draw_Sprite(car_position,8,8,(int *)race_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 376 | } else if(car_type == Sportscar) { |
HenryWTriff | 7:2ce6e90f6d47 | 377 | Graphics_Draw_Sprite(car_position,8,8,(int *)sports_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 378 | } else if(car_type == Drifter) { |
HenryWTriff | 7:2ce6e90f6d47 | 379 | Graphics_Draw_Sprite(car_position,8,8,(int *)drifter_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 380 | } else if(car_type == Offroad) { |
HenryWTriff | 7:2ce6e90f6d47 | 381 | Graphics_Draw_Sprite(car_position,8,8,(int *)offroad_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 382 | } else { |
HenryWTriff | 7:2ce6e90f6d47 | 383 | Graphics_Draw_Sprite(car_position,8,8,(int *)basic_car, LCD); |
HenryWTriff | 7:2ce6e90f6d47 | 384 | } |
HenryWTriff | 2:d08b6a1eaf2b | 385 | } |
HenryWTriff | 2:d08b6a1eaf2b | 386 | |
HenryWTriff | 10:29126a41b1da | 387 | //************** |
HenryWTriff | 10:29126a41b1da | 388 | // START LOGO |
HenryWTriff | 10:29126a41b1da | 389 | //************** |
HenryWTriff | 10:29126a41b1da | 390 | |
HenryWTriff | 10:29126a41b1da | 391 | void Graphics::Draw_Logo(N5110 &LCD) //Draw the game logo |
HenryWTriff | 10:29126a41b1da | 392 | { |
HenryWTriff | 10:29126a41b1da | 393 | LCD.clear(); |
HenryWTriff | 10:29126a41b1da | 394 | LCD.drawSprite(0,0,48,84,(int *)logo); |
HenryWTriff | 10:29126a41b1da | 395 | LCD.refresh(); |
HenryWTriff | 10:29126a41b1da | 396 | wait(1); |
HenryWTriff | 10:29126a41b1da | 397 | } |
HenryWTriff | 10:29126a41b1da | 398 | |
HenryWTriff | 2:d08b6a1eaf2b | 399 | //******************* |
HenryWTriff | 2:d08b6a1eaf2b | 400 | // SCREEN SETTINGS |
HenryWTriff | 2:d08b6a1eaf2b | 401 | //******************* |
HenryWTriff | 2:d08b6a1eaf2b | 402 | |
HenryWTriff | 10:29126a41b1da | 403 | void Graphics::Change_Contrast(N5110 &LCD, Gamepad &Device) //Sets the contrast with a greater level of precision |
HenryWTriff | 2:d08b6a1eaf2b | 404 | { |
HenryWTriff | 2:d08b6a1eaf2b | 405 | LCD.setContrast((0.35 + 0.2 * Device.read_pot1())); |
HenryWTriff | 2:d08b6a1eaf2b | 406 | } |
HenryWTriff | 2:d08b6a1eaf2b | 407 | |
HenryWTriff | 6:5f76dd718dc3 | 408 | //**************** |
HenryWTriff | 6:5f76dd718dc3 | 409 | // START SCREEN |
HenryWTriff | 6:5f76dd718dc3 | 410 | //**************** |
HenryWTriff | 6:5f76dd718dc3 | 411 | |
HenryWTriff | 10:29126a41b1da | 412 | void Graphics::Start_Sequence(int state, N5110 &LCD) //Display the countdown numbers before the race starts |
HenryWTriff | 6:5f76dd718dc3 | 413 | { |
HenryWTriff | 6:5f76dd718dc3 | 414 | Point_2D count_down_position = {8,8}; |
HenryWTriff | 6:5f76dd718dc3 | 415 | if(state == 3) { |
HenryWTriff | 6:5f76dd718dc3 | 416 | Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_3, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 417 | } else if(state == 2) { |
HenryWTriff | 6:5f76dd718dc3 | 418 | Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_2, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 419 | } else if(state == 1) { |
HenryWTriff | 6:5f76dd718dc3 | 420 | Graphics_Draw_Sprite(count_down_position, 17, 17, (int *) count_down_1, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 421 | } else if(state == 0) { |
HenryWTriff | 6:5f76dd718dc3 | 422 | Graphics_Draw_Sprite(count_down_position, 18, 18, (int *) count_down_0, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 423 | } |
HenryWTriff | 6:5f76dd718dc3 | 424 | |
HenryWTriff | 6:5f76dd718dc3 | 425 | } |
HenryWTriff | 6:5f76dd718dc3 | 426 | |
HenryWTriff | 10:29126a41b1da | 427 | void Graphics::Finish(N5110 &LCD) //When the race is over draw the cup symbol |
HenryWTriff | 6:5f76dd718dc3 | 428 | { |
HenryWTriff | 6:5f76dd718dc3 | 429 | Point_2D finish_position = {8,8}; |
HenryWTriff | 6:5f76dd718dc3 | 430 | Graphics_Draw_Sprite(finish_position, 16, 16, (int *) cup, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 431 | } |
HenryWTriff | 6:5f76dd718dc3 | 432 | |
HenryWTriff | 5:2d9f3c36bcb9 | 433 | //******************** |
HenryWTriff | 5:2d9f3c36bcb9 | 434 | // DRAW LAP COUNTER |
HenryWTriff | 5:2d9f3c36bcb9 | 435 | //******************** |
HenryWTriff | 5:2d9f3c36bcb9 | 436 | |
HenryWTriff | 10:29126a41b1da | 437 | void Graphics::Draw_Laps(int laps, N5110 &LCD) //Prints the lab counter in the bottom left corner |
HenryWTriff | 5:2d9f3c36bcb9 | 438 | { |
HenryWTriff | 5:2d9f3c36bcb9 | 439 | if(laps == 1) { |
HenryWTriff | 5:2d9f3c36bcb9 | 440 | LCD.printString("1",0,5); |
HenryWTriff | 5:2d9f3c36bcb9 | 441 | } else if (laps == 2) { |
HenryWTriff | 5:2d9f3c36bcb9 | 442 | LCD.printString("2",0,5); |
HenryWTriff | 5:2d9f3c36bcb9 | 443 | } else if (laps == 3) { |
HenryWTriff | 5:2d9f3c36bcb9 | 444 | LCD.printString("3",0,5); |
HenryWTriff | 5:2d9f3c36bcb9 | 445 | } else if (laps == 4) { |
HenryWTriff | 5:2d9f3c36bcb9 | 446 | LCD.printString("4",0,5); |
HenryWTriff | 5:2d9f3c36bcb9 | 447 | } else if (laps == 5) { |
HenryWTriff | 5:2d9f3c36bcb9 | 448 | LCD.printString("5",0,5); |
HenryWTriff | 5:2d9f3c36bcb9 | 449 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 450 | } |
HenryWTriff | 2:d08b6a1eaf2b | 451 | |
HenryWTriff | 10:29126a41b1da | 452 | void Graphics::Draw_Time(bool finished, Time time, N5110 &LCD) //Displays the lap time |
HenryWTriff | 6:5f76dd718dc3 | 453 | { |
HenryWTriff | 10:29126a41b1da | 454 | if(finished == false) { //If the race is over, Print the time in the middle of the screen |
HenryWTriff | 6:5f76dd718dc3 | 455 | char min[1]; |
HenryWTriff | 10:29126a41b1da | 456 | sprintf(min, "%i", time.mins); //Converts min integer to char |
HenryWTriff | 10:29126a41b1da | 457 | LCD.printString(min,47,5); //Prints the min char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 458 | |
HenryWTriff | 6:5f76dd718dc3 | 459 | LCD.printString(":",52,5); |
HenryWTriff | 6:5f76dd718dc3 | 460 | |
HenryWTriff | 10:29126a41b1da | 461 | if(time.secs < 10) { //If the number of seconds is less than 10 |
HenryWTriff | 10:29126a41b1da | 462 | LCD.printString("0",57,5); //Draw a 0 |
HenryWTriff | 6:5f76dd718dc3 | 463 | char sec[1]; |
HenryWTriff | 10:29126a41b1da | 464 | sprintf(sec, "%i", time.secs); //Converts sec integer to char |
HenryWTriff | 10:29126a41b1da | 465 | LCD.printString(sec,63,5); //Prints the sec char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 466 | } else { |
HenryWTriff | 6:5f76dd718dc3 | 467 | char sec[2]; |
HenryWTriff | 10:29126a41b1da | 468 | sprintf(sec, "%i", time.secs); //Converts sec integer to char |
HenryWTriff | 10:29126a41b1da | 469 | LCD.printString(sec,57,5); //Prints the sec char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 470 | } |
HenryWTriff | 6:5f76dd718dc3 | 471 | |
HenryWTriff | 6:5f76dd718dc3 | 472 | LCD.printString(".",68,5); |
HenryWTriff | 6:5f76dd718dc3 | 473 | |
HenryWTriff | 6:5f76dd718dc3 | 474 | char mili[2]; |
HenryWTriff | 10:29126a41b1da | 475 | sprintf(mili, "%i", time.milis); //Convers mili integer to char |
HenryWTriff | 10:29126a41b1da | 476 | LCD.printString(mili,73,5); //Prints the mili char on the screen |
HenryWTriff | 10:29126a41b1da | 477 | } else { //If the race is still ongoing |
HenryWTriff | 6:5f76dd718dc3 | 478 | char min[1]; |
HenryWTriff | 10:29126a41b1da | 479 | sprintf(min, "%i", time.mins); //Convers min integer to char |
HenryWTriff | 10:29126a41b1da | 480 | LCD.printString(min,23,0); //Prints the min char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 481 | |
HenryWTriff | 6:5f76dd718dc3 | 482 | LCD.printString(":",28,0); |
HenryWTriff | 6:5f76dd718dc3 | 483 | |
HenryWTriff | 10:29126a41b1da | 484 | if(time.secs < 10) { //If the number of seconds is less than 10 |
HenryWTriff | 10:29126a41b1da | 485 | LCD.printString("0",33,0); //Draw a 0 |
HenryWTriff | 6:5f76dd718dc3 | 486 | char sec[1]; |
HenryWTriff | 10:29126a41b1da | 487 | sprintf(sec, "%i", time.secs); //Convers sec integer to char |
HenryWTriff | 10:29126a41b1da | 488 | LCD.printString(sec,39,0); //Prints the sec char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 489 | } else { |
HenryWTriff | 6:5f76dd718dc3 | 490 | char sec[2]; |
HenryWTriff | 10:29126a41b1da | 491 | sprintf(sec, "%i", time.secs); //Convers sec integer to char |
HenryWTriff | 10:29126a41b1da | 492 | LCD.printString(sec,33,0); //Prints the sec char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 493 | } |
HenryWTriff | 6:5f76dd718dc3 | 494 | |
HenryWTriff | 6:5f76dd718dc3 | 495 | LCD.printString(".",44,0); |
HenryWTriff | 6:5f76dd718dc3 | 496 | |
HenryWTriff | 6:5f76dd718dc3 | 497 | char mili[2]; |
HenryWTriff | 10:29126a41b1da | 498 | sprintf(mili, "%i", time.milis); //Convers mili integer to char |
HenryWTriff | 10:29126a41b1da | 499 | LCD.printString(mili,49,0); //Prints the mili char on the screen |
HenryWTriff | 6:5f76dd718dc3 | 500 | } |
HenryWTriff | 6:5f76dd718dc3 | 501 | } |
HenryWTriff | 6:5f76dd718dc3 | 502 | |
HenryWTriff | 2:d08b6a1eaf2b | 503 | //************** |
HenryWTriff | 2:d08b6a1eaf2b | 504 | // TRANSFORM |
HenryWTriff | 2:d08b6a1eaf2b | 505 | //************** |
HenryWTriff | 2:d08b6a1eaf2b | 506 | |
HenryWTriff | 2:d08b6a1eaf2b | 507 | //ROTATE |
HenryWTriff | 10:29126a41b1da | 508 | Point_2D Graphics::Rotate_Point(Point_2D point, float angle) //Rotates all points around the origin |
HenryWTriff | 2:d08b6a1eaf2b | 509 | { |
HenryWTriff | 10:29126a41b1da | 510 | angle = (angle * PI)/180; //The angle given in degrees is changed into radian form |
HenryWTriff | 10:29126a41b1da | 511 | float x_rotated = point.x * cos(angle) - point.y * sin(angle); //X-points are rotated about the origin |
HenryWTriff | 10:29126a41b1da | 512 | float y_rotated = point.y * cos(angle) + point.x * sin(angle); //Y-points are rotated about the origin |
HenryWTriff | 2:d08b6a1eaf2b | 513 | return {x_rotated, y_rotated}; |
HenryWTriff | 2:d08b6a1eaf2b | 514 | } |
HenryWTriff | 2:d08b6a1eaf2b | 515 | //TRANSLATE |
HenryWTriff | 10:29126a41b1da | 516 | Point_2D Graphics::Translate_Point(Point_2D point, int translate_x, int translate_y) //Translates all point by a given translationg |
HenryWTriff | 2:d08b6a1eaf2b | 517 | { |
HenryWTriff | 10:29126a41b1da | 518 | float x_translated = point.x - translate_x; //Translates the x-points |
HenryWTriff | 10:29126a41b1da | 519 | float y_translated = point.y - translate_y; //Translates the y-points |
HenryWTriff | 2:d08b6a1eaf2b | 520 | return {x_translated, y_translated}; |
HenryWTriff | 2:d08b6a1eaf2b | 521 | } |
HenryWTriff | 2:d08b6a1eaf2b | 522 | //SQUISH |
HenryWTriff | 10:29126a41b1da | 523 | //To get the 3D perspective, the y-coordinate is reduced by a factor |
HenryWTriff | 10:29126a41b1da | 524 | Point_2D Graphics::Squish_Point(Point_2D point, float squish) //Squishes all y-coordinates by a factor |
HenryWTriff | 2:d08b6a1eaf2b | 525 | { |
HenryWTriff | 10:29126a41b1da | 526 | float x_squish = point.x; //The x-coordinate remains the same |
HenryWTriff | 10:29126a41b1da | 527 | float y_squish = point.y * squish; //The y-coordinate is reduced |
HenryWTriff | 2:d08b6a1eaf2b | 528 | return {x_squish, y_squish}; |
HenryWTriff | 2:d08b6a1eaf2b | 529 | } |
HenryWTriff | 2:d08b6a1eaf2b | 530 | |
HenryWTriff | 2:d08b6a1eaf2b | 531 | //******** |
HenryWTriff | 2:d08b6a1eaf2b | 532 | // MATH |
HenryWTriff | 2:d08b6a1eaf2b | 533 | //******** |
HenryWTriff | 2:d08b6a1eaf2b | 534 | |
HenryWTriff | 10:29126a41b1da | 535 | int Graphics::Round(float number) //Simple function that rounds floating point numbers |
HenryWTriff | 2:d08b6a1eaf2b | 536 | { |
HenryWTriff | 10:29126a41b1da | 537 | int number_int = (number * 10); //The number is multiplied by 10 |
HenryWTriff | 10:29126a41b1da | 538 | int remainder = number_int % 10; //The remainder when dividing by 10 is calculated |
HenryWTriff | 10:29126a41b1da | 539 | if(remainder < 5) { //If the number is less than 5 |
HenryWTriff | 10:29126a41b1da | 540 | return ((number_int - remainder) / 10); //Round down |
HenryWTriff | 2:d08b6a1eaf2b | 541 | } else { |
HenryWTriff | 10:29126a41b1da | 542 | return ((number_int + (10 - remainder)) / 10); //Round up |
HenryWTriff | 2:d08b6a1eaf2b | 543 | } |
HenryWTriff | 2:d08b6a1eaf2b | 544 | } |
HenryWTriff | 2:d08b6a1eaf2b | 545 | |
HenryWTriff | 10:29126a41b1da | 546 | float Graphics::Gradient(Point_2D from, Point_2D to) //Calculates the gradient of the line between two points |
HenryWTriff | 2:d08b6a1eaf2b | 547 | { |
HenryWTriff | 10:29126a41b1da | 548 | float change_in_y = to.y - from.y; //Calculates the change in the y-values of the two points |
HenryWTriff | 10:29126a41b1da | 549 | float change_in_x = to.x - from.x; //Calculates the change in the x-values of the two points |
HenryWTriff | 10:29126a41b1da | 550 | float gradient = change_in_y / change_in_x; //Calculates the gradient by doing dy/dx |
HenryWTriff | 10:29126a41b1da | 551 | if(gradient < 0.001 && gradient > -0.001) { //If the gradient is aproximately 0 |
HenryWTriff | 10:29126a41b1da | 552 | return 0; //Return zero |
HenryWTriff | 2:d08b6a1eaf2b | 553 | } else { |
HenryWTriff | 10:29126a41b1da | 554 | return gradient; //Else return the gradient |
HenryWTriff | 2:d08b6a1eaf2b | 555 | } |
HenryWTriff | 2:d08b6a1eaf2b | 556 | } |
HenryWTriff | 2:d08b6a1eaf2b | 557 | |
HenryWTriff | 10:29126a41b1da | 558 | bool Graphics::Gradient_Check_Infinate(Point_2D from, Point_2D to) //Checks to see if the gradient is vertical |
HenryWTriff | 2:d08b6a1eaf2b | 559 | { |
HenryWTriff | 10:29126a41b1da | 560 | float change_in_x = to.x - from.x; //Calculates the change in the x-value |
HenryWTriff | 10:29126a41b1da | 561 | if(change_in_x < 0.001 && change_in_x > -0.001) { //If the change in x value is very small |
HenryWTriff | 2:d08b6a1eaf2b | 562 | return true; |
HenryWTriff | 2:d08b6a1eaf2b | 563 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 564 | return false; |
HenryWTriff | 2:d08b6a1eaf2b | 565 | } |
HenryWTriff | 2:d08b6a1eaf2b | 566 | } |
HenryWTriff | 2:d08b6a1eaf2b | 567 | |
HenryWTriff | 3:ceed6d026b8b | 568 | //************* |
HenryWTriff | 3:ceed6d026b8b | 569 | // DRAW LINE |
HenryWTriff | 3:ceed6d026b8b | 570 | //************* |
HenryWTriff | 2:d08b6a1eaf2b | 571 | |
HenryWTriff | 2:d08b6a1eaf2b | 572 | void Graphics::Graphics_Draw_Line(Point_2D from, Point_2D to, bool solid, N5110 &LCD) //Draw a line between two points on only the portion of the screen |
HenryWTriff | 2:d08b6a1eaf2b | 573 | { |
HenryWTriff | 2:d08b6a1eaf2b | 574 | |
HenryWTriff | 2:d08b6a1eaf2b | 575 | if( Gradient_Check_Infinate(from, to) == false ) { //Checking to see if the line is vertical |
HenryWTriff | 10:29126a41b1da | 576 | //Initialising variables |
HenryWTriff | 2:d08b6a1eaf2b | 577 | Point_2D plot_x_from = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 578 | Point_2D plot_x_to = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 579 | Point_2D plot_y_from = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 580 | Point_2D plot_y_to = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 581 | |
HenryWTriff | 2:d08b6a1eaf2b | 582 | float gradient = Gradient(from, to); // Calculating the gradient |
HenryWTriff | 2:d08b6a1eaf2b | 583 | float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c |
HenryWTriff | 2:d08b6a1eaf2b | 584 | float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d |
HenryWTriff | 2:d08b6a1eaf2b | 585 | |
HenryWTriff | 2:d08b6a1eaf2b | 586 | if(gradient <= 1 && gradient >= -1) { |
HenryWTriff | 10:29126a41b1da | 587 | //Reordering 'from' and 'to' so that the for loops below can use ++ |
HenryWTriff | 2:d08b6a1eaf2b | 588 | if(to.x < from.x) { |
HenryWTriff | 2:d08b6a1eaf2b | 589 | plot_x_from = to; |
HenryWTriff | 2:d08b6a1eaf2b | 590 | plot_x_to = from; |
HenryWTriff | 2:d08b6a1eaf2b | 591 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 592 | plot_x_from = from; |
HenryWTriff | 2:d08b6a1eaf2b | 593 | plot_x_to = to; |
HenryWTriff | 2:d08b6a1eaf2b | 594 | } |
HenryWTriff | 10:29126a41b1da | 595 | if(solid == true) { //If the line is solid or dotted |
HenryWTriff | 2:d08b6a1eaf2b | 596 | for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points |
HenryWTriff | 2:d08b6a1eaf2b | 597 | int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point |
HenryWTriff | 2:d08b6a1eaf2b | 598 | Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 599 | if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 2:d08b6a1eaf2b | 600 | LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 601 | } |
HenryWTriff | 2:d08b6a1eaf2b | 602 | } |
HenryWTriff | 2:d08b6a1eaf2b | 603 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 604 | for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x+=2) { //Iterating through the x points |
HenryWTriff | 2:d08b6a1eaf2b | 605 | int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point |
HenryWTriff | 2:d08b6a1eaf2b | 606 | Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 607 | if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 2:d08b6a1eaf2b | 608 | LCD.setPixel(plot_x.x, plot_x.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 609 | } |
HenryWTriff | 2:d08b6a1eaf2b | 610 | } |
HenryWTriff | 2:d08b6a1eaf2b | 611 | } |
HenryWTriff | 2:d08b6a1eaf2b | 612 | } else { |
HenryWTriff | 10:29126a41b1da | 613 | //Reordering 'from' and 'to' so that the for loops below can use ++ |
HenryWTriff | 2:d08b6a1eaf2b | 614 | if(to.y < from.y) { |
HenryWTriff | 2:d08b6a1eaf2b | 615 | plot_y_from = to; |
HenryWTriff | 2:d08b6a1eaf2b | 616 | plot_y_to = from; |
HenryWTriff | 2:d08b6a1eaf2b | 617 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 618 | plot_y_from = from; |
HenryWTriff | 2:d08b6a1eaf2b | 619 | plot_y_to = to; |
HenryWTriff | 2:d08b6a1eaf2b | 620 | } |
HenryWTriff | 10:29126a41b1da | 621 | if(solid == true) { //If the line is solid or dotted |
HenryWTriff | 2:d08b6a1eaf2b | 622 | for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points |
HenryWTriff | 2:d08b6a1eaf2b | 623 | int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point |
HenryWTriff | 2:d08b6a1eaf2b | 624 | Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 625 | if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 2:d08b6a1eaf2b | 626 | LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 627 | } |
HenryWTriff | 2:d08b6a1eaf2b | 628 | } |
HenryWTriff | 2:d08b6a1eaf2b | 629 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 630 | for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y+=2) { //Iterating through the Y points |
HenryWTriff | 2:d08b6a1eaf2b | 631 | int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point |
HenryWTriff | 2:d08b6a1eaf2b | 632 | Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 633 | if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 2:d08b6a1eaf2b | 634 | LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 635 | } |
HenryWTriff | 2:d08b6a1eaf2b | 636 | } |
HenryWTriff | 2:d08b6a1eaf2b | 637 | } |
HenryWTriff | 2:d08b6a1eaf2b | 638 | } |
HenryWTriff | 2:d08b6a1eaf2b | 639 | |
HenryWTriff | 2:d08b6a1eaf2b | 640 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 641 | Point_2D plot_y_from = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 642 | Point_2D plot_y_to = {0,0}; |
HenryWTriff | 2:d08b6a1eaf2b | 643 | //Reordering from and to so that the for loops below can use ++ |
HenryWTriff | 2:d08b6a1eaf2b | 644 | if(to.y < from.y) { |
HenryWTriff | 2:d08b6a1eaf2b | 645 | plot_y_from = to; |
HenryWTriff | 2:d08b6a1eaf2b | 646 | plot_y_to = from; |
HenryWTriff | 2:d08b6a1eaf2b | 647 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 648 | plot_y_from = from; |
HenryWTriff | 2:d08b6a1eaf2b | 649 | plot_y_to = to; |
HenryWTriff | 2:d08b6a1eaf2b | 650 | } |
HenryWTriff | 2:d08b6a1eaf2b | 651 | float x_intercept = from.x; //Calculating the x_intercept |
HenryWTriff | 10:29126a41b1da | 652 | if(solid == true) { //If the line is solid or dotted |
HenryWTriff | 2:d08b6a1eaf2b | 653 | for(int y = plot_y_from.y; y <= plot_y_to.y; y++) { |
HenryWTriff | 2:d08b6a1eaf2b | 654 | Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 2:d08b6a1eaf2b | 655 | LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 656 | } |
HenryWTriff | 2:d08b6a1eaf2b | 657 | } else { |
HenryWTriff | 2:d08b6a1eaf2b | 658 | for(int y = plot_y_from.y; y <= plot_y_to.y; y+=2) { |
HenryWTriff | 2:d08b6a1eaf2b | 659 | Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 2:d08b6a1eaf2b | 660 | LCD.setPixel(plot_y.x, plot_y.y, true); //Plotting the points |
HenryWTriff | 2:d08b6a1eaf2b | 661 | } |
HenryWTriff | 2:d08b6a1eaf2b | 662 | } |
HenryWTriff | 2:d08b6a1eaf2b | 663 | } |
HenryWTriff | 3:ceed6d026b8b | 664 | } |
HenryWTriff | 3:ceed6d026b8b | 665 | |
HenryWTriff | 3:ceed6d026b8b | 666 | //*************** |
HenryWTriff | 3:ceed6d026b8b | 667 | // DRAW SPRITE |
HenryWTriff | 3:ceed6d026b8b | 668 | //*************** |
HenryWTriff | 3:ceed6d026b8b | 669 | |
HenryWTriff | 10:29126a41b1da | 670 | void Graphics::Graphics_Draw_Sprite(Point_2D point, int x_size, int y_size, int *sprite, N5110 &LCD) //Similar to N5110 drawSprite function but mine uses the origin as poin 0,0 and allows for transparent pixels |
HenryWTriff | 3:ceed6d026b8b | 671 | { |
HenryWTriff | 3:ceed6d026b8b | 672 | Point_2D zeroed_point = {Round(point.x) + 42 - x_size, Round(-point.y) + 36 - y_size}; |
HenryWTriff | 10:29126a41b1da | 673 | if(zeroed_point.x <= 84 && zeroed_point.x >= 0 && zeroed_point.y <= 48 && zeroed_point.y >= 0) { //If the point is on the screen |
HenryWTriff | 10:29126a41b1da | 674 | for(int y = 0; y < y_size; y++) { //Iterates through y-points |
HenryWTriff | 10:29126a41b1da | 675 | for(int x = 0; x < x_size; x++) { //Iterates through x-points |
HenryWTriff | 10:29126a41b1da | 676 | if(*((sprite + y*y_size)+x) == 1) { //If the sprite has a 1 at that point then set that pixel to black |
HenryWTriff | 3:ceed6d026b8b | 677 | LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), true); |
HenryWTriff | 10:29126a41b1da | 678 | } else if(*((sprite + y*y_size)+x) == 0) { //If the sprite has a 0 at that point then set that pixel to white |
HenryWTriff | 3:ceed6d026b8b | 679 | LCD.setPixel((zeroed_point.x + x), (zeroed_point.y + y), false); |
HenryWTriff | 3:ceed6d026b8b | 680 | } |
HenryWTriff | 3:ceed6d026b8b | 681 | } |
HenryWTriff | 3:ceed6d026b8b | 682 | } |
HenryWTriff | 3:ceed6d026b8b | 683 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 684 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 685 | |
HenryWTriff | 5:2d9f3c36bcb9 | 686 | //*************** |
HenryWTriff | 5:2d9f3c36bcb9 | 687 | // DRAW WALL |
HenryWTriff | 5:2d9f3c36bcb9 | 688 | //*************** |
HenryWTriff | 5:2d9f3c36bcb9 | 689 | |
HenryWTriff | 5:2d9f3c36bcb9 | 690 | void Graphics::Graphics_Draw_Wall(Point_2D from, Point_2D to, int height, N5110 &LCD) //Draw a line between two points on only the portion of the screen |
HenryWTriff | 5:2d9f3c36bcb9 | 691 | { |
HenryWTriff | 5:2d9f3c36bcb9 | 692 | if(Gradient_Check_Infinate(from, to) == 0) { //Checking to see if the line is vertical |
HenryWTriff | 10:29126a41b1da | 693 | //Declaring points |
HenryWTriff | 5:2d9f3c36bcb9 | 694 | Point_2D plot_x_from = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 695 | Point_2D plot_x_to = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 696 | Point_2D plot_y_from = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 697 | Point_2D plot_y_to = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 698 | |
HenryWTriff | 5:2d9f3c36bcb9 | 699 | float gradient = Gradient(from, to); // Calculating the gradient |
HenryWTriff | 5:2d9f3c36bcb9 | 700 | float y_intercept = (from.y - gradient * from.x); // Calulating the y intercept y - mx = c |
HenryWTriff | 5:2d9f3c36bcb9 | 701 | float x_intercept = (from.x - from.y / gradient); // Calculating the x intercept x - y/m = d |
HenryWTriff | 5:2d9f3c36bcb9 | 702 | |
HenryWTriff | 5:2d9f3c36bcb9 | 703 | if(gradient <= 1 && gradient >= -1) { |
HenryWTriff | 10:29126a41b1da | 704 | //Reordering 'from' and 'to' so that the for loops below can use ++ |
HenryWTriff | 5:2d9f3c36bcb9 | 705 | if(to.x < from.x) { |
HenryWTriff | 5:2d9f3c36bcb9 | 706 | plot_x_from = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 707 | plot_x_to = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 708 | } else { |
HenryWTriff | 5:2d9f3c36bcb9 | 709 | plot_x_from = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 710 | plot_x_to = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 711 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 712 | for(int x = Round(plot_x_from.x); x <= Round(plot_x_to.x); x++) { //Iterating through the x points |
HenryWTriff | 5:2d9f3c36bcb9 | 713 | int y = -(Round((gradient * x) + y_intercept)); //Calculating the value of y for each x point |
HenryWTriff | 5:2d9f3c36bcb9 | 714 | Point_2D plot_x = {x+42, y+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 715 | if(plot_x.x <= 84 && plot_x.x >= 0 && plot_x.y <=48 && plot_x.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 10:29126a41b1da | 716 | for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height |
HenryWTriff | 10:29126a41b1da | 717 | LCD.setPixel(plot_x.x, plot_x.y - y_add, true); //Plotting the point |
HenryWTriff | 5:2d9f3c36bcb9 | 718 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 719 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 720 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 721 | } else { |
HenryWTriff | 10:29126a41b1da | 722 | //Reordering 'from' and 'to' so that the for loops can use ++ |
HenryWTriff | 5:2d9f3c36bcb9 | 723 | if(to.y < from.y) { |
HenryWTriff | 5:2d9f3c36bcb9 | 724 | plot_y_from = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 725 | plot_y_to = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 726 | } else { |
HenryWTriff | 5:2d9f3c36bcb9 | 727 | plot_y_from = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 728 | plot_y_to = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 729 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 730 | for(int y = Round(plot_y_from.y); y <= Round(plot_y_to.y); y++) { //Iterating through the Y points |
HenryWTriff | 5:2d9f3c36bcb9 | 731 | int x = Round((y / gradient) + x_intercept); //Calculating the value of x for every y point |
HenryWTriff | 5:2d9f3c36bcb9 | 732 | Point_2D plot_y = {x+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 733 | if(plot_y.x <= 84 && plot_y.x >= 0 && plot_y.y <=48 && plot_y.y >= 0) { //Checking to see if the point is on the screen |
HenryWTriff | 10:29126a41b1da | 734 | for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height |
HenryWTriff | 10:29126a41b1da | 735 | LCD.setPixel(plot_y.x, plot_y.y - y_add, true); //Plotting the point |
HenryWTriff | 5:2d9f3c36bcb9 | 736 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 737 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 738 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 739 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 740 | |
HenryWTriff | 5:2d9f3c36bcb9 | 741 | } else { |
HenryWTriff | 10:29126a41b1da | 742 | //Declaring and initialising points |
HenryWTriff | 5:2d9f3c36bcb9 | 743 | Point_2D plot_y_from = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 744 | Point_2D plot_y_to = {0,0}; |
HenryWTriff | 5:2d9f3c36bcb9 | 745 | //Reordering from and to so that the for loops below can use ++ |
HenryWTriff | 5:2d9f3c36bcb9 | 746 | if(to.y < from.y) { |
HenryWTriff | 5:2d9f3c36bcb9 | 747 | plot_y_from = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 748 | plot_y_to = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 749 | } else { |
HenryWTriff | 5:2d9f3c36bcb9 | 750 | plot_y_from = from; |
HenryWTriff | 5:2d9f3c36bcb9 | 751 | plot_y_to = to; |
HenryWTriff | 5:2d9f3c36bcb9 | 752 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 753 | float x_intercept = from.x; //Calculating the x_intercept |
HenryWTriff | 5:2d9f3c36bcb9 | 754 | for(int y = plot_y_from.y; y <= plot_y_to.y; y++) { |
HenryWTriff | 5:2d9f3c36bcb9 | 755 | Point_2D plot_y = {x_intercept+42, (-y)+36}; //Assigning them to a Plot_2D variable and transforming so the centre of the screen is 0,0 |
HenryWTriff | 10:29126a41b1da | 756 | for(int y_add = 0; y_add < height; y_add++) { //To differentiate it from a line, 'heigh' number of pixels above the line are also drawn. This gives the impression of height |
HenryWTriff | 10:29126a41b1da | 757 | LCD.setPixel(plot_y.x, plot_y.y - y_add, true); //Plotting the point |
HenryWTriff | 5:2d9f3c36bcb9 | 758 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 759 | } |
HenryWTriff | 5:2d9f3c36bcb9 | 760 | |
HenryWTriff | 5:2d9f3c36bcb9 | 761 | } |
HenryWTriff | 6:5f76dd718dc3 | 762 | } |
HenryWTriff | 6:5f76dd718dc3 | 763 | |
HenryWTriff | 6:5f76dd718dc3 | 764 | //******************** |
HenryWTriff | 6:5f76dd718dc3 | 765 | // DRAW BOOST PLATE |
HenryWTriff | 6:5f76dd718dc3 | 766 | //******************** |
HenryWTriff | 6:5f76dd718dc3 | 767 | |
HenryWTriff | 10:29126a41b1da | 768 | void Graphics::Graphics_Draw_Boost_Plate(Triangle_2D boost_plate, Point_2D translation, int angle, float squish, N5110 &LCD) //Draws a boost plate on the track |
HenryWTriff | 6:5f76dd718dc3 | 769 | { |
HenryWTriff | 10:29126a41b1da | 770 | //Using the given coordinates, calculates the points of all corners of the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 771 | Point_2D boost_plate_TL = boost_plate.TL; |
HenryWTriff | 6:5f76dd718dc3 | 772 | Point_2D boost_plate_TR = {boost_plate.BR.x, boost_plate.TL.y}; |
HenryWTriff | 6:5f76dd718dc3 | 773 | Point_2D boost_plate_BL = {boost_plate.TL.x, boost_plate.BR.y}; |
HenryWTriff | 6:5f76dd718dc3 | 774 | Point_2D boost_plate_BR = boost_plate.BR; |
HenryWTriff | 10:29126a41b1da | 775 | Point_2D boost_plate_mid; //The coordinate of the point of the arrow of the boost plate |
HenryWTriff | 10:29126a41b1da | 776 | //The type defines the direction the plate is facing, e.g. Noth, South, East, West |
HenryWTriff | 6:5f76dd718dc3 | 777 | if(boost_plate.Type == 1) { |
HenryWTriff | 10:29126a41b1da | 778 | //Calculates the coordinate of the point of the arrow drawn on the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 779 | boost_plate_mid.x = boost_plate_BR.x; |
HenryWTriff | 6:5f76dd718dc3 | 780 | boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y); |
HenryWTriff | 6:5f76dd718dc3 | 781 | } else if(boost_plate.Type == 2) { |
HenryWTriff | 10:29126a41b1da | 782 | //Calculates the coordinate of the point of the arrow drawn on the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 783 | boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x); |
HenryWTriff | 6:5f76dd718dc3 | 784 | boost_plate_mid.y = boost_plate_BR.y; |
HenryWTriff | 6:5f76dd718dc3 | 785 | } else if(boost_plate.Type == 3) { |
HenryWTriff | 10:29126a41b1da | 786 | //Calculates the coordinate of the point of the arrow drawn on the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 787 | boost_plate_mid.x = boost_plate_TL.x; |
HenryWTriff | 6:5f76dd718dc3 | 788 | boost_plate_mid.y = (((boost_plate_TL.y - boost_plate_BR.y) / 2) + boost_plate_BR.y); |
HenryWTriff | 6:5f76dd718dc3 | 789 | } else if(boost_plate.Type == 4) { |
HenryWTriff | 10:29126a41b1da | 790 | //Calculates the coordinate of the point of the arrow drawn on the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 791 | boost_plate_mid.x = (((boost_plate_BR.x - boost_plate_TL.x) / 2) + boost_plate_TL.x); |
HenryWTriff | 6:5f76dd718dc3 | 792 | boost_plate_mid.y = boost_plate_TL.y; |
HenryWTriff | 6:5f76dd718dc3 | 793 | } |
HenryWTriff | 6:5f76dd718dc3 | 794 | |
HenryWTriff | 6:5f76dd718dc3 | 795 | //Translation |
HenryWTriff | 6:5f76dd718dc3 | 796 | boost_plate_TL = Translate_Point(boost_plate_TL, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 797 | boost_plate_TR = Translate_Point(boost_plate_TR, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 798 | boost_plate_BL = Translate_Point(boost_plate_BL, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 799 | boost_plate_BR = Translate_Point(boost_plate_BR, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 800 | boost_plate_mid = Translate_Point(boost_plate_mid, Round(translation.x), Round(translation.y)); |
HenryWTriff | 6:5f76dd718dc3 | 801 | |
HenryWTriff | 6:5f76dd718dc3 | 802 | //Rotation |
HenryWTriff | 6:5f76dd718dc3 | 803 | boost_plate_TL = Rotate_Point(boost_plate_TL, angle); |
HenryWTriff | 6:5f76dd718dc3 | 804 | boost_plate_TR = Rotate_Point(boost_plate_TR, angle); |
HenryWTriff | 6:5f76dd718dc3 | 805 | boost_plate_BL = Rotate_Point(boost_plate_BL, angle); |
HenryWTriff | 6:5f76dd718dc3 | 806 | boost_plate_BR = Rotate_Point(boost_plate_BR, angle); |
HenryWTriff | 6:5f76dd718dc3 | 807 | boost_plate_mid = Rotate_Point(boost_plate_mid, angle); |
HenryWTriff | 6:5f76dd718dc3 | 808 | |
HenryWTriff | 6:5f76dd718dc3 | 809 | //Squish |
HenryWTriff | 6:5f76dd718dc3 | 810 | boost_plate_TL = Squish_Point(boost_plate_TL, squish); |
HenryWTriff | 6:5f76dd718dc3 | 811 | boost_plate_TR = Squish_Point(boost_plate_TR, squish); |
HenryWTriff | 6:5f76dd718dc3 | 812 | boost_plate_BL = Squish_Point(boost_plate_BL, squish); |
HenryWTriff | 6:5f76dd718dc3 | 813 | boost_plate_BR = Squish_Point(boost_plate_BR, squish); |
HenryWTriff | 6:5f76dd718dc3 | 814 | boost_plate_mid = Squish_Point(boost_plate_mid, squish); |
HenryWTriff | 17:4c5f25d5c4d5 | 815 | |
HenryWTriff | 10:29126a41b1da | 816 | //Draws the square edge of the boost plate |
HenryWTriff | 6:5f76dd718dc3 | 817 | Graphics_Draw_Line(boost_plate_TL, boost_plate_TR, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 818 | Graphics_Draw_Line(boost_plate_TR, boost_plate_BR, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 819 | Graphics_Draw_Line(boost_plate_BR, boost_plate_BL, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 820 | Graphics_Draw_Line(boost_plate_BL, boost_plate_TL, true, LCD); |
HenryWTriff | 17:4c5f25d5c4d5 | 821 | |
HenryWTriff | 10:29126a41b1da | 822 | //For each type of boost plate draw the arrow |
HenryWTriff | 6:5f76dd718dc3 | 823 | if(boost_plate.Type == 1) { |
HenryWTriff | 6:5f76dd718dc3 | 824 | Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 825 | Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 826 | } else if(boost_plate.Type == 2) { |
HenryWTriff | 6:5f76dd718dc3 | 827 | Graphics_Draw_Line(boost_plate_TL, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 828 | Graphics_Draw_Line(boost_plate_BL, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 829 | } else if(boost_plate.Type == 3) { |
HenryWTriff | 6:5f76dd718dc3 | 830 | Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 831 | Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 832 | } else if(boost_plate.Type == 4) { |
HenryWTriff | 6:5f76dd718dc3 | 833 | Graphics_Draw_Line(boost_plate_TR, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 834 | Graphics_Draw_Line(boost_plate_BR, boost_plate_mid, true, LCD); |
HenryWTriff | 6:5f76dd718dc3 | 835 | } |
HenryWTriff | 6:5f76dd718dc3 | 836 | |
HenryWTriff | 6:5f76dd718dc3 | 837 | } |
HenryWTriff | 6:5f76dd718dc3 | 838 | |
HenryWTriff | 6:5f76dd718dc3 | 839 | |
HenryWTriff | 6:5f76dd718dc3 | 840 | |
HenryWTriff | 6:5f76dd718dc3 | 841 | |
HenryWTriff | 6:5f76dd718dc3 | 842 | |
HenryWTriff | 6:5f76dd718dc3 | 843 | |
HenryWTriff | 6:5f76dd718dc3 | 844 | |
HenryWTriff | 6:5f76dd718dc3 | 845 |