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