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 Gamepad N5110 mbed-rtos
GameEngine/GameEngine.cpp@3:bf9624e5b0c3, 2019-04-25 (annotated)
- Committer:
- RexRoshan
- Date:
- Thu Apr 25 16:31:27 2019 +0000
- Revision:
- 3:bf9624e5b0c3
- Parent:
- 2:b5c1bb7a39de
- Child:
- 4:4d673fb2d9dc
The game is finished;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RexRoshan | 0:99fa5a619081 | 1 | #include "GameEngine.h" |
RexRoshan | 0:99fa5a619081 | 2 | |
RexRoshan | 0:99fa5a619081 | 3 | GameEngine::GameEngine() |
RexRoshan | 0:99fa5a619081 | 4 | { |
RexRoshan | 0:99fa5a619081 | 5 | |
RexRoshan | 0:99fa5a619081 | 6 | } |
RexRoshan | 0:99fa5a619081 | 7 | |
RexRoshan | 0:99fa5a619081 | 8 | GameEngine::~GameEngine() |
RexRoshan | 0:99fa5a619081 | 9 | { |
RexRoshan | 0:99fa5a619081 | 10 | |
RexRoshan | 0:99fa5a619081 | 11 | } |
RexRoshan | 0:99fa5a619081 | 12 | int backgrounds [48][84] = { |
RexRoshan | 0:99fa5a619081 | 13 | |
RexRoshan | 0:99fa5a619081 | 14 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 15 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 16 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 17 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 18 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 19 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 20 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 21 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 22 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 23 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 24 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 25 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 26 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 27 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 28 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 29 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 30 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 31 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 32 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 33 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 34 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 35 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 36 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 37 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 38 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 39 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 40 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 41 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 42 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 43 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 44 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 45 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 46 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 47 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 48 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 49 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 50 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 51 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 52 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 53 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 54 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 55 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 56 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 57 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 58 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 59 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 60 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 61 | {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 62 | |
RexRoshan | 0:99fa5a619081 | 63 | }; |
RexRoshan | 0:99fa5a619081 | 64 | int r [3][13] = { |
RexRoshan | 0:99fa5a619081 | 65 | |
RexRoshan | 0:99fa5a619081 | 66 | {0,1,0,0,0,0,0,0,0,0,0,1,0}, |
RexRoshan | 0:99fa5a619081 | 67 | {1,1,1,0,0,0,0,0,0,0,1,1,1}, |
RexRoshan | 0:99fa5a619081 | 68 | {0,1,0,0,1,1,1,1,1,0,0,1,0}, |
RexRoshan | 0:99fa5a619081 | 69 | |
RexRoshan | 0:99fa5a619081 | 70 | }; |
RexRoshan | 0:99fa5a619081 | 71 | |
RexRoshan | 0:99fa5a619081 | 72 | int e [3][3] = { |
RexRoshan | 0:99fa5a619081 | 73 | |
RexRoshan | 0:99fa5a619081 | 74 | {0,1,0}, |
RexRoshan | 0:99fa5a619081 | 75 | {1,1,1}, |
RexRoshan | 0:99fa5a619081 | 76 | {0,1,0}, |
RexRoshan | 0:99fa5a619081 | 77 | |
RexRoshan | 0:99fa5a619081 | 78 | }; |
RexRoshan | 0:99fa5a619081 | 79 | |
RexRoshan | 0:99fa5a619081 | 80 | int x [3][19] = { |
RexRoshan | 0:99fa5a619081 | 81 | |
RexRoshan | 0:99fa5a619081 | 82 | {0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 83 | {0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 84 | {1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1}, |
RexRoshan | 0:99fa5a619081 | 85 | |
RexRoshan | 0:99fa5a619081 | 86 | }; |
RexRoshan | 0:99fa5a619081 | 87 | |
RexRoshan | 0:99fa5a619081 | 88 | int explosion [23] [23] = { |
RexRoshan | 0:99fa5a619081 | 89 | |
RexRoshan | 0:99fa5a619081 | 90 | {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 91 | {0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 92 | {0,0,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 93 | {0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 94 | {0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 95 | {0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0}, |
RexRoshan | 0:99fa5a619081 | 96 | {0,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0}, |
RexRoshan | 0:99fa5a619081 | 97 | {0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0}, |
RexRoshan | 0:99fa5a619081 | 98 | {0,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0}, |
RexRoshan | 0:99fa5a619081 | 99 | {0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0}, |
RexRoshan | 0:99fa5a619081 | 100 | {0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, |
RexRoshan | 0:99fa5a619081 | 101 | {0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1}, |
RexRoshan | 0:99fa5a619081 | 102 | {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1}, |
RexRoshan | 0:99fa5a619081 | 103 | {0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 104 | {0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 105 | {0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0}, |
RexRoshan | 0:99fa5a619081 | 106 | {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 107 | {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0}, |
RexRoshan | 0:99fa5a619081 | 108 | {0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0}, |
RexRoshan | 0:99fa5a619081 | 109 | {0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 110 | {0,0,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 111 | {0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 112 | {0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0}, |
RexRoshan | 0:99fa5a619081 | 113 | |
RexRoshan | 0:99fa5a619081 | 114 | }; |
RexRoshan | 0:99fa5a619081 | 115 | |
RexRoshan | 1:45493d1d0689 | 116 | void GameEngine::init(int spacecraft_xpos,int spacecraft_ypos,int enemy_xpos, int enemy_ypos,int enemy2_xpos, int enemy2_ypos,int enemy3_xpos, int enemy3_ypos,int beam_size,int beam2_size, int speed) |
RexRoshan | 0:99fa5a619081 | 117 | { |
RexRoshan | 2:b5c1bb7a39de | 118 | // initialise the game parameters |
RexRoshan | 2:b5c1bb7a39de | 119 | _spacecraft_xpos = spacecraft_xpos; |
RexRoshan | 2:b5c1bb7a39de | 120 | _spacecraft_ypos = spacecraft_ypos; |
RexRoshan | 0:99fa5a619081 | 121 | |
RexRoshan | 2:b5c1bb7a39de | 122 | _enemy_xpos = enemy_xpos; |
RexRoshan | 2:b5c1bb7a39de | 123 | _enemy_ypos = enemy_ypos; |
RexRoshan | 0:99fa5a619081 | 124 | |
RexRoshan | 2:b5c1bb7a39de | 125 | _enemy2_xpos = enemy2_xpos; |
RexRoshan | 2:b5c1bb7a39de | 126 | _enemy2_ypos = enemy2_ypos; |
RexRoshan | 1:45493d1d0689 | 127 | |
RexRoshan | 2:b5c1bb7a39de | 128 | _enemy3_xpos = enemy3_xpos; |
RexRoshan | 2:b5c1bb7a39de | 129 | _enemy3_ypos = enemy3_ypos; |
RexRoshan | 0:99fa5a619081 | 130 | |
RexRoshan | 0:99fa5a619081 | 131 | |
RexRoshan | 2:b5c1bb7a39de | 132 | _beam_size = beam_size; // beam size for 1st and 3rd enemy |
RexRoshan | 2:b5c1bb7a39de | 133 | _beam2_size = beam2_size; // beam size for 2nd enemy |
RexRoshan | 2:b5c1bb7a39de | 134 | _speed = speed; // Speed of the enemy travelling |
RexRoshan | 0:99fa5a619081 | 135 | |
RexRoshan | 0:99fa5a619081 | 136 | |
RexRoshan | 2:b5c1bb7a39de | 137 | _p1x = GAP; |
RexRoshan | 0:99fa5a619081 | 138 | // x position on screen - WIDTH is defined in N5110.h |
RexRoshan | 2:b5c1bb7a39de | 139 | _e1a = WIDTH-_enemy_xpos; //enemy_xpos = 12 |
RexRoshan | 2:b5c1bb7a39de | 140 | // y position on screen - HEIGHT is defined in N5110.h |
RexRoshan | 2:b5c1bb7a39de | 141 | _e1b = HEIGHT/2-_enemy_ypos; //enemy_ypos = 4 |
RexRoshan | 0:99fa5a619081 | 142 | |
RexRoshan | 2:b5c1bb7a39de | 143 | _e2a = WIDTH-_enemy2_xpos; //enemy2_xpos = 12 |
RexRoshan | 2:b5c1bb7a39de | 144 | _e21b = HEIGHT/2 +_enemy2_ypos; //enemy2_ypos = 10 |
RexRoshan | 2:b5c1bb7a39de | 145 | _e22b = HEIGHT/2 -_enemy2_ypos; |
RexRoshan | 1:45493d1d0689 | 146 | |
RexRoshan | 2:b5c1bb7a39de | 147 | _e3a = WIDTH-_enemy3_xpos; //enemy3_xpos = 20 |
RexRoshan | 2:b5c1bb7a39de | 148 | _e3b = HEIGHT/2 -_enemy3_ypos; //enemy3_ypos = 7 |
RexRoshan | 1:45493d1d0689 | 149 | _e3c = WIDTH-_enemy3_xpos - 12; |
RexRoshan | 1:45493d1d0689 | 150 | _e3d = HEIGHT/2 + _enemy3_ypos;; |
RexRoshan | 1:45493d1d0689 | 151 | _e3f = HEIGHT/2 - _enemy3_ypos;; |
RexRoshan | 1:45493d1d0689 | 152 | |
RexRoshan | 2:b5c1bb7a39de | 153 | // Initialising the player's spacecraft and all enemy spacecrafts |
RexRoshan | 2:b5c1bb7a39de | 154 | _p1.init(_spacecraft_xpos,_spacecraft_ypos); |
RexRoshan | 2:b5c1bb7a39de | 155 | _e1.init(_e1a,_e1b); |
RexRoshan | 2:b5c1bb7a39de | 156 | _e21.init(_e2a,_e21b,_speed); |
RexRoshan | 2:b5c1bb7a39de | 157 | _e22.init(_e2a,_e22b,_speed); |
RexRoshan | 2:b5c1bb7a39de | 158 | _e3.init(_e3a,_e3b,_e3c,_e3d,_e3c,_e3f,_speed); |
RexRoshan | 2:b5c1bb7a39de | 159 | // Initialising the stage of the game |
RexRoshan | 2:b5c1bb7a39de | 160 | _stage = 0; |
RexRoshan | 0:99fa5a619081 | 161 | |
RexRoshan | 0:99fa5a619081 | 162 | } |
RexRoshan | 0:99fa5a619081 | 163 | |
RexRoshan | 0:99fa5a619081 | 164 | void GameEngine::read_input(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 165 | { |
RexRoshan | 2:b5c1bb7a39de | 166 | _d = pad.get_direction(); // Get the direction of the joystick |
RexRoshan | 2:b5c1bb7a39de | 167 | _mag = pad.get_mag(); // Get the magnitude value |
RexRoshan | 2:b5c1bb7a39de | 168 | _R = pad.check_event(Gamepad::R_PRESSED); // Check if the R button is being pressed |
RexRoshan | 3:bf9624e5b0c3 | 169 | _L = pad.check_event(Gamepad::L_PRESSED); // Check if the L button is being pressed |
RexRoshan | 0:99fa5a619081 | 170 | |
RexRoshan | 0:99fa5a619081 | 171 | } |
RexRoshan | 0:99fa5a619081 | 172 | |
RexRoshan | 2:b5c1bb7a39de | 173 | void GameEngine::draw_mission_one(Gamepad &pad,N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 174 | { |
RexRoshan | 0:99fa5a619081 | 175 | // draw the background of the game |
RexRoshan | 0:99fa5a619081 | 176 | lcd.drawSprite(0,0,48,84,(int *)backgrounds); |
RexRoshan | 2:b5c1bb7a39de | 177 | // draw the easter egg of the game |
RexRoshan | 0:99fa5a619081 | 178 | lcd.drawSprite(6,4,3,13,(int *)r); |
RexRoshan | 0:99fa5a619081 | 179 | //health |
RexRoshan | 0:99fa5a619081 | 180 | draw_enemy_health(lcd); |
RexRoshan | 0:99fa5a619081 | 181 | draw_spacecraft_health(pad); |
RexRoshan | 2:b5c1bb7a39de | 182 | // player spacecraft |
RexRoshan | 0:99fa5a619081 | 183 | _p1.character(lcd); |
RexRoshan | 2:b5c1bb7a39de | 184 | // first enemy |
RexRoshan | 0:99fa5a619081 | 185 | _e1.enemy(lcd); |
RexRoshan | 2:b5c1bb7a39de | 186 | // player spacecraft beam |
RexRoshan | 0:99fa5a619081 | 187 | _beam.draw(lcd); |
RexRoshan | 2:b5c1bb7a39de | 188 | // enemy spacecraft beam |
RexRoshan | 0:99fa5a619081 | 189 | _enemybeam.draw(lcd); |
RexRoshan | 0:99fa5a619081 | 190 | |
RexRoshan | 0:99fa5a619081 | 191 | } |
RexRoshan | 2:b5c1bb7a39de | 192 | void GameEngine::draw_mission_two(Gamepad &pad,N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 193 | { |
RexRoshan | 2:b5c1bb7a39de | 194 | // draw the background of the game |
RexRoshan | 0:99fa5a619081 | 195 | lcd.drawSprite(0,0,48,84,(int *)backgrounds); |
RexRoshan | 2:b5c1bb7a39de | 196 | // draw the easter egg of the game |
RexRoshan | 0:99fa5a619081 | 197 | lcd.drawSprite(6,4,3,3,(int *)e); |
RexRoshan | 2:b5c1bb7a39de | 198 | //health |
RexRoshan | 0:99fa5a619081 | 199 | draw_spacecraft_health(pad); |
RexRoshan | 0:99fa5a619081 | 200 | draw_enemy21_health(lcd); |
RexRoshan | 0:99fa5a619081 | 201 | draw_enemy22_health(lcd); |
RexRoshan | 2:b5c1bb7a39de | 202 | // player spacecraft |
RexRoshan | 0:99fa5a619081 | 203 | _p1.character(lcd); |
RexRoshan | 2:b5c1bb7a39de | 204 | // second enemy |
RexRoshan | 0:99fa5a619081 | 205 | _e21.enemy2(lcd); |
RexRoshan | 0:99fa5a619081 | 206 | _e22.enemy2(lcd); |
RexRoshan | 2:b5c1bb7a39de | 207 | // player spacecraft beam |
RexRoshan | 0:99fa5a619081 | 208 | _beam.draw(lcd); |
RexRoshan | 2:b5c1bb7a39de | 209 | // second enemy spacecraft beam |
RexRoshan | 0:99fa5a619081 | 210 | _enemybeam2.draw(lcd); |
RexRoshan | 0:99fa5a619081 | 211 | |
RexRoshan | 0:99fa5a619081 | 212 | } |
RexRoshan | 0:99fa5a619081 | 213 | |
RexRoshan | 2:b5c1bb7a39de | 214 | void GameEngine::draw_mission_three(Gamepad &pad,N5110 &lcd) |
RexRoshan | 1:45493d1d0689 | 215 | { |
RexRoshan | 2:b5c1bb7a39de | 216 | // draw the background of the game |
RexRoshan | 1:45493d1d0689 | 217 | lcd.drawSprite(0,0,48,84,(int *)backgrounds); |
RexRoshan | 2:b5c1bb7a39de | 218 | // draw the easter egg of the game |
RexRoshan | 2:b5c1bb7a39de | 219 | lcd.drawSprite(6,4,3,19,(int *)x); |
RexRoshan | 2:b5c1bb7a39de | 220 | //health |
RexRoshan | 1:45493d1d0689 | 221 | draw_spacecraft_health(pad); |
RexRoshan | 1:45493d1d0689 | 222 | draw_enemyboss_health(lcd); |
RexRoshan | 2:b5c1bb7a39de | 223 | // player spacecraft |
RexRoshan | 1:45493d1d0689 | 224 | _p1.character(lcd); |
RexRoshan | 2:b5c1bb7a39de | 225 | // third and final enemy |
RexRoshan | 1:45493d1d0689 | 226 | _e3.enemyboss(lcd); |
RexRoshan | 2:b5c1bb7a39de | 227 | // player spacecraft beam |
RexRoshan | 1:45493d1d0689 | 228 | _beam.draw(lcd); |
RexRoshan | 2:b5c1bb7a39de | 229 | // third enemy spacecraft beam |
RexRoshan | 1:45493d1d0689 | 230 | _enemybeam3.draw(lcd); |
RexRoshan | 1:45493d1d0689 | 231 | |
RexRoshan | 1:45493d1d0689 | 232 | } |
RexRoshan | 1:45493d1d0689 | 233 | |
RexRoshan | 2:b5c1bb7a39de | 234 | void GameEngine::update_mission_one(Gamepad &pad,N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 235 | { |
RexRoshan | 2:b5c1bb7a39de | 236 | check_playerbeam_collision(pad); // Check if L/R is being pressed to initiate the player beam |
RexRoshan | 2:b5c1bb7a39de | 237 | check_enemybeam_collisions(pad); // Check if first enemy's beam has passed the wall to initiate a new beam |
RexRoshan | 2:b5c1bb7a39de | 238 | // updating spacecraft and enemy before checking collisions so that |
RexRoshan | 2:b5c1bb7a39de | 239 | // it displays the right value |
RexRoshan | 2:b5c1bb7a39de | 240 | _p1.update(_d,_mag); // Player spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 241 | _beam.update(); // Player spacecraft's beam update |
RexRoshan | 2:b5c1bb7a39de | 242 | |
RexRoshan | 2:b5c1bb7a39de | 243 | // The enemy spacecraft is stationery in mission one |
RexRoshan | 2:b5c1bb7a39de | 244 | _enemybeam.update(); // Enemy spacecraft's beam update |
RexRoshan | 2:b5c1bb7a39de | 245 | |
RexRoshan | 2:b5c1bb7a39de | 246 | check_enemy_collisions(pad); // Check if the player spacecraft beam collides with the enemy spacecraft |
RexRoshan | 2:b5c1bb7a39de | 247 | check_spacecraft_collisions(pad); // Check if the enemy spacecraft beam collides with the player spacecraft |
RexRoshan | 2:b5c1bb7a39de | 248 | |
RexRoshan | 2:b5c1bb7a39de | 249 | // Animations and sound effect for the both the player's and enemy' spacecraft when they are dead |
RexRoshan | 0:99fa5a619081 | 250 | spacecraft_dead(lcd,pad); |
RexRoshan | 0:99fa5a619081 | 251 | enemy_dead(lcd,pad); |
RexRoshan | 2:b5c1bb7a39de | 252 | // Check if mission one had been failed or pass to provide appropriate animation and sound effect |
RexRoshan | 0:99fa5a619081 | 253 | check_mission_one(pad); |
RexRoshan | 2:b5c1bb7a39de | 254 | |
RexRoshan | 0:99fa5a619081 | 255 | } |
RexRoshan | 0:99fa5a619081 | 256 | |
RexRoshan | 2:b5c1bb7a39de | 257 | void GameEngine::update_mission_two(Gamepad &pad,N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 258 | { |
RexRoshan | 2:b5c1bb7a39de | 259 | check_playerbeam_collision(pad); // Check if L/R is being pressed to initiate the player beam |
RexRoshan | 2:b5c1bb7a39de | 260 | check_enemybeam2_collisions(pad); // Check if first enemy's beam has passed the wall to initiate a new beam |
RexRoshan | 2:b5c1bb7a39de | 261 | // updating spacecraft and enemy before checking collisions so that |
RexRoshan | 2:b5c1bb7a39de | 262 | // it displays the right value |
RexRoshan | 2:b5c1bb7a39de | 263 | _p1.update(_d,_mag); // Player spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 264 | _beam.update(); // Player spacecraft's beam update |
RexRoshan | 2:b5c1bb7a39de | 265 | |
RexRoshan | 2:b5c1bb7a39de | 266 | _enemybeam2.update(); // Enemy spacecraft's beam update |
RexRoshan | 2:b5c1bb7a39de | 267 | _e21.update(); // Second-one enemy spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 268 | _e22.update(); // Second-two enemy spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 269 | |
RexRoshan | 2:b5c1bb7a39de | 270 | check_enemy2_collisions(pad); // Check if the player spacecraft beam collides with the enemy spacecraft |
RexRoshan | 2:b5c1bb7a39de | 271 | check_spacecraft2_collisions(pad); // Check if the enemy spacecraft beam collides with the player spacecraft |
RexRoshan | 2:b5c1bb7a39de | 272 | check_wall_collisions(pad); // Check if enemy spacecraft hits the top and bottom wall to bounce off |
RexRoshan | 2:b5c1bb7a39de | 273 | |
RexRoshan | 2:b5c1bb7a39de | 274 | // Animations and sound effect for the both the player's and enemy' spacecraft when they are dead |
RexRoshan | 0:99fa5a619081 | 275 | spacecraft2_dead(lcd,pad); |
RexRoshan | 0:99fa5a619081 | 276 | enemy2_dead(lcd,pad); |
RexRoshan | 2:b5c1bb7a39de | 277 | // Check if mission two had been failed or pass to provide appropriate animation and sound effect |
RexRoshan | 0:99fa5a619081 | 278 | check_mission_two(pad); |
RexRoshan | 0:99fa5a619081 | 279 | |
RexRoshan | 0:99fa5a619081 | 280 | } |
RexRoshan | 0:99fa5a619081 | 281 | |
RexRoshan | 2:b5c1bb7a39de | 282 | void GameEngine::update_mission_three(Gamepad &pad,N5110 &lcd) |
RexRoshan | 1:45493d1d0689 | 283 | { |
RexRoshan | 2:b5c1bb7a39de | 284 | check_playerbeam_collision(pad); |
RexRoshan | 1:45493d1d0689 | 285 | check_enemybeam3_collisions(pad); |
RexRoshan | 2:b5c1bb7a39de | 286 | |
RexRoshan | 2:b5c1bb7a39de | 287 | _p1.update(_d,_mag); // Player spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 288 | _beam.update(); // Player spacecraft beam update |
RexRoshan | 2:b5c1bb7a39de | 289 | _enemybeam3.update(); // Third enemy's spacecraft's beam update |
RexRoshan | 2:b5c1bb7a39de | 290 | _e3.update(); // Third enemy spacecraft movement update |
RexRoshan | 2:b5c1bb7a39de | 291 | check_enemy3_collisions(pad); // Check if the player spacecraft beam collides with the third enemy spacecraft |
RexRoshan | 2:b5c1bb7a39de | 292 | check_spacecraft3_collisions(pad); // Check if the third enemy spacecraft beam collides with the player spacecraft |
RexRoshan | 2:b5c1bb7a39de | 293 | check_wall2_collisions(pad); // Check if enemy spacecraft hits the top,bottom, wall to bounce off |
RexRoshan | 2:b5c1bb7a39de | 294 | // Animations and sound effect for the both the player's and enemy' spacecraft |
RexRoshan | 1:45493d1d0689 | 295 | spacecraft3_dead(lcd,pad); |
RexRoshan | 1:45493d1d0689 | 296 | enemy3_dead(lcd,pad); |
RexRoshan | 2:b5c1bb7a39de | 297 | // Check if mission three had been failed or pass to provide appropriate animation and sound effect |
RexRoshan | 1:45493d1d0689 | 298 | check_mission_three(pad); |
RexRoshan | 1:45493d1d0689 | 299 | |
RexRoshan | 1:45493d1d0689 | 300 | } |
RexRoshan | 0:99fa5a619081 | 301 | void GameEngine::check_enemy_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 302 | { |
RexRoshan | 2:b5c1bb7a39de | 303 | // read current enemy spacecraft's and player spacecraft's beam attributes |
RexRoshan | 0:99fa5a619081 | 304 | Vector2D beam_pos = _beam.get_pos(); |
RexRoshan | 0:99fa5a619081 | 305 | Vector2D e1_pos = _e1.get_enemy_pos(); |
RexRoshan | 0:99fa5a619081 | 306 | |
RexRoshan | 2:b5c1bb7a39de | 307 | // see if player's spacecraft beam has hit the enemy's spacecraft by checking for overlaps |
RexRoshan | 0:99fa5a619081 | 308 | if ( |
RexRoshan | 0:99fa5a619081 | 309 | (beam_pos.y >= e1_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 310 | (beam_pos.y <= e1_pos.y + 7) && //bottom |
RexRoshan | 0:99fa5a619081 | 311 | (beam_pos.x + _beam_size >= _e1a) && //left |
RexRoshan | 0:99fa5a619081 | 312 | (beam_pos.x + _beam_size <= _e1a + 8) //right |
RexRoshan | 0:99fa5a619081 | 313 | ) { |
RexRoshan | 2:b5c1bb7a39de | 314 | // add first enemy health |
RexRoshan | 0:99fa5a619081 | 315 | _e1.add_health(); |
RexRoshan | 1:45493d1d0689 | 316 | spacebeam = true; |
RexRoshan | 2:b5c1bb7a39de | 317 | // audio feedback |
RexRoshan | 0:99fa5a619081 | 318 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 319 | } |
RexRoshan | 0:99fa5a619081 | 320 | |
RexRoshan | 0:99fa5a619081 | 321 | // write new attributes |
RexRoshan | 0:99fa5a619081 | 322 | _beam.set_pos(beam_pos); |
RexRoshan | 0:99fa5a619081 | 323 | } |
RexRoshan | 0:99fa5a619081 | 324 | |
RexRoshan | 0:99fa5a619081 | 325 | void GameEngine::check_enemy2_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 326 | { |
RexRoshan | 2:b5c1bb7a39de | 327 | // read curent player spacecraft's beam attributes |
RexRoshan | 0:99fa5a619081 | 328 | Vector2D beam_pos = _beam.get_pos(); |
RexRoshan | 2:b5c1bb7a39de | 329 | // check e21 first |
RexRoshan | 0:99fa5a619081 | 330 | Vector2D e21_pos = _e21.get_enemy21_pos(); |
RexRoshan | 0:99fa5a619081 | 331 | |
RexRoshan | 2:b5c1bb7a39de | 332 | // see if player's spacecraft beam has hit the enemy's spacecraft by checking for overlaps |
RexRoshan | 0:99fa5a619081 | 333 | if ( |
RexRoshan | 0:99fa5a619081 | 334 | (beam_pos.y >= e21_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 335 | (beam_pos.y <= e21_pos.y + 7) && //bottom |
RexRoshan | 0:99fa5a619081 | 336 | (beam_pos.x + _beam_size >= _e2a) && //left |
RexRoshan | 0:99fa5a619081 | 337 | (beam_pos.x + _beam_size <= _e2a + 7) //right |
RexRoshan | 0:99fa5a619081 | 338 | ) { |
RexRoshan | 2:b5c1bb7a39de | 339 | // add health to first second level enemy |
RexRoshan | 2:b5c1bb7a39de | 340 | _e21.add_health(); |
RexRoshan | 2:b5c1bb7a39de | 341 | // set boolean spacebeam true |
RexRoshan | 2:b5c1bb7a39de | 342 | spacebeam = true; |
RexRoshan | 0:99fa5a619081 | 343 | // audio feedback |
RexRoshan | 0:99fa5a619081 | 344 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 345 | } |
RexRoshan | 2:b5c1bb7a39de | 346 | // check e22 next |
RexRoshan | 2:b5c1bb7a39de | 347 | Vector2D e22_pos = _e22.get_enemy22_pos(); |
RexRoshan | 2:b5c1bb7a39de | 348 | |
RexRoshan | 0:99fa5a619081 | 349 | if ( |
RexRoshan | 0:99fa5a619081 | 350 | (beam_pos.y >= e22_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 351 | (beam_pos.y <= e22_pos.y + 7) && //bottom |
RexRoshan | 0:99fa5a619081 | 352 | (beam_pos.x + _beam_size >= _e2a) && //left |
RexRoshan | 0:99fa5a619081 | 353 | (beam_pos.x + _beam_size <= _e2a + 7) //right |
RexRoshan | 0:99fa5a619081 | 354 | ) { |
RexRoshan | 2:b5c1bb7a39de | 355 | // add health to second, second level enemy |
RexRoshan | 2:b5c1bb7a39de | 356 | _e22.add_health(); |
RexRoshan | 2:b5c1bb7a39de | 357 | // set boolean spacebeam true |
RexRoshan | 2:b5c1bb7a39de | 358 | spacebeam = true; |
RexRoshan | 0:99fa5a619081 | 359 | // audio feedback |
RexRoshan | 1:45493d1d0689 | 360 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 361 | } |
RexRoshan | 2:b5c1bb7a39de | 362 | |
RexRoshan | 1:45493d1d0689 | 363 | // write new attributes |
RexRoshan | 1:45493d1d0689 | 364 | _beam.set_pos(beam_pos); |
RexRoshan | 1:45493d1d0689 | 365 | } |
RexRoshan | 1:45493d1d0689 | 366 | |
RexRoshan | 1:45493d1d0689 | 367 | void GameEngine::check_enemy3_collisions(Gamepad &pad) |
RexRoshan | 1:45493d1d0689 | 368 | { |
RexRoshan | 2:b5c1bb7a39de | 369 | // read curent player's spacecraft beam attributes |
RexRoshan | 1:45493d1d0689 | 370 | Vector2D beam_pos = _beam.get_pos(); |
RexRoshan | 1:45493d1d0689 | 371 | |
RexRoshan | 2:b5c1bb7a39de | 372 | // check e3boss first |
RexRoshan | 1:45493d1d0689 | 373 | Vector2D e3boss_pos = _e3.get_enemyboss_pos(); |
RexRoshan | 1:45493d1d0689 | 374 | |
RexRoshan | 2:b5c1bb7a39de | 375 | // see if player's spacecraft beam has hit the enemy's spacecraft by checking for overlaps |
RexRoshan | 1:45493d1d0689 | 376 | if ( |
RexRoshan | 1:45493d1d0689 | 377 | (beam_pos.y >= e3boss_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 378 | (beam_pos.y <= e3boss_pos.y + 12) && //bottom |
RexRoshan | 1:45493d1d0689 | 379 | (beam_pos.x + _beam_size >= _e3a) && //left |
RexRoshan | 1:45493d1d0689 | 380 | (beam_pos.x + _beam_size <= _e3a + 12) //right |
RexRoshan | 1:45493d1d0689 | 381 | ) { |
RexRoshan | 2:b5c1bb7a39de | 382 | // add health to enemy boss |
RexRoshan | 2:b5c1bb7a39de | 383 | _e3.add_health_boss(); |
RexRoshan | 2:b5c1bb7a39de | 384 | // set boolean spacebeam true |
RexRoshan | 2:b5c1bb7a39de | 385 | spacebeam = true; |
RexRoshan | 1:45493d1d0689 | 386 | // audio feedback |
RexRoshan | 1:45493d1d0689 | 387 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 388 | } |
RexRoshan | 2:b5c1bb7a39de | 389 | // check e3enemy1 next |
RexRoshan | 2:b5c1bb7a39de | 390 | Vector2D e3enemy1_pos = _e3.get_enemy1_pos(); |
RexRoshan | 2:b5c1bb7a39de | 391 | |
RexRoshan | 1:45493d1d0689 | 392 | if ( |
RexRoshan | 1:45493d1d0689 | 393 | (beam_pos.y >= e3enemy1_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 394 | (beam_pos.y <= e3enemy1_pos.y + 6) && //bottom |
RexRoshan | 1:45493d1d0689 | 395 | (beam_pos.x + _beam_size >= _e3c) && //left |
RexRoshan | 1:45493d1d0689 | 396 | (beam_pos.x + _beam_size <= _e3c + 7) //right |
RexRoshan | 1:45493d1d0689 | 397 | ) { |
RexRoshan | 2:b5c1bb7a39de | 398 | // add health to first third level enemy |
RexRoshan | 2:b5c1bb7a39de | 399 | _e3.add_health_enemy1(); |
RexRoshan | 2:b5c1bb7a39de | 400 | // set boolean spacebeam true |
RexRoshan | 2:b5c1bb7a39de | 401 | spacebeam = true; |
RexRoshan | 1:45493d1d0689 | 402 | // audio feedback |
RexRoshan | 1:45493d1d0689 | 403 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 404 | } |
RexRoshan | 2:b5c1bb7a39de | 405 | // check e3enemy2 next |
RexRoshan | 2:b5c1bb7a39de | 406 | Vector2D e3enemy2_pos = _e3.get_enemy2_pos(); |
RexRoshan | 2:b5c1bb7a39de | 407 | |
RexRoshan | 1:45493d1d0689 | 408 | if ( |
RexRoshan | 1:45493d1d0689 | 409 | (beam_pos.y >= e3enemy2_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 410 | (beam_pos.y <= e3enemy2_pos.y + 6) && //bottom |
RexRoshan | 1:45493d1d0689 | 411 | (beam_pos.x + _beam_size >= _e3c) && //left |
RexRoshan | 1:45493d1d0689 | 412 | (beam_pos.x + _beam_size <= _e3c + 7) //right |
RexRoshan | 1:45493d1d0689 | 413 | ) { |
RexRoshan | 2:b5c1bb7a39de | 414 | // add health to second third level enemy |
RexRoshan | 1:45493d1d0689 | 415 | _e3.add_health_enemy2(); |
RexRoshan | 2:b5c1bb7a39de | 416 | // set boolean spacebeam true |
RexRoshan | 1:45493d1d0689 | 417 | spacebeam = true; |
RexRoshan | 2:b5c1bb7a39de | 418 | // audio feedback |
RexRoshan | 0:99fa5a619081 | 419 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 420 | } |
RexRoshan | 0:99fa5a619081 | 421 | // write new attributes |
RexRoshan | 0:99fa5a619081 | 422 | _beam.set_pos(beam_pos); |
RexRoshan | 0:99fa5a619081 | 423 | } |
RexRoshan | 0:99fa5a619081 | 424 | |
RexRoshan | 2:b5c1bb7a39de | 425 | void GameEngine::check_playerbeam_collision(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 426 | { |
RexRoshan | 2:b5c1bb7a39de | 427 | Vector2D p1_pos = _p1.get_pos(); // Get player's spacecraft position |
RexRoshan | 2:b5c1bb7a39de | 428 | Vector2D beam_pos = _beam.get_pos(); // Get player's spacecraft beam position |
RexRoshan | 2:b5c1bb7a39de | 429 | |
RexRoshan | 2:b5c1bb7a39de | 430 | if((_R == true)|| (_L == true)){ // |
RexRoshan | 2:b5c1bb7a39de | 431 | // if (beam_pos.x + _beam_size > WIDTH || (spacebeam == true)){ |
RexRoshan | 1:45493d1d0689 | 432 | _beam.init(_beam_size,p1_pos.x,p1_pos.y); |
RexRoshan | 2:b5c1bb7a39de | 433 | _R = false; |
RexRoshan | 2:b5c1bb7a39de | 434 | _L = false; |
RexRoshan | 2:b5c1bb7a39de | 435 | // } |
RexRoshan | 0:99fa5a619081 | 436 | } |
RexRoshan | 0:99fa5a619081 | 437 | } |
RexRoshan | 0:99fa5a619081 | 438 | |
RexRoshan | 0:99fa5a619081 | 439 | void GameEngine::check_enemybeam_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 440 | { |
RexRoshan | 0:99fa5a619081 | 441 | Vector2D enemybeam_pos = _enemybeam.get_pos(); |
RexRoshan | 0:99fa5a619081 | 442 | // P2 has scored |
RexRoshan | 0:99fa5a619081 | 443 | if ((_ebeam == true)||(enemybeam_pos.x - _beam_size < 0)) { |
RexRoshan | 0:99fa5a619081 | 444 | _enemybeam.init(_beam_size,_e1a,_e1b); |
RexRoshan | 0:99fa5a619081 | 445 | _ebeam = false; |
RexRoshan | 0:99fa5a619081 | 446 | } |
RexRoshan | 0:99fa5a619081 | 447 | } |
RexRoshan | 0:99fa5a619081 | 448 | |
RexRoshan | 0:99fa5a619081 | 449 | void GameEngine::check_enemybeam2_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 450 | { |
RexRoshan | 0:99fa5a619081 | 451 | Vector2D enemy21_pos = _e21.get_enemy21_pos(); |
RexRoshan | 0:99fa5a619081 | 452 | Vector2D enemy22_pos = _e22.get_enemy22_pos(); |
RexRoshan | 0:99fa5a619081 | 453 | Vector2D enemybeam21_pos = _enemybeam2.get_pos_21(); |
RexRoshan | 0:99fa5a619081 | 454 | Vector2D enemybeam22_pos = _enemybeam2.get_pos_22(); |
RexRoshan | 0:99fa5a619081 | 455 | // P2 has scored |
RexRoshan | 0:99fa5a619081 | 456 | if ((_ebeam21 == true)||(_ebeam22 == true)||(enemybeam21_pos.x - _beam2_size < 0)||(enemybeam22_pos.x - _beam2_size < 0)) { |
RexRoshan | 0:99fa5a619081 | 457 | _enemybeam2.init(_beam2_size,enemy21_pos.x,enemy21_pos.y,enemy22_pos.x,enemy22_pos.y); |
RexRoshan | 0:99fa5a619081 | 458 | _ebeam21 = false; |
RexRoshan | 0:99fa5a619081 | 459 | _ebeam22 = false; |
RexRoshan | 0:99fa5a619081 | 460 | } |
RexRoshan | 0:99fa5a619081 | 461 | } |
RexRoshan | 0:99fa5a619081 | 462 | |
RexRoshan | 1:45493d1d0689 | 463 | void GameEngine::check_enemybeam3_collisions(Gamepad &pad) |
RexRoshan | 1:45493d1d0689 | 464 | { |
RexRoshan | 1:45493d1d0689 | 465 | Vector2D enemyboss_pos = _e3.get_enemyboss_pos(); |
RexRoshan | 1:45493d1d0689 | 466 | Vector2D enemy1_pos = _e3.get_enemy1_pos(); |
RexRoshan | 1:45493d1d0689 | 467 | Vector2D enemy2_pos = _e3.get_enemy2_pos(); |
RexRoshan | 1:45493d1d0689 | 468 | |
RexRoshan | 1:45493d1d0689 | 469 | Vector2D enemybossbeam3_pos = _enemybeam3.get_pos_boss(); |
RexRoshan | 1:45493d1d0689 | 470 | Vector2D enemy1beam3_pos = _enemybeam3.get_pos_enemy1(); |
RexRoshan | 1:45493d1d0689 | 471 | Vector2D enemy2beam3_pos = _enemybeam3.get_pos_enemy2(); |
RexRoshan | 1:45493d1d0689 | 472 | // P2 has scored |
RexRoshan | 1:45493d1d0689 | 473 | if ((_ebeam3boss == true)||(_ebeam31 == true)||(_ebeam32 == true)||(enemybossbeam3_pos.x - _beam_size < 0)||(enemy1beam3_pos.x - _beam_size < 0)||(enemy2beam3_pos.x - _beam_size < 0)) { |
RexRoshan | 1:45493d1d0689 | 474 | _enemybeam3.init(_beam_size,enemyboss_pos.x,enemyboss_pos.y,enemy1_pos.x,enemy1_pos.y,enemy2_pos.x,enemy2_pos.y); |
RexRoshan | 1:45493d1d0689 | 475 | _ebeam3boss = false; |
RexRoshan | 1:45493d1d0689 | 476 | _ebeam31 = false; |
RexRoshan | 1:45493d1d0689 | 477 | _ebeam32 = false; |
RexRoshan | 1:45493d1d0689 | 478 | } |
RexRoshan | 1:45493d1d0689 | 479 | } |
RexRoshan | 1:45493d1d0689 | 480 | |
RexRoshan | 0:99fa5a619081 | 481 | void GameEngine::check_spacecraft_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 482 | { |
RexRoshan | 0:99fa5a619081 | 483 | Vector2D enemybeam_pos = _enemybeam.get_pos(); |
RexRoshan | 0:99fa5a619081 | 484 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 0:99fa5a619081 | 485 | |
RexRoshan | 0:99fa5a619081 | 486 | // see if beam has hit the enemy by checking for overlaps |
RexRoshan | 0:99fa5a619081 | 487 | if ( |
RexRoshan | 0:99fa5a619081 | 488 | (enemybeam_pos.y >= p1_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 489 | (enemybeam_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 0:99fa5a619081 | 490 | (enemybeam_pos.x >= _p1x) && //left |
RexRoshan | 0:99fa5a619081 | 491 | (enemybeam_pos.x <= _p1x + 11) //right |
RexRoshan | 0:99fa5a619081 | 492 | ) { |
RexRoshan | 0:99fa5a619081 | 493 | _p1.add_health(); |
RexRoshan | 0:99fa5a619081 | 494 | _ebeam = true; |
RexRoshan | 0:99fa5a619081 | 495 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 496 | } |
RexRoshan | 0:99fa5a619081 | 497 | |
RexRoshan | 0:99fa5a619081 | 498 | _enemybeam.set_pos(enemybeam_pos); |
RexRoshan | 0:99fa5a619081 | 499 | |
RexRoshan | 0:99fa5a619081 | 500 | } |
RexRoshan | 0:99fa5a619081 | 501 | |
RexRoshan | 0:99fa5a619081 | 502 | void GameEngine::check_spacecraft2_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 503 | { |
RexRoshan | 0:99fa5a619081 | 504 | Vector2D enemybeam21_pos = _enemybeam2.get_pos_21(); |
RexRoshan | 0:99fa5a619081 | 505 | Vector2D enemybeam22_pos = _enemybeam2.get_pos_22(); |
RexRoshan | 0:99fa5a619081 | 506 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 0:99fa5a619081 | 507 | |
RexRoshan | 0:99fa5a619081 | 508 | // see if beam has hit the enemy by checking for overlaps |
RexRoshan | 0:99fa5a619081 | 509 | if ( |
RexRoshan | 0:99fa5a619081 | 510 | (enemybeam21_pos.y >= p1_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 511 | (enemybeam21_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 0:99fa5a619081 | 512 | (enemybeam21_pos.x >= _p1x) && //left |
RexRoshan | 0:99fa5a619081 | 513 | (enemybeam21_pos.x <= _p1x + 11) //right |
RexRoshan | 0:99fa5a619081 | 514 | ) { |
RexRoshan | 0:99fa5a619081 | 515 | _p1.add_health(); |
RexRoshan | 0:99fa5a619081 | 516 | _ebeam21 = true; |
RexRoshan | 0:99fa5a619081 | 517 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 518 | } |
RexRoshan | 1:45493d1d0689 | 519 | else if ( |
RexRoshan | 0:99fa5a619081 | 520 | (enemybeam22_pos.y >= p1_pos.y) && //top |
RexRoshan | 0:99fa5a619081 | 521 | (enemybeam22_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 0:99fa5a619081 | 522 | (enemybeam22_pos.x >= _p1x) && //left |
RexRoshan | 0:99fa5a619081 | 523 | (enemybeam22_pos.x <= _p1x + 11) //right |
RexRoshan | 0:99fa5a619081 | 524 | ) { |
RexRoshan | 0:99fa5a619081 | 525 | _p1.add_health(); |
RexRoshan | 0:99fa5a619081 | 526 | _ebeam22 = true; |
RexRoshan | 0:99fa5a619081 | 527 | pad.tone(1000.0,0.1); |
RexRoshan | 0:99fa5a619081 | 528 | } |
RexRoshan | 0:99fa5a619081 | 529 | _enemybeam2.set_pos_21(enemybeam21_pos); |
RexRoshan | 0:99fa5a619081 | 530 | _enemybeam2.set_pos_22(enemybeam22_pos); |
RexRoshan | 0:99fa5a619081 | 531 | |
RexRoshan | 0:99fa5a619081 | 532 | } |
RexRoshan | 1:45493d1d0689 | 533 | |
RexRoshan | 1:45493d1d0689 | 534 | void GameEngine::check_spacecraft3_collisions(Gamepad &pad) |
RexRoshan | 1:45493d1d0689 | 535 | { |
RexRoshan | 1:45493d1d0689 | 536 | Vector2D enemybossbeam_pos = _enemybeam3.get_pos_boss(); |
RexRoshan | 1:45493d1d0689 | 537 | Vector2D enemy1beam_pos = _enemybeam3.get_pos_enemy1(); |
RexRoshan | 1:45493d1d0689 | 538 | Vector2D enemy2beam_pos = _enemybeam3.get_pos_enemy2(); |
RexRoshan | 1:45493d1d0689 | 539 | |
RexRoshan | 1:45493d1d0689 | 540 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 1:45493d1d0689 | 541 | |
RexRoshan | 1:45493d1d0689 | 542 | // see if beam has hit the enemy by checking for overlaps |
RexRoshan | 1:45493d1d0689 | 543 | if ( |
RexRoshan | 1:45493d1d0689 | 544 | (enemybossbeam_pos.y >= p1_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 545 | (enemybossbeam_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 1:45493d1d0689 | 546 | (enemybossbeam_pos.x >= _p1x) && //left |
RexRoshan | 1:45493d1d0689 | 547 | (enemybossbeam_pos.x <= _p1x + 11) //right |
RexRoshan | 1:45493d1d0689 | 548 | ) { |
RexRoshan | 1:45493d1d0689 | 549 | _p1.add_health(); |
RexRoshan | 1:45493d1d0689 | 550 | _ebeam3boss = true; |
RexRoshan | 1:45493d1d0689 | 551 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 552 | } |
RexRoshan | 1:45493d1d0689 | 553 | else if ( |
RexRoshan | 1:45493d1d0689 | 554 | (enemy1beam_pos.y >= p1_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 555 | (enemy1beam_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 1:45493d1d0689 | 556 | (enemy1beam_pos.x >= _p1x) && //left |
RexRoshan | 1:45493d1d0689 | 557 | (enemy1beam_pos.x <= _p1x + 11) //right |
RexRoshan | 1:45493d1d0689 | 558 | ) { |
RexRoshan | 1:45493d1d0689 | 559 | _p1.add_health(); |
RexRoshan | 1:45493d1d0689 | 560 | _ebeam31 = true; |
RexRoshan | 1:45493d1d0689 | 561 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 562 | } |
RexRoshan | 1:45493d1d0689 | 563 | else if ( |
RexRoshan | 1:45493d1d0689 | 564 | (enemy2beam_pos.y >= p1_pos.y) && //top |
RexRoshan | 1:45493d1d0689 | 565 | (enemy2beam_pos.y <= p1_pos.y + 11) && //bottom |
RexRoshan | 1:45493d1d0689 | 566 | (enemy2beam_pos.x >= _p1x) && //left |
RexRoshan | 1:45493d1d0689 | 567 | (enemy2beam_pos.x <= _p1x + 11) //right |
RexRoshan | 1:45493d1d0689 | 568 | ) { |
RexRoshan | 1:45493d1d0689 | 569 | _p1.add_health(); |
RexRoshan | 1:45493d1d0689 | 570 | _ebeam32 = true; |
RexRoshan | 1:45493d1d0689 | 571 | pad.tone(1000.0,0.1); |
RexRoshan | 1:45493d1d0689 | 572 | } |
RexRoshan | 1:45493d1d0689 | 573 | |
RexRoshan | 1:45493d1d0689 | 574 | _enemybeam3.set_pos_boss(enemybossbeam_pos); |
RexRoshan | 1:45493d1d0689 | 575 | _enemybeam3.set_pos_enemy1(enemy1beam_pos); |
RexRoshan | 1:45493d1d0689 | 576 | _enemybeam3.set_pos_enemy2(enemy2beam_pos); |
RexRoshan | 1:45493d1d0689 | 577 | |
RexRoshan | 1:45493d1d0689 | 578 | } |
RexRoshan | 1:45493d1d0689 | 579 | |
RexRoshan | 0:99fa5a619081 | 580 | void GameEngine::check_wall_collisions(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 581 | { |
RexRoshan | 0:99fa5a619081 | 582 | // read current ball attributes |
RexRoshan | 0:99fa5a619081 | 583 | Vector2D enemy21_pos = _e21.get_enemy21_pos(); |
RexRoshan | 0:99fa5a619081 | 584 | Vector2D enemy22_pos = _e22.get_enemy22_pos(); |
RexRoshan | 0:99fa5a619081 | 585 | Vector2D enemy21_movement = _e21.get_movement(); |
RexRoshan | 0:99fa5a619081 | 586 | Vector2D enemy22_movement = _e22.get_movement(); |
RexRoshan | 0:99fa5a619081 | 587 | |
RexRoshan | 0:99fa5a619081 | 588 | // check if hit top wall |
RexRoshan | 0:99fa5a619081 | 589 | if (enemy21_pos.y <= 1) { // 1 due to 1 pixel boundary |
RexRoshan | 0:99fa5a619081 | 590 | enemy21_pos.y = 1; // bounce off ceiling without going off screen |
RexRoshan | 0:99fa5a619081 | 591 | enemy21_movement.y = -enemy21_movement.y; |
RexRoshan | 0:99fa5a619081 | 592 | } |
RexRoshan | 0:99fa5a619081 | 593 | // check if hit bottom wall |
RexRoshan | 0:99fa5a619081 | 594 | else if (enemy21_pos.y + 7 >= (HEIGHT-1) ) { // bottom pixel is 47 |
RexRoshan | 0:99fa5a619081 | 595 | // hit bottom |
RexRoshan | 0:99fa5a619081 | 596 | enemy21_pos.y = (HEIGHT-1) - 7; // stops ball going off screen |
RexRoshan | 0:99fa5a619081 | 597 | enemy21_movement.y = -enemy21_movement.y; |
RexRoshan | 0:99fa5a619081 | 598 | // audio feedback |
RexRoshan | 0:99fa5a619081 | 599 | } else if (enemy22_pos.y + 7 >= (HEIGHT-1) ) { // bottom pixel is 47 |
RexRoshan | 0:99fa5a619081 | 600 | // hit bottom |
RexRoshan | 0:99fa5a619081 | 601 | enemy22_pos.y = (HEIGHT-1) - 7; // stops ball going off screen |
RexRoshan | 0:99fa5a619081 | 602 | enemy22_movement.y = -enemy22_movement.y; |
RexRoshan | 0:99fa5a619081 | 603 | // audio feedback |
RexRoshan | 0:99fa5a619081 | 604 | } else if (enemy22_pos.y <= 1) { // 1 due to 1 pixel boundary |
RexRoshan | 0:99fa5a619081 | 605 | enemy22_pos.y = 1; // bounce off ceiling without going off screen |
RexRoshan | 0:99fa5a619081 | 606 | enemy22_movement.y = -enemy22_movement.y; |
RexRoshan | 0:99fa5a619081 | 607 | } |
RexRoshan | 0:99fa5a619081 | 608 | |
RexRoshan | 0:99fa5a619081 | 609 | // update ball parameters |
RexRoshan | 0:99fa5a619081 | 610 | _e21.set_movement(enemy21_movement); |
RexRoshan | 0:99fa5a619081 | 611 | _e22.set_movement(enemy22_movement); |
RexRoshan | 0:99fa5a619081 | 612 | _e21.set_enemy21_pos(enemy21_pos); |
RexRoshan | 0:99fa5a619081 | 613 | _e22.set_enemy22_pos(enemy22_pos); |
RexRoshan | 0:99fa5a619081 | 614 | } |
RexRoshan | 1:45493d1d0689 | 615 | |
RexRoshan | 1:45493d1d0689 | 616 | void GameEngine::check_wall2_collisions(Gamepad &pad) |
RexRoshan | 1:45493d1d0689 | 617 | { |
RexRoshan | 1:45493d1d0689 | 618 | // read current ball attributes |
RexRoshan | 1:45493d1d0689 | 619 | Vector2D enemyboss_pos = _e3.get_enemyboss_pos(); |
RexRoshan | 1:45493d1d0689 | 620 | Vector2D enemyboss_movement = _e3.get_movement(); |
RexRoshan | 1:45493d1d0689 | 621 | |
RexRoshan | 1:45493d1d0689 | 622 | // check if hit top wall |
RexRoshan | 1:45493d1d0689 | 623 | if (enemyboss_pos.y <= 1) { // 1 due to 1 pixel boundary |
RexRoshan | 1:45493d1d0689 | 624 | enemyboss_pos.y = 1; // bounce off ceiling without going off screen |
RexRoshan | 1:45493d1d0689 | 625 | enemyboss_movement.y = -enemyboss_movement.y; |
RexRoshan | 1:45493d1d0689 | 626 | } |
RexRoshan | 1:45493d1d0689 | 627 | // check if hit bottom wall |
RexRoshan | 1:45493d1d0689 | 628 | else if (enemyboss_pos.y + 12 >= (HEIGHT-1) ) { // bottom pixel is 47 |
RexRoshan | 1:45493d1d0689 | 629 | // hit bottom |
RexRoshan | 1:45493d1d0689 | 630 | enemyboss_pos.y = (HEIGHT-1) - 12; // stops ball going off screen |
RexRoshan | 1:45493d1d0689 | 631 | enemyboss_movement.y = -enemyboss_movement.y; |
RexRoshan | 1:45493d1d0689 | 632 | // audio feedback |
RexRoshan | 1:45493d1d0689 | 633 | }else if (enemyboss_pos.x + 12 >= (WIDTH-1) ) { // bottom pixel is 47 |
RexRoshan | 1:45493d1d0689 | 634 | // hit bottom |
RexRoshan | 1:45493d1d0689 | 635 | enemyboss_pos.x = (WIDTH-1) - 12; // stops ball going off screen |
RexRoshan | 1:45493d1d0689 | 636 | enemyboss_movement.x = -enemyboss_movement.x; |
RexRoshan | 1:45493d1d0689 | 637 | // audio feedback |
RexRoshan | 1:45493d1d0689 | 638 | }else if (enemyboss_pos.x <= WIDTH/2) { // 1 due to 1 pixel boundary |
RexRoshan | 1:45493d1d0689 | 639 | enemyboss_pos.x = WIDTH/2; // bounce off ceiling without going halfway |
RexRoshan | 1:45493d1d0689 | 640 | enemyboss_movement.x = -enemyboss_movement.x; |
RexRoshan | 1:45493d1d0689 | 641 | } |
RexRoshan | 1:45493d1d0689 | 642 | |
RexRoshan | 1:45493d1d0689 | 643 | _e3.set_movement(enemyboss_movement); |
RexRoshan | 1:45493d1d0689 | 644 | _e3.set_enemyboss_pos(enemyboss_pos); |
RexRoshan | 1:45493d1d0689 | 645 | |
RexRoshan | 1:45493d1d0689 | 646 | } |
RexRoshan | 1:45493d1d0689 | 647 | |
RexRoshan | 0:99fa5a619081 | 648 | void GameEngine::enemy_dead(N5110 &lcd, Gamepad &pad){ |
RexRoshan | 0:99fa5a619081 | 649 | int e1_health = _e1.get_health(); |
RexRoshan | 0:99fa5a619081 | 650 | Vector2D e1_pos = _e1.get_enemy_pos(); |
RexRoshan | 0:99fa5a619081 | 651 | if (e1_health == 10){ |
RexRoshan | 0:99fa5a619081 | 652 | lcd.drawSprite(e1_pos.x-10,e1_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 653 | pad.tone(1000.0,0.5); |
RexRoshan | 0:99fa5a619081 | 654 | pad.tone(800.0,0.5); |
RexRoshan | 0:99fa5a619081 | 655 | pad.tone(600.0,0.5); |
RexRoshan | 0:99fa5a619081 | 656 | pad.tone(400.0,0.5); |
RexRoshan | 0:99fa5a619081 | 657 | // lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 658 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 659 | lcd.drawSprite(e1_pos.x-10,e1_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 660 | _e1.update(); |
RexRoshan | 0:99fa5a619081 | 661 | // wait(2.0); |
RexRoshan | 0:99fa5a619081 | 662 | _stage = 2; |
RexRoshan | 0:99fa5a619081 | 663 | _e1.add_health(); |
RexRoshan | 0:99fa5a619081 | 664 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 665 | } |
RexRoshan | 0:99fa5a619081 | 666 | |
RexRoshan | 0:99fa5a619081 | 667 | } |
RexRoshan | 0:99fa5a619081 | 668 | |
RexRoshan | 0:99fa5a619081 | 669 | void GameEngine::enemy2_dead(N5110 &lcd, Gamepad &pad){ |
RexRoshan | 0:99fa5a619081 | 670 | |
RexRoshan | 0:99fa5a619081 | 671 | int e21_health = _e21.get_health(); |
RexRoshan | 0:99fa5a619081 | 672 | int e22_health = _e22.get_health(); |
RexRoshan | 0:99fa5a619081 | 673 | |
RexRoshan | 0:99fa5a619081 | 674 | Vector2D e21_pos = _e21.get_enemy21_pos(); |
RexRoshan | 0:99fa5a619081 | 675 | Vector2D e22_pos = _e22.get_enemy22_pos(); |
RexRoshan | 0:99fa5a619081 | 676 | |
RexRoshan | 0:99fa5a619081 | 677 | if ((e21_health >= 10) && (e22_health >= 10)){ |
RexRoshan | 0:99fa5a619081 | 678 | lcd.drawSprite(e21_pos.x-10,e21_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 679 | lcd.drawSprite(e22_pos.x-10,e22_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 680 | pad.tone(1000.0,0.5); |
RexRoshan | 0:99fa5a619081 | 681 | pad.tone(800.0,0.5); |
RexRoshan | 0:99fa5a619081 | 682 | pad.tone(600.0,0.5); |
RexRoshan | 0:99fa5a619081 | 683 | pad.tone(400.0,0.5); |
RexRoshan | 0:99fa5a619081 | 684 | // lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 685 | wait(0.2); |
RexRoshan | 0:99fa5a619081 | 686 | lcd.drawSprite(e21_pos.x-10,e21_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 687 | lcd.drawSprite(e22_pos.x-10,e22_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 688 | _stage = 4; |
RexRoshan | 0:99fa5a619081 | 689 | _e21.add_health(); |
RexRoshan | 0:99fa5a619081 | 690 | _e22.add_health(); |
RexRoshan | 0:99fa5a619081 | 691 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 692 | } |
RexRoshan | 0:99fa5a619081 | 693 | |
RexRoshan | 0:99fa5a619081 | 694 | } |
RexRoshan | 1:45493d1d0689 | 695 | |
RexRoshan | 1:45493d1d0689 | 696 | void GameEngine::enemy3_dead(N5110 &lcd, Gamepad &pad){ |
RexRoshan | 1:45493d1d0689 | 697 | |
RexRoshan | 1:45493d1d0689 | 698 | int e3boss_health = _e3.get_health_boss(); |
RexRoshan | 1:45493d1d0689 | 699 | int e31_health = _e3.get_health_enemy1(); |
RexRoshan | 1:45493d1d0689 | 700 | int e32_health = _e3.get_health_enemy2(); |
RexRoshan | 1:45493d1d0689 | 701 | |
RexRoshan | 1:45493d1d0689 | 702 | Vector2D e3boss_pos = _e3.get_enemyboss_pos(); |
RexRoshan | 1:45493d1d0689 | 703 | Vector2D e31_pos = _e3.get_enemy1_pos(); |
RexRoshan | 1:45493d1d0689 | 704 | Vector2D e32_pos = _e3.get_enemy2_pos(); |
RexRoshan | 1:45493d1d0689 | 705 | |
RexRoshan | 1:45493d1d0689 | 706 | if ((e3boss_health >= 10) && (e31_health >= 10) && (e32_health >= 10)){ |
RexRoshan | 1:45493d1d0689 | 707 | lcd.drawSprite(e3boss_pos.x-10,e3boss_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 708 | lcd.drawSprite(e31_pos.x-10,e31_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 709 | lcd.drawSprite(e32_pos.x-10,e32_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 710 | pad.tone(1000.0,0.5); |
RexRoshan | 1:45493d1d0689 | 711 | pad.tone(800.0,0.5); |
RexRoshan | 1:45493d1d0689 | 712 | pad.tone(600.0,0.5); |
RexRoshan | 1:45493d1d0689 | 713 | pad.tone(400.0,0.5); |
RexRoshan | 1:45493d1d0689 | 714 | // lcd.refresh(); |
RexRoshan | 1:45493d1d0689 | 715 | wait(0.2); |
RexRoshan | 1:45493d1d0689 | 716 | lcd.drawSprite(e3boss_pos.x-10,e3boss_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 717 | lcd.drawSprite(e31_pos.x-10,e31_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 718 | lcd.drawSprite(e32_pos.x-10,e32_pos.y-10,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 719 | _stage = 6; |
RexRoshan | 1:45493d1d0689 | 720 | _e3.add_health_boss(); |
RexRoshan | 1:45493d1d0689 | 721 | _e3.add_health_enemy1(); |
RexRoshan | 1:45493d1d0689 | 722 | _e3.add_health_enemy2(); |
RexRoshan | 1:45493d1d0689 | 723 | lcd.refresh(); |
RexRoshan | 1:45493d1d0689 | 724 | } |
RexRoshan | 1:45493d1d0689 | 725 | |
RexRoshan | 1:45493d1d0689 | 726 | } |
RexRoshan | 1:45493d1d0689 | 727 | |
RexRoshan | 0:99fa5a619081 | 728 | void GameEngine::spacecraft_dead(N5110 &lcd, Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 729 | { |
RexRoshan | 0:99fa5a619081 | 730 | |
RexRoshan | 0:99fa5a619081 | 731 | int p1_health = _p1.get_health(); |
RexRoshan | 0:99fa5a619081 | 732 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 0:99fa5a619081 | 733 | |
RexRoshan | 0:99fa5a619081 | 734 | if (p1_health == 6){ |
RexRoshan | 0:99fa5a619081 | 735 | |
RexRoshan | 0:99fa5a619081 | 736 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 737 | pad.tone(1000.0,0.5); |
RexRoshan | 0:99fa5a619081 | 738 | pad.tone(800.0,0.5); |
RexRoshan | 0:99fa5a619081 | 739 | pad.tone(600.0,0.5); |
RexRoshan | 0:99fa5a619081 | 740 | pad.tone(400.0,0.5); |
RexRoshan | 0:99fa5a619081 | 741 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 742 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 743 | wait(0.1); |
RexRoshan | 0:99fa5a619081 | 744 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 745 | _p1.update_move(); |
RexRoshan | 0:99fa5a619081 | 746 | // wait(2.0); |
RexRoshan | 0:99fa5a619081 | 747 | _stage = 1; |
RexRoshan | 0:99fa5a619081 | 748 | _p1.add_health(); |
RexRoshan | 0:99fa5a619081 | 749 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 750 | } |
RexRoshan | 0:99fa5a619081 | 751 | |
RexRoshan | 0:99fa5a619081 | 752 | } |
RexRoshan | 0:99fa5a619081 | 753 | |
RexRoshan | 0:99fa5a619081 | 754 | void GameEngine::spacecraft2_dead(N5110 &lcd, Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 755 | { |
RexRoshan | 0:99fa5a619081 | 756 | |
RexRoshan | 0:99fa5a619081 | 757 | int p1_health = _p1.get_health(); |
RexRoshan | 0:99fa5a619081 | 758 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 0:99fa5a619081 | 759 | |
RexRoshan | 0:99fa5a619081 | 760 | if (p1_health == 6){ |
RexRoshan | 0:99fa5a619081 | 761 | |
RexRoshan | 0:99fa5a619081 | 762 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 763 | pad.tone(1000.0,0.5); |
RexRoshan | 0:99fa5a619081 | 764 | pad.tone(800.0,0.5); |
RexRoshan | 0:99fa5a619081 | 765 | pad.tone(600.0,0.5); |
RexRoshan | 0:99fa5a619081 | 766 | pad.tone(400.0,0.5); |
RexRoshan | 0:99fa5a619081 | 767 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 768 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 769 | wait(0.1); |
RexRoshan | 0:99fa5a619081 | 770 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 0:99fa5a619081 | 771 | _p1.update_move(); |
RexRoshan | 0:99fa5a619081 | 772 | // wait(2.0); |
RexRoshan | 0:99fa5a619081 | 773 | _stage = 3; |
RexRoshan | 0:99fa5a619081 | 774 | _p1.add_health(); |
RexRoshan | 0:99fa5a619081 | 775 | lcd.refresh(); |
RexRoshan | 0:99fa5a619081 | 776 | } |
RexRoshan | 0:99fa5a619081 | 777 | |
RexRoshan | 0:99fa5a619081 | 778 | } |
RexRoshan | 1:45493d1d0689 | 779 | |
RexRoshan | 1:45493d1d0689 | 780 | void GameEngine::spacecraft3_dead(N5110 &lcd, Gamepad &pad) |
RexRoshan | 1:45493d1d0689 | 781 | { |
RexRoshan | 1:45493d1d0689 | 782 | |
RexRoshan | 1:45493d1d0689 | 783 | int p1_health = _p1.get_health(); |
RexRoshan | 1:45493d1d0689 | 784 | Vector2D p1_pos = _p1.get_pos(); |
RexRoshan | 1:45493d1d0689 | 785 | |
RexRoshan | 1:45493d1d0689 | 786 | if (p1_health == 6){ |
RexRoshan | 1:45493d1d0689 | 787 | |
RexRoshan | 1:45493d1d0689 | 788 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 789 | pad.tone(1000.0,0.5); |
RexRoshan | 1:45493d1d0689 | 790 | pad.tone(800.0,0.5); |
RexRoshan | 1:45493d1d0689 | 791 | pad.tone(600.0,0.5); |
RexRoshan | 1:45493d1d0689 | 792 | pad.tone(400.0,0.5); |
RexRoshan | 1:45493d1d0689 | 793 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 794 | lcd.refresh(); |
RexRoshan | 1:45493d1d0689 | 795 | wait(0.1); |
RexRoshan | 1:45493d1d0689 | 796 | lcd.drawSprite(p1_pos.x-5,p1_pos.y-7,23,23,(int *)explosion); |
RexRoshan | 1:45493d1d0689 | 797 | _p1.update_move(); |
RexRoshan | 1:45493d1d0689 | 798 | // wait(2.0); |
RexRoshan | 1:45493d1d0689 | 799 | _stage = 5; |
RexRoshan | 1:45493d1d0689 | 800 | _p1.add_health(); |
RexRoshan | 1:45493d1d0689 | 801 | lcd.refresh(); |
RexRoshan | 1:45493d1d0689 | 802 | } |
RexRoshan | 1:45493d1d0689 | 803 | |
RexRoshan | 1:45493d1d0689 | 804 | } |
RexRoshan | 1:45493d1d0689 | 805 | |
RexRoshan | 0:99fa5a619081 | 806 | void GameEngine::check_mission_one(Gamepad &pad){ |
RexRoshan | 0:99fa5a619081 | 807 | |
RexRoshan | 0:99fa5a619081 | 808 | if (_stage == 1){ |
RexRoshan | 0:99fa5a619081 | 809 | pad.tone(233.0,0.5); |
RexRoshan | 0:99fa5a619081 | 810 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 811 | pad.tone(184.0,0.5); |
RexRoshan | 0:99fa5a619081 | 812 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 813 | pad.tone(174.0,2.0); |
RexRoshan | 0:99fa5a619081 | 814 | wait(1.0); |
RexRoshan | 0:99fa5a619081 | 815 | } else if (_stage == 2){ |
RexRoshan | 0:99fa5a619081 | 816 | |
RexRoshan | 0:99fa5a619081 | 817 | pad.leds_off(); |
RexRoshan | 0:99fa5a619081 | 818 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 819 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 820 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 821 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 822 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 823 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 824 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 825 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 826 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 827 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 828 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 829 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 830 | pad.tone(184.0,2.0); |
RexRoshan | 0:99fa5a619081 | 831 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 832 | } |
RexRoshan | 0:99fa5a619081 | 833 | } |
RexRoshan | 0:99fa5a619081 | 834 | |
RexRoshan | 0:99fa5a619081 | 835 | void GameEngine::check_mission_two(Gamepad &pad){ |
RexRoshan | 0:99fa5a619081 | 836 | |
RexRoshan | 0:99fa5a619081 | 837 | if (_stage == 3){ |
RexRoshan | 0:99fa5a619081 | 838 | pad.tone(233.0,0.5); |
RexRoshan | 0:99fa5a619081 | 839 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 840 | pad.tone(184.0,0.5); |
RexRoshan | 0:99fa5a619081 | 841 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 842 | pad.tone(174.0,2.0); |
RexRoshan | 0:99fa5a619081 | 843 | wait(1.0); |
RexRoshan | 0:99fa5a619081 | 844 | } else if (_stage == 4){ |
RexRoshan | 0:99fa5a619081 | 845 | |
RexRoshan | 0:99fa5a619081 | 846 | pad.leds_off(); |
RexRoshan | 0:99fa5a619081 | 847 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 848 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 849 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 850 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 851 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 852 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 853 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 854 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 855 | pad.tone(184.0,0.2); |
RexRoshan | 0:99fa5a619081 | 856 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 857 | pad.tone(233.0,0.2); |
RexRoshan | 0:99fa5a619081 | 858 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 859 | pad.tone(184.0,2.0); |
RexRoshan | 0:99fa5a619081 | 860 | wait(0.5); |
RexRoshan | 0:99fa5a619081 | 861 | } |
RexRoshan | 0:99fa5a619081 | 862 | } |
RexRoshan | 0:99fa5a619081 | 863 | |
RexRoshan | 1:45493d1d0689 | 864 | void GameEngine::check_mission_three(Gamepad &pad){ |
RexRoshan | 1:45493d1d0689 | 865 | |
RexRoshan | 1:45493d1d0689 | 866 | if (_stage == 5){ |
RexRoshan | 1:45493d1d0689 | 867 | pad.tone(233.0,0.5); |
RexRoshan | 1:45493d1d0689 | 868 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 869 | pad.tone(184.0,0.5); |
RexRoshan | 1:45493d1d0689 | 870 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 871 | pad.tone(174.0,2.0); |
RexRoshan | 1:45493d1d0689 | 872 | wait(1.0); |
RexRoshan | 1:45493d1d0689 | 873 | } else if (_stage == 6 ){ |
RexRoshan | 1:45493d1d0689 | 874 | |
RexRoshan | 1:45493d1d0689 | 875 | pad.leds_off(); |
RexRoshan | 1:45493d1d0689 | 876 | pad.tone(184.0,0.2); |
RexRoshan | 1:45493d1d0689 | 877 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 878 | pad.tone(233.0,0.2); |
RexRoshan | 1:45493d1d0689 | 879 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 880 | pad.tone(184.0,0.2); |
RexRoshan | 1:45493d1d0689 | 881 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 882 | pad.tone(233.0,0.2); |
RexRoshan | 1:45493d1d0689 | 883 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 884 | pad.tone(184.0,0.2); |
RexRoshan | 1:45493d1d0689 | 885 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 886 | pad.tone(233.0,0.2); |
RexRoshan | 1:45493d1d0689 | 887 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 888 | pad.tone(184.0,2.0); |
RexRoshan | 1:45493d1d0689 | 889 | wait(0.5); |
RexRoshan | 1:45493d1d0689 | 890 | } |
RexRoshan | 1:45493d1d0689 | 891 | } |
RexRoshan | 0:99fa5a619081 | 892 | |
RexRoshan | 0:99fa5a619081 | 893 | void GameEngine::draw_enemy_health(N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 894 | { |
RexRoshan | 0:99fa5a619081 | 895 | // get health of the enemy |
RexRoshan | 0:99fa5a619081 | 896 | int e1_health = _e1.get_health(); |
RexRoshan | 0:99fa5a619081 | 897 | |
RexRoshan | 3:bf9624e5b0c3 | 898 | if (e21_health < 10){ |
RexRoshan | 1:45493d1d0689 | 899 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 900 | lcd.drawRect(62,42,20-2*e1_health,4,FILL_BLACK); |
RexRoshan | 3:bf9624e5b0c3 | 901 | } |
RexRoshan | 3:bf9624e5b0c3 | 902 | else { |
RexRoshan | 3:bf9624e5b0c3 | 903 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 3:bf9624e5b0c3 | 904 | } |
RexRoshan | 0:99fa5a619081 | 905 | |
RexRoshan | 0:99fa5a619081 | 906 | |
RexRoshan | 0:99fa5a619081 | 907 | } |
RexRoshan | 0:99fa5a619081 | 908 | |
RexRoshan | 0:99fa5a619081 | 909 | void GameEngine::draw_enemy21_health(N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 910 | { |
RexRoshan | 0:99fa5a619081 | 911 | // get health of the enemy |
RexRoshan | 0:99fa5a619081 | 912 | int e21_health = _e21.get_health(); |
RexRoshan | 0:99fa5a619081 | 913 | |
RexRoshan | 0:99fa5a619081 | 914 | if (e21_health < 10){ |
RexRoshan | 1:45493d1d0689 | 915 | lcd.drawRect(2,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 916 | lcd.drawRect(2,42,20-2*e21_health,4,FILL_BLACK); |
RexRoshan | 0:99fa5a619081 | 917 | } |
RexRoshan | 0:99fa5a619081 | 918 | else { |
RexRoshan | 1:45493d1d0689 | 919 | lcd.drawRect(2,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 0:99fa5a619081 | 920 | } |
RexRoshan | 0:99fa5a619081 | 921 | } |
RexRoshan | 0:99fa5a619081 | 922 | |
RexRoshan | 0:99fa5a619081 | 923 | void GameEngine::draw_enemy22_health(N5110 &lcd) |
RexRoshan | 0:99fa5a619081 | 924 | { |
RexRoshan | 0:99fa5a619081 | 925 | // get health of the enemy |
RexRoshan | 0:99fa5a619081 | 926 | int e22_health = _e22.get_health(); |
RexRoshan | 0:99fa5a619081 | 927 | |
RexRoshan | 0:99fa5a619081 | 928 | if (e22_health < 10){ |
RexRoshan | 1:45493d1d0689 | 929 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 930 | lcd.drawRect(62,42,20-2*e22_health,4,FILL_BLACK); |
RexRoshan | 0:99fa5a619081 | 931 | } |
RexRoshan | 0:99fa5a619081 | 932 | else { |
RexRoshan | 1:45493d1d0689 | 933 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 0:99fa5a619081 | 934 | } |
RexRoshan | 0:99fa5a619081 | 935 | |
RexRoshan | 0:99fa5a619081 | 936 | } |
RexRoshan | 0:99fa5a619081 | 937 | |
RexRoshan | 1:45493d1d0689 | 938 | void GameEngine::draw_enemyboss_health(N5110 &lcd) |
RexRoshan | 1:45493d1d0689 | 939 | { |
RexRoshan | 1:45493d1d0689 | 940 | // get health of the enemy |
RexRoshan | 1:45493d1d0689 | 941 | int e3boss_health = _e3.get_health_boss(); |
RexRoshan | 1:45493d1d0689 | 942 | int e3enemy1_health = _e3.get_health_enemy1(); |
RexRoshan | 1:45493d1d0689 | 943 | int e3enemy2_health = _e3.get_health_enemy2(); |
RexRoshan | 1:45493d1d0689 | 944 | |
RexRoshan | 1:45493d1d0689 | 945 | if (e3boss_health < 10){ |
RexRoshan | 1:45493d1d0689 | 946 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 947 | lcd.drawRect(62,42,20-2*e3boss_health,4,FILL_BLACK); |
RexRoshan | 1:45493d1d0689 | 948 | } |
RexRoshan | 1:45493d1d0689 | 949 | else { |
RexRoshan | 1:45493d1d0689 | 950 | lcd.drawRect(62,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 951 | } |
RexRoshan | 1:45493d1d0689 | 952 | if (e3enemy1_health < 10){ |
RexRoshan | 1:45493d1d0689 | 953 | lcd.drawRect(2,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 954 | lcd.drawRect(2,42,20-2*e3enemy1_health,4,FILL_BLACK); |
RexRoshan | 1:45493d1d0689 | 955 | } |
RexRoshan | 1:45493d1d0689 | 956 | else { |
RexRoshan | 1:45493d1d0689 | 957 | lcd.drawRect(2,42,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 958 | } |
RexRoshan | 1:45493d1d0689 | 959 | if (e3enemy2_health < 10){ |
RexRoshan | 1:45493d1d0689 | 960 | lcd.drawRect(62,2,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 961 | lcd.drawRect(62,2,20-2*e3enemy2_health,4,FILL_BLACK); |
RexRoshan | 1:45493d1d0689 | 962 | } |
RexRoshan | 1:45493d1d0689 | 963 | else { |
RexRoshan | 1:45493d1d0689 | 964 | lcd.drawRect(62,2,20,4,FILL_TRANSPARENT); |
RexRoshan | 1:45493d1d0689 | 965 | } |
RexRoshan | 1:45493d1d0689 | 966 | } |
RexRoshan | 1:45493d1d0689 | 967 | |
RexRoshan | 0:99fa5a619081 | 968 | void GameEngine::draw_spacecraft_health(Gamepad &pad) |
RexRoshan | 0:99fa5a619081 | 969 | { |
RexRoshan | 0:99fa5a619081 | 970 | //get the health of the spacecraft |
RexRoshan | 0:99fa5a619081 | 971 | int p1_health = _p1.get_health(); |
RexRoshan | 0:99fa5a619081 | 972 | |
RexRoshan | 0:99fa5a619081 | 973 | if (p1_health == 0){ |
RexRoshan | 0:99fa5a619081 | 974 | pad.leds_on(); |
RexRoshan | 0:99fa5a619081 | 975 | }else if (p1_health == 1){ |
RexRoshan | 0:99fa5a619081 | 976 | pad.led(1,0); |
RexRoshan | 0:99fa5a619081 | 977 | pad.led(2,1); |
RexRoshan | 0:99fa5a619081 | 978 | pad.led(3,1); |
RexRoshan | 0:99fa5a619081 | 979 | pad.led(4,1); |
RexRoshan | 0:99fa5a619081 | 980 | pad.led(5,1); |
RexRoshan | 0:99fa5a619081 | 981 | pad.led(6,1); |
RexRoshan | 0:99fa5a619081 | 982 | |
RexRoshan | 0:99fa5a619081 | 983 | }else if (p1_health == 2){ |
RexRoshan | 0:99fa5a619081 | 984 | pad.led(1,0); |
RexRoshan | 0:99fa5a619081 | 985 | pad.led(2,0); |
RexRoshan | 0:99fa5a619081 | 986 | pad.led(3,1); |
RexRoshan | 0:99fa5a619081 | 987 | pad.led(4,1); |
RexRoshan | 0:99fa5a619081 | 988 | pad.led(5,1); |
RexRoshan | 0:99fa5a619081 | 989 | pad.led(6,1); |
RexRoshan | 0:99fa5a619081 | 990 | }else if (p1_health == 3){ |
RexRoshan | 0:99fa5a619081 | 991 | pad.led(1,0); |
RexRoshan | 0:99fa5a619081 | 992 | pad.led(2,0); |
RexRoshan | 0:99fa5a619081 | 993 | pad.led(3,0); |
RexRoshan | 0:99fa5a619081 | 994 | pad.led(4,1); |
RexRoshan | 0:99fa5a619081 | 995 | pad.led(5,1); |
RexRoshan | 0:99fa5a619081 | 996 | pad.led(6,1); |
RexRoshan | 0:99fa5a619081 | 997 | |
RexRoshan | 0:99fa5a619081 | 998 | }else if (p1_health == 4){ |
RexRoshan | 0:99fa5a619081 | 999 | pad.led(1,0); |
RexRoshan | 0:99fa5a619081 | 1000 | pad.led(2,0); |
RexRoshan | 0:99fa5a619081 | 1001 | pad.led(3,0); |
RexRoshan | 0:99fa5a619081 | 1002 | pad.led(4,0); |
RexRoshan | 0:99fa5a619081 | 1003 | pad.led(5,1); |
RexRoshan | 0:99fa5a619081 | 1004 | pad.led(6,1); |
RexRoshan | 0:99fa5a619081 | 1005 | |
RexRoshan | 0:99fa5a619081 | 1006 | }else if (p1_health == 5){ |
RexRoshan | 0:99fa5a619081 | 1007 | pad.led(1,0); |
RexRoshan | 0:99fa5a619081 | 1008 | pad.led(2,0); |
RexRoshan | 0:99fa5a619081 | 1009 | pad.led(3,0); |
RexRoshan | 0:99fa5a619081 | 1010 | pad.led(4,0); |
RexRoshan | 0:99fa5a619081 | 1011 | pad.led(5,0); |
RexRoshan | 0:99fa5a619081 | 1012 | pad.led(6,1); |
RexRoshan | 0:99fa5a619081 | 1013 | |
RexRoshan | 0:99fa5a619081 | 1014 | } else { |
RexRoshan | 0:99fa5a619081 | 1015 | pad.leds_off(); |
RexRoshan | 0:99fa5a619081 | 1016 | } |
RexRoshan | 0:99fa5a619081 | 1017 | |
RexRoshan | 0:99fa5a619081 | 1018 | } |
RexRoshan | 0:99fa5a619081 | 1019 | |
RexRoshan | 0:99fa5a619081 | 1020 | int GameEngine::get_game_stage() { |
RexRoshan | 0:99fa5a619081 | 1021 | int stage = _stage; |
RexRoshan | 0:99fa5a619081 | 1022 | return stage; |
RexRoshan | 0:99fa5a619081 | 1023 | } |
RexRoshan | 0:99fa5a619081 | 1024 | |
RexRoshan | 0:99fa5a619081 | 1025 | int GameEngine::restart_game_stage() { |
RexRoshan | 0:99fa5a619081 | 1026 | int stage = _stage; |
RexRoshan | 0:99fa5a619081 | 1027 | |
RexRoshan | 0:99fa5a619081 | 1028 | stage = 0; |
RexRoshan | 0:99fa5a619081 | 1029 | return stage; |
RexRoshan | 0:99fa5a619081 | 1030 | } |