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: Enemy1 Enemy2 Enemy3 Enemy4 Enemy5 Enemy6 Engine Friendly Gamepad N5110 Rocket Stats mbed
main.cpp@10:34fa0a4f5513, 2017-05-04 (annotated)
- Committer:
- musallambseiso
- Date:
- Thu May 04 11:29:56 2017 +0000
- Revision:
- 10:34fa0a4f5513
- Parent:
- 9:51a357a1178c
Final version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
musallambseiso | 0:f59d874f3f14 | 1 | #include "mbed.h" |
musallambseiso | 0:f59d874f3f14 | 2 | #include "Gamepad.h" |
musallambseiso | 0:f59d874f3f14 | 3 | #include "N5110.h" |
musallambseiso | 0:f59d874f3f14 | 4 | #include "Engine.h" |
musallambseiso | 0:f59d874f3f14 | 5 | |
musallambseiso | 9:51a357a1178c | 6 | #define LEVEL_ONE 2 |
musallambseiso | 0:f59d874f3f14 | 7 | |
musallambseiso | 0:f59d874f3f14 | 8 | struct UserInput { |
musallambseiso | 0:f59d874f3f14 | 9 | Direction d; |
musallambseiso | 0:f59d874f3f14 | 10 | float mag; |
musallambseiso | 0:f59d874f3f14 | 11 | }; |
musallambseiso | 0:f59d874f3f14 | 12 | |
musallambseiso | 9:51a357a1178c | 13 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // LCD pin connections. |
musallambseiso | 9:51a357a1178c | 14 | Gamepad pad; // Gamepad object. |
musallambseiso | 9:51a357a1178c | 15 | Engine engine; // Engine object. |
musallambseiso | 9:51a357a1178c | 16 | |
musallambseiso | 9:51a357a1178c | 17 | |
musallambseiso | 9:51a357a1178c | 18 | /** Initialize |
musallambseiso | 9:51a357a1178c | 19 | * |
musallambseiso | 9:51a357a1178c | 20 | * Initializes LCD, gamepad, and engine. |
musallambseiso | 9:51a357a1178c | 21 | */ |
musallambseiso | 9:51a357a1178c | 22 | void init(); |
musallambseiso | 9:51a357a1178c | 23 | |
musallambseiso | 0:f59d874f3f14 | 24 | |
musallambseiso | 9:51a357a1178c | 25 | /** Generate |
musallambseiso | 9:51a357a1178c | 26 | * |
musallambseiso | 9:51a357a1178c | 27 | * Draws all the elements onto the LCD, from the engine. |
musallambseiso | 9:51a357a1178c | 28 | */ |
musallambseiso | 3:9d0428a29f41 | 29 | void generate(); |
musallambseiso | 9:51a357a1178c | 30 | |
musallambseiso | 9:51a357a1178c | 31 | |
musallambseiso | 9:51a357a1178c | 32 | /** Welcome Screen |
musallambseiso | 9:51a357a1178c | 33 | * |
musallambseiso | 9:51a357a1178c | 34 | * Prints the welcome message to the LCD, and waits for the start button to be pressed |
musallambseiso | 9:51a357a1178c | 35 | * to start the game. |
musallambseiso | 9:51a357a1178c | 36 | */ |
musallambseiso | 4:9660fc7ede8c | 37 | void welcome(); |
musallambseiso | 0:f59d874f3f14 | 38 | |
musallambseiso | 9:51a357a1178c | 39 | |
musallambseiso | 0:f59d874f3f14 | 40 | int main() |
musallambseiso | 0:f59d874f3f14 | 41 | { |
musallambseiso | 9:51a357a1178c | 42 | int fps = 14; // Framerate. |
musallambseiso | 0:f59d874f3f14 | 43 | |
musallambseiso | 9:51a357a1178c | 44 | init(); // Initialization. |
musallambseiso | 9:51a357a1178c | 45 | welcome(); // Welcome screen. |
musallambseiso | 0:f59d874f3f14 | 46 | wait(1.0f/fps); |
musallambseiso | 0:f59d874f3f14 | 47 | |
musallambseiso | 9:51a357a1178c | 48 | |
musallambseiso | 9:51a357a1178c | 49 | // Game loop: |
musallambseiso | 9:51a357a1178c | 50 | while (1) { |
musallambseiso | 9:51a357a1178c | 51 | engine.read_input(pad); // Reads gamepad input to log changes in analog stick movement. |
musallambseiso | 9:51a357a1178c | 52 | engine.check_all(lcd, pad); // Checking method for all the elements, from the engine. |
musallambseiso | 9:51a357a1178c | 53 | engine.update_all(lcd, pad); // Updating method for all the elements, from the engine. |
musallambseiso | 9:51a357a1178c | 54 | generate(); // Drawing. |
musallambseiso | 9:51a357a1178c | 55 | engine.shoot_rocket(lcd, pad); // Rocket shooting method, from the engine. |
musallambseiso | 9:51a357a1178c | 56 | engine.shoot_star(lcd, pad); // Star shooting method, from the engine. |
musallambseiso | 0:f59d874f3f14 | 57 | lcd.refresh(); |
musallambseiso | 4:9660fc7ede8c | 58 | wait(1.0f/fps); |
musallambseiso | 0:f59d874f3f14 | 59 | } |
musallambseiso | 0:f59d874f3f14 | 60 | } |
musallambseiso | 0:f59d874f3f14 | 61 | |
musallambseiso | 9:51a357a1178c | 62 | |
musallambseiso | 9:51a357a1178c | 63 | // Initialization: |
musallambseiso | 9:51a357a1178c | 64 | |
musallambseiso | 0:f59d874f3f14 | 65 | void init() |
musallambseiso | 0:f59d874f3f14 | 66 | { |
musallambseiso | 9:51a357a1178c | 67 | lcd.init(); // LCD initialization. |
musallambseiso | 9:51a357a1178c | 68 | pad.init(); // Gamepad initialization. |
musallambseiso | 9:51a357a1178c | 69 | engine.init(LEVEL_ONE, lcd, pad, 0, 0, 3, true, 3); // Engine initialization, using initial values for variables. |
musallambseiso | 0:f59d874f3f14 | 70 | } |
musallambseiso | 0:f59d874f3f14 | 71 | |
musallambseiso | 9:51a357a1178c | 72 | |
musallambseiso | 9:51a357a1178c | 73 | // Draws everything: |
musallambseiso | 9:51a357a1178c | 74 | |
musallambseiso | 3:9d0428a29f41 | 75 | void generate() |
musallambseiso | 0:f59d874f3f14 | 76 | { |
musallambseiso | 0:f59d874f3f14 | 77 | lcd.clear(); |
musallambseiso | 9:51a357a1178c | 78 | engine.draw_all(lcd); // Draws all the elements to the LCD screen, from the engine. |
musallambseiso | 0:f59d874f3f14 | 79 | lcd.refresh(); |
musallambseiso | 4:9660fc7ede8c | 80 | } |
musallambseiso | 4:9660fc7ede8c | 81 | |
musallambseiso | 9:51a357a1178c | 82 | |
musallambseiso | 9:51a357a1178c | 83 | // Draws the welcome screen: |
musallambseiso | 9:51a357a1178c | 84 | |
musallambseiso | 4:9660fc7ede8c | 85 | void welcome() { |
musallambseiso | 4:9660fc7ede8c | 86 | |
musallambseiso | 10:34fa0a4f5513 | 87 | lcd.printString(" NEMESIS ",0,0); |
musallambseiso | 10:34fa0a4f5513 | 88 | lcd.printString("A&B: shoot",0,2); |
musallambseiso | 10:34fa0a4f5513 | 89 | lcd.printString("R&L: LCD mode",0,3); |
musallambseiso | 10:34fa0a4f5513 | 90 | lcd.printString("START: pause",0,4); |
musallambseiso | 10:34fa0a4f5513 | 91 | lcd.printString(" Press Start! ",0,5); |
musallambseiso | 8:ad3857f100fe | 92 | |
musallambseiso | 4:9660fc7ede8c | 93 | lcd.refresh(); |
musallambseiso | 4:9660fc7ede8c | 94 | |
musallambseiso | 4:9660fc7ede8c | 95 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
musallambseiso | 9:51a357a1178c | 96 | wait(0.1); // Waits till the start button is pressed. |
musallambseiso | 4:9660fc7ede8c | 97 | } |
musallambseiso | 0:f59d874f3f14 | 98 | } |