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@28:35af3843de8f, 2019-04-10 (annotated)
- Committer:
- Noximilien
- Date:
- Wed Apr 10 15:42:10 2019 +0000
- Revision:
- 28:35af3843de8f
- Parent:
- 27:f05f4e738ba9
- Child:
- 29:579e00b7f118
Moved starSpawnDelay to stars.h. Made enemies move y-direction as the game score increase. Added more comments. Cleaned the code a bit. Changed struct to gameObject in the main.cpp. Made some functions less than 20 lines.
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 | 28:35af3843de8f | 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 | 27:f05f4e738ba9 | 27 | CircleBounds() {}; |
| Noximilien | 27:f05f4e738ba9 | 28 | CircleBounds(Point _center, float _radius): center(_center), radius(_radius) {}; |
| Noximilien | 21:0eb394495b8a | 29 | Point center; |
| Noximilien | 21:0eb394495b8a | 30 | float radius; |
| Noximilien | 21:0eb394495b8a | 31 | }; |
| Noximilien | 21:0eb394495b8a | 32 | |
| Noximilien | 21:0eb394495b8a | 33 | inline bool circleCollideTwoObjects( |
| Noximilien | 21:0eb394495b8a | 34 | const Point& pos_a, const CircleBounds& bounds_a, |
| Noximilien | 21:0eb394495b8a | 35 | const Point& pos_b, const CircleBounds& bounds_b |
| Noximilien | 21:0eb394495b8a | 36 | ) { |
| Noximilien | 21:0eb394495b8a | 37 | Point center_a = pos_a + bounds_a.center; |
| Noximilien | 21:0eb394495b8a | 38 | Point center_b = pos_b + bounds_b.center; |
| Noximilien | 21:0eb394495b8a | 39 | Point difference = center_a - center_b; |
| Noximilien | 21:0eb394495b8a | 40 | return difference.lengthSquared() <= pow(bounds_a.radius + bounds_b.radius, 2); |
| Noximilien | 21:0eb394495b8a | 41 | } |
| Noximilien | 21:0eb394495b8a | 42 | |
| Noximilien | 21:0eb394495b8a | 43 | |
| Noximilien | 21:0eb394495b8a | 44 | |
| Noximilien | 21:0eb394495b8a | 45 | #endif |
