Basic game using accelerometer and LCD screen. You can move and dodge asteroids coming from both left and right. There is no scoring at the moment.
Dependencies: C12832 FXOS8700Q mbed-rtos mbed
Revision 2:9e0c826103d7, committed 2016-02-17
- Comitter:
- co838_gtvl2
- Date:
- Wed Feb 17 10:14:33 2016 +0000
- Parent:
- 1:c6734b909bf0
- Commit message:
- Unrealisable because memory in cpp isn't that good :(
Changed in this revision
diff -r c6734b909bf0 -r 9e0c826103d7 Asteroid.h --- a/Asteroid.h Tue Feb 16 22:25:42 2016 +0000 +++ b/Asteroid.h Wed Feb 17 10:14:33 2016 +0000 @@ -9,14 +9,14 @@ public: Asteroid(); ~Asteroid(); - int getX() const; - int getY() const; - bool move(Player*); + int getX() const; + int getY() const; + bool move(Player*); private: - int inc; // -1 / +1 - int x; // 127=>0 / 0=>127 - float a; // [A] * x + b - int b; // a * x + [B] + char inc; // -1 / +1 + unsigned short int x; // 127 => 0 / 0 => 127 + float a; // [A] * x + b + unsigned short int b; // a * x + [B] }; #endif /* _ASTEROID_H_ */ \ No newline at end of file
diff -r c6734b909bf0 -r 9e0c826103d7 Game.cpp --- a/Game.cpp Tue Feb 16 22:25:42 2016 +0000 +++ b/Game.cpp Wed Feb 17 10:14:33 2016 +0000 @@ -1,3 +1,8 @@ +/** + * Basic game using accelerometer. You must avoid Asteroids coming on your ship. + * Won't work because C++'s lists memory management sucks. :( + **/ + #include "Game.h" #if defined _DEBUG @@ -74,7 +79,7 @@ { this->factory(); #if defined _DEBUG - host.printf("Currently %d Asteroid(s).\r\n", this->asteroids.size()); + // host.printf("Currently %d Asteroid(s).\r\n", this->asteroids.size()); #endif this->move(); } @@ -83,12 +88,9 @@ { ++this->delta; #if defined _DEBUG - host.printf("=> [%c] next asteroid in %d/%d cycle(s).\r\n", this->delta >= this->next ? '1' : '0', this->delta, this->next); + // host.printf("=> [%c] next asteroid in %d/%d cycle(s).\r\n", this->delta >= this->next ? '1' : '0', this->delta, this->next); #endif if (this->delta >= this->next && (MAX_ASTEROID_NBS != 0 ? this->asteroids.size() <= MAX_ASTEROID_NBS : true)) { -#if defined _DEBUG - host.printf("\t***** GENERATION !!!! *****\r\n"); -#endif this->generate(); this->next = rand() % GENERATION_CYCLES + 1; this->delta = 0; @@ -97,17 +99,20 @@ void Game::generate() { - this->asteroids.push_back(new Asteroid()); + this->asteroids.push_front(new Asteroid()); } void Game::move() { this->mutex.lock(100); - std::list<Asteroid*>::iterator it; - for (it = this->asteroids.begin(); it != this->asteroids.end(); it++) { + std::list<Asteroid*>::iterator it = this->asteroids.begin(); + while (it != this->asteroids.end()) { if (!(*it)->move(this->player)) { - delete *it; - it = this->asteroids.erase(it); + delete *this->asteroids.end(); + this->asteroids.pop_back(); + break; + } else { + ++it; } } this->mutex.unlock();
diff -r c6734b909bf0 -r 9e0c826103d7 Game.h --- a/Game.h Tue Feb 16 22:25:42 2016 +0000 +++ b/Game.h Wed Feb 17 10:14:33 2016 +0000 @@ -30,8 +30,8 @@ DigitalIn boost; int16_t steadyPosition; unsigned int score; - int delta; - int next; + unsigned short int delta; + unsigned short int next; std::list<Asteroid*> asteroids; };