I am learning OOP using c++ on a MicroBit by developing this simple game
Revision 3:a21366e3261e, committed 2020-07-09
- Comitter:
- ahmeou
- Date:
- Thu Jul 09 06:04:17 2020 +0000
- Parent:
- 2:8f1130b99681
- Commit message:
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gameEngine/inc/Asteroid.h Thu Jul 09 06:04:17 2020 +0000 @@ -0,0 +1,8 @@ +#include "Sprite.h" + +class Asteroid: public Sprite{ + public: + void move(){ + m_y = (m_y + 1) % 5; + } +}; \ No newline at end of file
--- a/gameEngine/inc/Sprite.h Wed Jul 08 17:48:31 2020 +0000 +++ b/gameEngine/inc/Sprite.h Thu Jul 09 06:04:17 2020 +0000 @@ -2,7 +2,7 @@ #define SPRITE_H class Sprite{ - private: + protected: int m_x; int m_y;
--- a/gameEngine/module.json Wed Jul 08 17:48:31 2020 +0000 +++ b/gameEngine/module.json Thu Jul 09 06:04:17 2020 +0000 @@ -1,5 +1,5 @@ { - "name": "game engine", + "name": "game-engine", "version": "2.0.0", "description": "A simple game engine for the MicroBit", "license": "MIT",
--- a/gameEngine/source/Spacecraft.cpp Wed Jul 08 17:48:31 2020 +0000 +++ b/gameEngine/source/Spacecraft.cpp Thu Jul 09 06:04:17 2020 +0000 @@ -10,9 +10,7 @@ setX(x); } void Spacecraft::moveRight(){ - int x = getX() + 1; - if(x > 4) x = 0; - setX(x); + m_x = (m_x + 1) % 5; } bool Spacecraft::isBlinking(){ return blinking;
--- a/main.cpp Wed Jul 08 17:48:31 2020 +0000 +++ b/main.cpp Thu Jul 09 06:04:17 2020 +0000 @@ -2,6 +2,7 @@ #include "Screen.h" #include "Bullet.h" #include "Spacecraft.h" +#include "Asteroid.h" MicroBit ubit; MicroBitSerial serial(USBTX, USBRX); @@ -12,17 +13,25 @@ Spacecraft spacecraft; Bullet bullet; + Asteroid asteroid; + bullet.setX(spacecraft.getX()); bullet.setY(spacecraft.getY()); + int rnd = 6; + rnd = ubit.random(5); + + asteroid.setX(rnd); + asteroid.setY(0); + + int dist; while(true){ // move spacecraft - rnd = ubit.random(10); - serial.send(rnd); - if(rnd >= 5) + rnd = ubit.random(9); + if(rnd > 5) spacecraft.moveRight(); - else + else if(rnd < 3) spacecraft.moveLeft(); @@ -31,10 +40,38 @@ if(bullet.getY() == 0) bullet.setX(spacecraft.getX()); bullet.move(); + + if(asteroid.hitBy(bullet)){ + screen.draw(bullet); + screen.draw(spacecraft); + screen.draw(asteroid); + screen.refresh(); + release_fiber(); + } + + if(asteroid.getY() == 4){ + rnd = ubit.random(5); + asteroid.setX(rnd); + serial.send(asteroid.getX()); + serial.send(','); + serial.send(rnd); + serial.send("\n\r"); + } + asteroid.move(); + + if(asteroid.hitBy(bullet)){ + screen.draw(bullet); + screen.draw(spacecraft); + screen.draw(asteroid); + screen.refresh(); + release_fiber(); + } + ubit.sleep(200); screen.draw(bullet); screen.draw(spacecraft); + screen.draw(asteroid); screen.refresh(); }