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
GameEngine/GameEngine.cpp@1:3916f272663e, 2019-04-21 (annotated)
- Committer:
- adat80
- Date:
- Sun Apr 21 19:02:21 2019 +0000
- Revision:
- 1:3916f272663e
- Child:
- 2:88019d96e1da
Program with working spawning of enemies and killing of enemies;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| adat80 | 1:3916f272663e | 1 | #include "GameEngine.h" |
| adat80 | 1:3916f272663e | 2 | |
| adat80 | 1:3916f272663e | 3 | |
| adat80 | 1:3916f272663e | 4 | GameEngine::GameEngine() |
| adat80 | 1:3916f272663e | 5 | { |
| adat80 | 1:3916f272663e | 6 | |
| adat80 | 1:3916f272663e | 7 | } |
| adat80 | 1:3916f272663e | 8 | |
| adat80 | 1:3916f272663e | 9 | GameEngine::~GameEngine() |
| adat80 | 1:3916f272663e | 10 | { |
| adat80 | 1:3916f272663e | 11 | |
| adat80 | 1:3916f272663e | 12 | } |
| adat80 | 1:3916f272663e | 13 | |
| adat80 | 1:3916f272663e | 14 | void GameEngine::init(int CrossHairsSpeed, int fps) |
| adat80 | 1:3916f272663e | 15 | { |
| adat80 | 1:3916f272663e | 16 | // initialise the game parameters |
| adat80 | 1:3916f272663e | 17 | _fps = fps; |
| adat80 | 1:3916f272663e | 18 | _levelNumber = 100; |
| adat80 | 1:3916f272663e | 19 | _money = 0; |
| adat80 | 1:3916f272663e | 20 | |
| adat80 | 1:3916f272663e | 21 | |
| adat80 | 1:3916f272663e | 22 | |
| adat80 | 1:3916f272663e | 23 | _crossHairs.init(CrossHairsSpeed); |
| adat80 | 1:3916f272663e | 24 | |
| adat80 | 1:3916f272663e | 25 | |
| adat80 | 1:3916f272663e | 26 | |
| adat80 | 1:3916f272663e | 27 | |
| adat80 | 1:3916f272663e | 28 | srand(time(NULL)); |
| adat80 | 1:3916f272663e | 29 | |
| adat80 | 1:3916f272663e | 30 | _enemies = _level.init(_levelNumber); |
| adat80 | 1:3916f272663e | 31 | |
| adat80 | 1:3916f272663e | 32 | |
| adat80 | 1:3916f272663e | 33 | |
| adat80 | 1:3916f272663e | 34 | |
| adat80 | 1:3916f272663e | 35 | |
| adat80 | 1:3916f272663e | 36 | |
| adat80 | 1:3916f272663e | 37 | |
| adat80 | 1:3916f272663e | 38 | } |
| adat80 | 1:3916f272663e | 39 | |
| adat80 | 1:3916f272663e | 40 | void GameEngine::read_input(Gamepad &pad) |
| adat80 | 1:3916f272663e | 41 | { |
| adat80 | 1:3916f272663e | 42 | _angle = pad.get_angle(); |
| adat80 | 1:3916f272663e | 43 | _mag = pad.get_mag(); |
| adat80 | 1:3916f272663e | 44 | } |
| adat80 | 1:3916f272663e | 45 | |
| adat80 | 1:3916f272663e | 46 | void GameEngine::draw(N5110 &lcd) |
| adat80 | 1:3916f272663e | 47 | { |
| adat80 | 1:3916f272663e | 48 | //draw wall |
| adat80 | 1:3916f272663e | 49 | lcd.drawRect(0,28,10,20,FILL_TRANSPARENT); |
| adat80 | 1:3916f272663e | 50 | lcd.drawLine(0,28,10,0,1); //back top of wall |
| adat80 | 1:3916f272663e | 51 | lcd.drawLine(10,0,20,0,1); //side of wall |
| adat80 | 1:3916f272663e | 52 | lcd.drawLine(10,28,20,0,1); //front top of wall |
| adat80 | 1:3916f272663e | 53 | lcd.drawLine(10,48,20,20,1); //front bottom of wall |
| adat80 | 1:3916f272663e | 54 | lcd.drawLine(20,20,20,0,1); //front side of wall |
| adat80 | 1:3916f272663e | 55 | |
| adat80 | 1:3916f272663e | 56 | |
| adat80 | 1:3916f272663e | 57 | |
| adat80 | 1:3916f272663e | 58 | // draw the elements in the LCD buffer |
| adat80 | 1:3916f272663e | 59 | /* |
| adat80 | 1:3916f272663e | 60 | _enemy.draw(lcd); |
| adat80 | 1:3916f272663e | 61 | _enemy2.draw(lcd); |
| adat80 | 1:3916f272663e | 62 | */ |
| adat80 | 1:3916f272663e | 63 | _crossHairs.draw(lcd); |
| adat80 | 1:3916f272663e | 64 | |
| adat80 | 1:3916f272663e | 65 | |
| adat80 | 1:3916f272663e | 66 | |
| adat80 | 1:3916f272663e | 67 | |
| adat80 | 1:3916f272663e | 68 | for (int i=0; i < _levelNumber; i++) { |
| adat80 | 1:3916f272663e | 69 | _enemies[i].draw(lcd); |
| adat80 | 1:3916f272663e | 70 | } |
| adat80 | 1:3916f272663e | 71 | |
| adat80 | 1:3916f272663e | 72 | |
| adat80 | 1:3916f272663e | 73 | } |
| adat80 | 1:3916f272663e | 74 | |
| adat80 | 1:3916f272663e | 75 | void GameEngine::update(Gamepad &pad) |
| adat80 | 1:3916f272663e | 76 | { |
| adat80 | 1:3916f272663e | 77 | _level.update(_fps); |
| adat80 | 1:3916f272663e | 78 | _crossHairs.update(_angle,_mag, _fps); |
| adat80 | 1:3916f272663e | 79 | /* |
| adat80 | 1:3916f272663e | 80 | _enemy.update(); |
| adat80 | 1:3916f272663e | 81 | _enemy2.update(); |
| adat80 | 1:3916f272663e | 82 | */ |
| adat80 | 1:3916f272663e | 83 | |
| adat80 | 1:3916f272663e | 84 | |
| adat80 | 1:3916f272663e | 85 | for (int i=0; i < _levelNumber; i++) { |
| adat80 | 1:3916f272663e | 86 | _enemies[i].update(); |
| adat80 | 1:3916f272663e | 87 | } |
| adat80 | 1:3916f272663e | 88 | |
| adat80 | 1:3916f272663e | 89 | if ( pad.check_event(Gamepad::B_PRESSED) == true) { |
| adat80 | 1:3916f272663e | 90 | fireShot(pad); |
| adat80 | 1:3916f272663e | 91 | } |
| adat80 | 1:3916f272663e | 92 | |
| adat80 | 1:3916f272663e | 93 | |
| adat80 | 1:3916f272663e | 94 | |
| adat80 | 1:3916f272663e | 95 | } |
| adat80 | 1:3916f272663e | 96 | |
| adat80 | 1:3916f272663e | 97 | void GameEngine::fireShot(Gamepad &gpad) |
| adat80 | 1:3916f272663e | 98 | { |
| adat80 | 1:3916f272663e | 99 | Vector2D shotLoc = _crossHairs.get_pos(); |
| adat80 | 1:3916f272663e | 100 | for(int i = 0; i < _levelNumber; i++) { |
| adat80 | 1:3916f272663e | 101 | Vector2D enemyLoc = _enemies[i].get_pos(); |
| adat80 | 1:3916f272663e | 102 | |
| adat80 | 1:3916f272663e | 103 | if (abs(enemyLoc.x - shotLoc.x) < 4) { |
| adat80 | 1:3916f272663e | 104 | if (abs(enemyLoc.y - shotLoc.y) < 4) { |
| adat80 | 1:3916f272663e | 105 | _enemies[i].set_alive(false); |
| adat80 | 1:3916f272663e | 106 | } |
| adat80 | 1:3916f272663e | 107 | } |
| adat80 | 1:3916f272663e | 108 | } |
| adat80 | 1:3916f272663e | 109 | } |
| adat80 | 1:3916f272663e | 110 |