Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17dg by
game/geometry.h@21:0eb394495b8a, 2019-03-27 (annotated)
- Committer:
- Noximilien
- Date:
- Wed Mar 27 00:00:32 2019 +0000
- Revision:
- 21:0eb394495b8a
- Child:
- 27:f05f4e738ba9
switched all enemies functions into the class system in a separate file. Created a struct for writing sprites more easily. Created a function that resets all values when the game is over. Separated collision, gameObject and constants into new files.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Noximilien | 21:0eb394495b8a | 1 | #ifndef GEOMETRY_H |
| Noximilien | 21:0eb394495b8a | 2 | #define GEOMETRY_H |
| Noximilien | 21:0eb394495b8a | 3 | |
| Noximilien | 21:0eb394495b8a | 4 | #include <math.h> |
| Noximilien | 21:0eb394495b8a | 5 | |
| Noximilien | 21:0eb394495b8a | 6 | struct Point { |
| Noximilien | 21:0eb394495b8a | 7 | int x; |
| Noximilien | 21:0eb394495b8a | 8 | int y; |
| Noximilien | 21:0eb394495b8a | 9 | Point() : x(0), y(0) {} |
| Noximilien | 21:0eb394495b8a | 10 | Point(int _x, int _y) : x(_x), y(_y) {} |
| Noximilien | 21:0eb394495b8a | 11 | |
| Noximilien | 21:0eb394495b8a | 12 | Point operator+ (const Point& rhs) const { |
| Noximilien | 21:0eb394495b8a | 13 | Point result(x + rhs.x, y + rhs.y); |
| Noximilien | 21:0eb394495b8a | 14 | return result; |
| Noximilien | 21:0eb394495b8a | 15 | } |
| Noximilien | 21:0eb394495b8a | 16 | Point operator- (const Point& rhs) const { |
| Noximilien | 21:0eb394495b8a | 17 | Point result(x - rhs.x, y - rhs.y); |
| Noximilien | 21:0eb394495b8a | 18 | return result; |
| Noximilien | 21:0eb394495b8a | 19 | } |
| Noximilien | 21:0eb394495b8a | 20 | int lengthSquared() { |
| Noximilien | 21:0eb394495b8a | 21 | return x * x + y * y; |
| Noximilien | 21:0eb394495b8a | 22 | } |
| Noximilien | 21:0eb394495b8a | 23 | }; |
| Noximilien | 21:0eb394495b8a | 24 | |
| Noximilien | 21:0eb394495b8a | 25 | class CircleBounds { |
| Noximilien | 21:0eb394495b8a | 26 | public: |
| Noximilien | 21:0eb394495b8a | 27 | Point center; |
| Noximilien | 21:0eb394495b8a | 28 | float radius; |
| Noximilien | 21:0eb394495b8a | 29 | }; |
| Noximilien | 21:0eb394495b8a | 30 | |
| Noximilien | 21:0eb394495b8a | 31 | inline bool circleCollideTwoObjects( |
| Noximilien | 21:0eb394495b8a | 32 | const Point& pos_a, const CircleBounds& bounds_a, |
| Noximilien | 21:0eb394495b8a | 33 | const Point& pos_b, const CircleBounds& bounds_b |
| Noximilien | 21:0eb394495b8a | 34 | ) { |
| Noximilien | 21:0eb394495b8a | 35 | Point center_a = pos_a + bounds_a.center; |
| Noximilien | 21:0eb394495b8a | 36 | Point center_b = pos_b + bounds_b.center; |
| Noximilien | 21:0eb394495b8a | 37 | Point difference = center_a - center_b; |
| Noximilien | 21:0eb394495b8a | 38 | return difference.lengthSquared() <= pow(bounds_a.radius + bounds_b.radius, 2); |
| Noximilien | 21:0eb394495b8a | 39 | } |
| Noximilien | 21:0eb394495b8a | 40 | |
| Noximilien | 21:0eb394495b8a | 41 | |
| Noximilien | 21:0eb394495b8a | 42 | |
| Noximilien | 21:0eb394495b8a | 43 | #endif |
