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.
main.cpp@1:9c7bb3db32bc, 2020-04-22 (annotated)
- Committer:
- ZhongYufan
- Date:
- Wed Apr 22 15:52:04 2020 +0000
- Revision:
- 1:9c7bb3db32bc
- Parent:
- 0:edf120185e12
- Child:
- 7:5bb5cde8951a
claw, gold, winch, monster finished (commit test)
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ZhongYufan | 0:edf120185e12 | 1 | /* |
| ZhongYufan | 1:9c7bb3db32bc | 2 | ELEC2645 Embedded Systems Project |
| ZhongYufan | 0:edf120185e12 | 3 | School of Electronic & Electrical Engineering |
| ZhongYufan | 0:edf120185e12 | 4 | University of Leeds |
| ZhongYufan | 0:edf120185e12 | 5 | |
| ZhongYufan | 0:edf120185e12 | 6 | Name: Yufan Zhong |
| ZhongYufan | 0:edf120185e12 | 7 | Username: el17yz |
| ZhongYufan | 0:edf120185e12 | 8 | Student ID Number: 201199708 |
| ZhongYufan | 1:9c7bb3db32bc | 9 | Date: May,2020 |
| ZhongYufan | 1:9c7bb3db32bc | 10 | |
| ZhongYufan | 1:9c7bb3db32bc | 11 | */ |
| ZhongYufan | 1:9c7bb3db32bc | 12 | |
| ZhongYufan | 1:9c7bb3db32bc | 13 | |
| ZhongYufan | 1:9c7bb3db32bc | 14 | ///////// pre-processor directives //////// |
| ZhongYufan | 1:9c7bb3db32bc | 15 | #include "mbed.h" |
| ZhongYufan | 1:9c7bb3db32bc | 16 | #include "Gamepad.h" |
| ZhongYufan | 1:9c7bb3db32bc | 17 | #include "N5110.h" |
| ZhongYufan | 1:9c7bb3db32bc | 18 | #include "MinerEngine.h" |
| ZhongYufan | 1:9c7bb3db32bc | 19 | |
| ZhongYufan | 1:9c7bb3db32bc | 20 | #ifdef WITH_TESTING |
| ZhongYufan | 1:9c7bb3db32bc | 21 | # include "tests.h" |
| ZhongYufan | 1:9c7bb3db32bc | 22 | #endif |
| ZhongYufan | 1:9c7bb3db32bc | 23 | |
| ZhongYufan | 1:9c7bb3db32bc | 24 | #define WINCH_WIDTH 12 |
| ZhongYufan | 1:9c7bb3db32bc | 25 | #define WINCH_HEIGHT 6 |
| ZhongYufan | 1:9c7bb3db32bc | 26 | #define CLAW_SPEED 3 |
| ZhongYufan | 1:9c7bb3db32bc | 27 | #define MONSTER_SIZE 3 |
| ZhongYufan | 0:edf120185e12 | 28 | |
| ZhongYufan | 1:9c7bb3db32bc | 29 | /////////////// structs ///////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 30 | struct UserInput { |
| ZhongYufan | 1:9c7bb3db32bc | 31 | Direction d; |
| ZhongYufan | 1:9c7bb3db32bc | 32 | float mag; |
| ZhongYufan | 1:9c7bb3db32bc | 33 | }; |
| ZhongYufan | 1:9c7bb3db32bc | 34 | /////////////// objects /////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 35 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
| ZhongYufan | 1:9c7bb3db32bc | 36 | Gamepad pad; |
| ZhongYufan | 1:9c7bb3db32bc | 37 | MinerEngine Miner; |
| ZhongYufan | 1:9c7bb3db32bc | 38 | |
| ZhongYufan | 1:9c7bb3db32bc | 39 | ///////////// prototypes /////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 40 | void init(); |
| ZhongYufan | 1:9c7bb3db32bc | 41 | void update_game(UserInput input); |
| ZhongYufan | 1:9c7bb3db32bc | 42 | void render(); |
| ZhongYufan | 1:9c7bb3db32bc | 43 | void welcome(); |
| ZhongYufan | 0:edf120185e12 | 44 | |
| ZhongYufan | 1:9c7bb3db32bc | 45 | ///////////// functions //////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 46 | int main() |
| ZhongYufan | 1:9c7bb3db32bc | 47 | { |
| ZhongYufan | 1:9c7bb3db32bc | 48 | |
| ZhongYufan | 1:9c7bb3db32bc | 49 | #ifdef WITH_TESTING |
| ZhongYufan | 1:9c7bb3db32bc | 50 | int number_of_failures = run_all_tests(); |
| ZhongYufan | 1:9c7bb3db32bc | 51 | |
| ZhongYufan | 1:9c7bb3db32bc | 52 | if(number_of_failures > 0) return number_of_failures; |
| ZhongYufan | 1:9c7bb3db32bc | 53 | #endif |
| ZhongYufan | 1:9c7bb3db32bc | 54 | |
| ZhongYufan | 1:9c7bb3db32bc | 55 | int fps = 8; // frames per second |
| ZhongYufan | 1:9c7bb3db32bc | 56 | |
| ZhongYufan | 1:9c7bb3db32bc | 57 | init(); // initialise and then display welcome screen... |
| ZhongYufan | 1:9c7bb3db32bc | 58 | welcome(); // waiting for the user to start |
| ZhongYufan | 1:9c7bb3db32bc | 59 | |
| ZhongYufan | 1:9c7bb3db32bc | 60 | render(); // first draw the initial frame |
| ZhongYufan | 1:9c7bb3db32bc | 61 | wait(1.0f/fps); // and wait for one frame period |
| ZhongYufan | 0:edf120185e12 | 62 | |
| ZhongYufan | 0:edf120185e12 | 63 | |
| ZhongYufan | 1:9c7bb3db32bc | 64 | // game loop - read input, update the game state and render the display |
| ZhongYufan | 1:9c7bb3db32bc | 65 | while (1) { |
| ZhongYufan | 1:9c7bb3db32bc | 66 | miner.read_input(pad); |
| ZhongYufan | 1:9c7bb3db32bc | 67 | miner.update(pad); |
| ZhongYufan | 1:9c7bb3db32bc | 68 | render(); |
| ZhongYufan | 1:9c7bb3db32bc | 69 | wait(1.0f/fps); |
| ZhongYufan | 1:9c7bb3db32bc | 70 | } |
| ZhongYufan | 1:9c7bb3db32bc | 71 | } |
| ZhongYufan | 0:edf120185e12 | 72 | |
| ZhongYufan | 1:9c7bb3db32bc | 73 | // initialies all classes and libraries |
| ZhongYufan | 1:9c7bb3db32bc | 74 | void init() |
| ZhongYufan | 0:edf120185e12 | 75 | { |
| ZhongYufan | 1:9c7bb3db32bc | 76 | // need to initialise LCD and Gamepad |
| ZhongYufan | 1:9c7bb3db32bc | 77 | lcd.init(); |
| ZhongYufan | 1:9c7bb3db32bc | 78 | pad.init(); |
| ZhongYufan | 1:9c7bb3db32bc | 79 | |
| ZhongYufan | 1:9c7bb3db32bc | 80 | // initialise the game with correct claw and winch sizes |
| ZhongYufan | 1:9c7bb3db32bc | 81 | miner.init(WINCH_WIDTH,WINCH_HEIGHT,MONSTER_SIZE,CLAW_SPEED); |
| ZhongYufan | 1:9c7bb3db32bc | 82 | |
| ZhongYufan | 1:9c7bb3db32bc | 83 | } |
| ZhongYufan | 1:9c7bb3db32bc | 84 | |
| ZhongYufan | 1:9c7bb3db32bc | 85 | // this function draws each frame on the LCD |
| ZhongYufan | 1:9c7bb3db32bc | 86 | void render() |
| ZhongYufan | 1:9c7bb3db32bc | 87 | { |
| ZhongYufan | 1:9c7bb3db32bc | 88 | // clear screen, re-draw and refresh |
| ZhongYufan | 1:9c7bb3db32bc | 89 | lcd.clear(); |
| ZhongYufan | 1:9c7bb3db32bc | 90 | miner.draw(lcd); |
| ZhongYufan | 1:9c7bb3db32bc | 91 | lcd.refresh(); |
| ZhongYufan | 1:9c7bb3db32bc | 92 | } |
| ZhongYufan | 1:9c7bb3db32bc | 93 | |
| ZhongYufan | 1:9c7bb3db32bc | 94 | // simple splash screen displayed on start-up |
| ZhongYufan | 1:9c7bb3db32bc | 95 | void welcome() { |
| ZhongYufan | 1:9c7bb3db32bc | 96 | |
| ZhongYufan | 1:9c7bb3db32bc | 97 | miner.welcome(pad,lcd); |
| ZhongYufan | 1:9c7bb3db32bc | 98 | miner.menu(pad,lcd); |
| ZhongYufan | 1:9c7bb3db32bc | 99 | |
| ZhongYufan | 0:edf120185e12 | 100 | } |