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@7:5bb5cde8951a, 2020-04-26 (annotated)
- Committer:
- ZhongYufan
- Date:
- Sun Apr 26 07:30:22 2020 +0000
- Revision:
- 7:5bb5cde8951a
- Parent:
- 1:9c7bb3db32bc
- Child:
- 8:c5969685cf02
complete ver1.0
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 | 7:5bb5cde8951a | 28 | #define MONSTER_SPEED 1 |
| ZhongYufan | 7:5bb5cde8951a | 29 | #define GOLD_NUM 9 |
| ZhongYufan | 1:9c7bb3db32bc | 30 | /////////////// structs ///////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 31 | struct UserInput { |
| ZhongYufan | 1:9c7bb3db32bc | 32 | Direction d; |
| ZhongYufan | 1:9c7bb3db32bc | 33 | float mag; |
| ZhongYufan | 1:9c7bb3db32bc | 34 | }; |
| ZhongYufan | 1:9c7bb3db32bc | 35 | /////////////// objects /////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 36 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
| ZhongYufan | 1:9c7bb3db32bc | 37 | Gamepad pad; |
| ZhongYufan | 7:5bb5cde8951a | 38 | MinerEngine miner; |
| ZhongYufan | 1:9c7bb3db32bc | 39 | |
| ZhongYufan | 1:9c7bb3db32bc | 40 | ///////////// prototypes /////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 41 | void init(); |
| ZhongYufan | 1:9c7bb3db32bc | 42 | void update_game(UserInput input); |
| ZhongYufan | 7:5bb5cde8951a | 43 | |
| ZhongYufan | 1:9c7bb3db32bc | 44 | void welcome(); |
| ZhongYufan | 0:edf120185e12 | 45 | |
| ZhongYufan | 1:9c7bb3db32bc | 46 | ///////////// functions //////////////// |
| ZhongYufan | 1:9c7bb3db32bc | 47 | int main() |
| ZhongYufan | 1:9c7bb3db32bc | 48 | { |
| ZhongYufan | 1:9c7bb3db32bc | 49 | |
| ZhongYufan | 1:9c7bb3db32bc | 50 | #ifdef WITH_TESTING |
| ZhongYufan | 1:9c7bb3db32bc | 51 | int number_of_failures = run_all_tests(); |
| ZhongYufan | 1:9c7bb3db32bc | 52 | |
| ZhongYufan | 1:9c7bb3db32bc | 53 | if(number_of_failures > 0) return number_of_failures; |
| ZhongYufan | 1:9c7bb3db32bc | 54 | #endif |
| ZhongYufan | 1:9c7bb3db32bc | 55 | |
| ZhongYufan | 1:9c7bb3db32bc | 56 | int fps = 8; // frames per second |
| ZhongYufan | 1:9c7bb3db32bc | 57 | |
| ZhongYufan | 1:9c7bb3db32bc | 58 | init(); // initialise and then display welcome screen... |
| ZhongYufan | 1:9c7bb3db32bc | 59 | welcome(); // waiting for the user to start |
| ZhongYufan | 7:5bb5cde8951a | 60 | // 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 | 7:5bb5cde8951a | 66 | |
| ZhongYufan | 7:5bb5cde8951a | 67 | miner.state_switch(pad,lcd); |
| ZhongYufan | 1:9c7bb3db32bc | 68 | wait(1.0f/fps); |
| ZhongYufan | 1:9c7bb3db32bc | 69 | } |
| ZhongYufan | 1:9c7bb3db32bc | 70 | } |
| ZhongYufan | 0:edf120185e12 | 71 | |
| ZhongYufan | 1:9c7bb3db32bc | 72 | // initialies all classes and libraries |
| ZhongYufan | 1:9c7bb3db32bc | 73 | void init() |
| ZhongYufan | 0:edf120185e12 | 74 | { |
| ZhongYufan | 1:9c7bb3db32bc | 75 | // need to initialise LCD and Gamepad |
| ZhongYufan | 1:9c7bb3db32bc | 76 | lcd.init(); |
| ZhongYufan | 1:9c7bb3db32bc | 77 | pad.init(); |
| ZhongYufan | 1:9c7bb3db32bc | 78 | |
| ZhongYufan | 1:9c7bb3db32bc | 79 | // initialise the game with correct claw and winch sizes |
| ZhongYufan | 7:5bb5cde8951a | 80 | miner.init(WINCH_WIDTH,WINCH_HEIGHT,GOLD_NUM,MONSTER_SPEED); |
| ZhongYufan | 1:9c7bb3db32bc | 81 | |
| ZhongYufan | 1:9c7bb3db32bc | 82 | } |
| ZhongYufan | 1:9c7bb3db32bc | 83 | |
| ZhongYufan | 1:9c7bb3db32bc | 84 | // this function draws each frame on the LCD |
| ZhongYufan | 7:5bb5cde8951a | 85 | |
| ZhongYufan | 1:9c7bb3db32bc | 86 | |
| ZhongYufan | 1:9c7bb3db32bc | 87 | // simple splash screen displayed on start-up |
| ZhongYufan | 1:9c7bb3db32bc | 88 | void welcome() { |
| ZhongYufan | 1:9c7bb3db32bc | 89 | |
| ZhongYufan | 1:9c7bb3db32bc | 90 | miner.welcome(pad,lcd); |
| ZhongYufan | 7:5bb5cde8951a | 91 | //miner.menu(pad,lcd); |
| ZhongYufan | 1:9c7bb3db32bc | 92 | |
| ZhongYufan | 0:edf120185e12 | 93 | } |