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.
MinerEngine/MinerEngine.h@21:7b6da5796f47, 2020-05-13 (annotated)
- Committer:
- ZhongYufan
- Date:
- Wed May 13 14:59:01 2020 +0000
- Revision:
- 21:7b6da5796f47
- Parent:
- 18:d4fccdf8d90e
Final Submission. I have read and agreed with Statement of Academic Integrity
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ZhongYufan | 1:9c7bb3db32bc | 1 | #ifndef MINERENGINE_H |
ZhongYufan | 1:9c7bb3db32bc | 2 | #define MINERENGINE_H |
ZhongYufan | 1:9c7bb3db32bc | 3 | |
ZhongYufan | 1:9c7bb3db32bc | 4 | #include "mbed.h" |
ZhongYufan | 1:9c7bb3db32bc | 5 | #include "N5110.h" |
ZhongYufan | 1:9c7bb3db32bc | 6 | #include "Gamepad.h" |
ZhongYufan | 1:9c7bb3db32bc | 7 | #include "Claw.h" |
ZhongYufan | 1:9c7bb3db32bc | 8 | #include "Winch.h" |
ZhongYufan | 1:9c7bb3db32bc | 9 | #include "Monster.h" |
ZhongYufan | 1:9c7bb3db32bc | 10 | #include "Gold.h" |
ZhongYufan | 1:9c7bb3db32bc | 11 | |
ZhongYufan | 1:9c7bb3db32bc | 12 | // gap from edge of screen |
ZhongYufan | 1:9c7bb3db32bc | 13 | #define GAP 2 |
ZhongYufan | 1:9c7bb3db32bc | 14 | |
ZhongYufan | 16:e3ecfcd2a389 | 15 | /** MinerEngine Class |
ZhongYufan | 16:e3ecfcd2a389 | 16 | @brief Class for the structure of the game |
ZhongYufan | 16:e3ecfcd2a389 | 17 | @brief It includes the control input, menu and other display parts(welcome,select,gameover,etc) |
ZhongYufan | 17:3ba4ec25c4c5 | 18 | @author Yufan Zhong, University of Leeds and SWJTU |
ZhongYufan | 16:e3ecfcd2a389 | 19 | @date May 2020 |
ZhongYufan | 16:e3ecfcd2a389 | 20 | */ |
ZhongYufan | 16:e3ecfcd2a389 | 21 | |
ZhongYufan | 1:9c7bb3db32bc | 22 | class MinerEngine |
ZhongYufan | 1:9c7bb3db32bc | 23 | { |
ZhongYufan | 1:9c7bb3db32bc | 24 | |
ZhongYufan | 1:9c7bb3db32bc | 25 | public: |
ZhongYufan | 16:e3ecfcd2a389 | 26 | /** Constructor */ |
ZhongYufan | 1:9c7bb3db32bc | 27 | MinerEngine(); |
ZhongYufan | 18:d4fccdf8d90e | 28 | |
ZhongYufan | 16:e3ecfcd2a389 | 29 | /** Destructor */ |
ZhongYufan | 1:9c7bb3db32bc | 30 | ~MinerEngine(); |
ZhongYufan | 18:d4fccdf8d90e | 31 | |
ZhongYufan | 16:e3ecfcd2a389 | 32 | /** Initialise the components of the MinerEngine |
ZhongYufan | 16:e3ecfcd2a389 | 33 | * @param winch_width - the width of the winch |
ZhongYufan | 16:e3ecfcd2a389 | 34 | * @param winch_height - the height of the winch |
ZhongYufan | 16:e3ecfcd2a389 | 35 | * @param gold_num - the gold number |
ZhongYufan | 16:e3ecfcd2a389 | 36 | * @param monster_speed - the speed of monster |
ZhongYufan | 16:e3ecfcd2a389 | 37 | */ |
ZhongYufan | 7:5bb5cde8951a | 38 | void init(int winch_width,int winch_height,int gold_num,int monster_speed); |
ZhongYufan | 18:d4fccdf8d90e | 39 | |
ZhongYufan | 16:e3ecfcd2a389 | 40 | /** Initialise the unchanged parameter |
ZhongYufan | 16:e3ecfcd2a389 | 41 | */ |
ZhongYufan | 12:07a9f2140d9b | 42 | void init_unchanged_parameter(); |
ZhongYufan | 18:d4fccdf8d90e | 43 | |
ZhongYufan | 16:e3ecfcd2a389 | 44 | /** Switch the states |
ZhongYufan | 16:e3ecfcd2a389 | 45 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 46 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 47 | */ |
ZhongYufan | 7:5bb5cde8951a | 48 | void state_switch(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 49 | |
ZhongYufan | 16:e3ecfcd2a389 | 50 | /** Get the select |
ZhongYufan | 16:e3ecfcd2a389 | 51 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 52 | */ |
ZhongYufan | 7:5bb5cde8951a | 53 | int get_select(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 54 | |
ZhongYufan | 16:e3ecfcd2a389 | 55 | /** Print the instruction |
ZhongYufan | 16:e3ecfcd2a389 | 56 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 57 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 58 | */ |
ZhongYufan | 7:5bb5cde8951a | 59 | void instruction(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 60 | |
ZhongYufan | 16:e3ecfcd2a389 | 61 | /** Print the menu |
ZhongYufan | 16:e3ecfcd2a389 | 62 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 63 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 64 | */ |
ZhongYufan | 7:5bb5cde8951a | 65 | void menu(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 66 | |
ZhongYufan | 16:e3ecfcd2a389 | 67 | /** Select the difficulties |
ZhongYufan | 16:e3ecfcd2a389 | 68 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 69 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 70 | */ |
ZhongYufan | 7:5bb5cde8951a | 71 | void options(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 72 | |
ZhongYufan | 16:e3ecfcd2a389 | 73 | /** Run the game |
ZhongYufan | 16:e3ecfcd2a389 | 74 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 75 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 76 | */ |
ZhongYufan | 7:5bb5cde8951a | 77 | void game_run(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 78 | |
ZhongYufan | 16:e3ecfcd2a389 | 79 | /** Draw all the components |
ZhongYufan | 16:e3ecfcd2a389 | 80 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 81 | */ |
ZhongYufan | 7:5bb5cde8951a | 82 | void draw(N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 83 | |
ZhongYufan | 16:e3ecfcd2a389 | 84 | /** Read the gamepad input |
ZhongYufan | 16:e3ecfcd2a389 | 85 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 86 | */ |
ZhongYufan | 1:9c7bb3db32bc | 87 | void read_input(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 88 | |
ZhongYufan | 16:e3ecfcd2a389 | 89 | /** Update the data |
ZhongYufan | 16:e3ecfcd2a389 | 90 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 91 | */ |
ZhongYufan | 1:9c7bb3db32bc | 92 | void update(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 93 | |
ZhongYufan | 16:e3ecfcd2a389 | 94 | /** Print welcome component and wait for start |
ZhongYufan | 16:e3ecfcd2a389 | 95 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 96 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 97 | */ |
ZhongYufan | 1:9c7bb3db32bc | 98 | void welcome(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 99 | |
ZhongYufan | 16:e3ecfcd2a389 | 100 | /** Print game over on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 101 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 102 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 103 | */ |
ZhongYufan | 7:5bb5cde8951a | 104 | void game_over(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 105 | |
ZhongYufan | 16:e3ecfcd2a389 | 106 | /** Play the music |
ZhongYufan | 16:e3ecfcd2a389 | 107 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 108 | */ |
ZhongYufan | 7:5bb5cde8951a | 109 | void play_music(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 110 | |
ZhongYufan | 16:e3ecfcd2a389 | 111 | /** Roll up the picture |
ZhongYufan | 16:e3ecfcd2a389 | 112 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 113 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 114 | */ |
ZhongYufan | 7:5bb5cde8951a | 115 | void screen_rollup(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 116 | |
ZhongYufan | 16:e3ecfcd2a389 | 117 | /** Print loading on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 118 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 119 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 120 | */ |
ZhongYufan | 7:5bb5cde8951a | 121 | void loading(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 122 | |
ZhongYufan | 16:e3ecfcd2a389 | 123 | /** Play the tunnel animation on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 124 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 125 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 126 | */ |
ZhongYufan | 14:3731b0791970 | 127 | void tunnel(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 128 | |
ZhongYufan | 16:e3ecfcd2a389 | 129 | /** Draw the tunnel |
ZhongYufan | 16:e3ecfcd2a389 | 130 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 131 | */ |
ZhongYufan | 14:3731b0791970 | 132 | void draw_tunnel(N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 133 | |
ZhongYufan | 16:e3ecfcd2a389 | 134 | /** Draw the walking man |
ZhongYufan | 16:e3ecfcd2a389 | 135 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 136 | */ |
ZhongYufan | 14:3731b0791970 | 137 | void draw_man(N5110 &lcd); |
ZhongYufan | 18:d4fccdf8d90e | 138 | |
ZhongYufan | 16:e3ecfcd2a389 | 139 | /** Print message in the tunnel |
ZhongYufan | 16:e3ecfcd2a389 | 140 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 141 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 142 | */ |
ZhongYufan | 14:3731b0791970 | 143 | void tunnel_print(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 1:9c7bb3db32bc | 144 | |
ZhongYufan | 16:e3ecfcd2a389 | 145 | |
ZhongYufan | 1:9c7bb3db32bc | 146 | private: |
ZhongYufan | 16:e3ecfcd2a389 | 147 | |
ZhongYufan | 16:e3ecfcd2a389 | 148 | /** Check if the gold has been lifted |
ZhongYufan | 16:e3ecfcd2a389 | 149 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 150 | */ |
ZhongYufan | 7:5bb5cde8951a | 151 | void check_gold_collision(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 152 | |
ZhongYufan | 16:e3ecfcd2a389 | 153 | /** Check if the monster collides with claw |
ZhongYufan | 16:e3ecfcd2a389 | 154 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 155 | */ |
ZhongYufan | 7:5bb5cde8951a | 156 | void check_monster_collision(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 157 | |
ZhongYufan | 16:e3ecfcd2a389 | 158 | /** Check if the claw gets the gold or the bottom |
ZhongYufan | 16:e3ecfcd2a389 | 159 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 160 | */ |
ZhongYufan | 7:5bb5cde8951a | 161 | void check_claw_collision(Gamepad &pad); |
ZhongYufan | 18:d4fccdf8d90e | 162 | |
ZhongYufan | 16:e3ecfcd2a389 | 163 | /** Check if gold reloading is needed |
ZhongYufan | 16:e3ecfcd2a389 | 164 | */ |
ZhongYufan | 7:5bb5cde8951a | 165 | void check_gold_reload(); |
ZhongYufan | 18:d4fccdf8d90e | 166 | |
ZhongYufan | 16:e3ecfcd2a389 | 167 | /** Print the score on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 168 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 169 | */ |
ZhongYufan | 1:9c7bb3db32bc | 170 | void print_scores(N5110 &lcd); |
ZhongYufan | 1:9c7bb3db32bc | 171 | |
ZhongYufan | 1:9c7bb3db32bc | 172 | Winch _winch; |
ZhongYufan | 1:9c7bb3db32bc | 173 | Claw _claw; |
ZhongYufan | 1:9c7bb3db32bc | 174 | Gold _gold; |
ZhongYufan | 1:9c7bb3db32bc | 175 | Monster _monster; |
ZhongYufan | 1:9c7bb3db32bc | 176 | |
ZhongYufan | 1:9c7bb3db32bc | 177 | int _winch_width; |
ZhongYufan | 1:9c7bb3db32bc | 178 | int _winch_height; |
ZhongYufan | 1:9c7bb3db32bc | 179 | int _gold_num; |
ZhongYufan | 1:9c7bb3db32bc | 180 | float _monster_speed; |
ZhongYufan | 1:9c7bb3db32bc | 181 | int _s; |
ZhongYufan | 1:9c7bb3db32bc | 182 | int _state; |
ZhongYufan | 7:5bb5cde8951a | 183 | int _catching; |
ZhongYufan | 7:5bb5cde8951a | 184 | int _claw_get; |
ZhongYufan | 12:07a9f2140d9b | 185 | int _claw_speed; |
ZhongYufan | 7:5bb5cde8951a | 186 | int _monster_collision; |
ZhongYufan | 7:5bb5cde8951a | 187 | int _now_score; |
ZhongYufan | 7:5bb5cde8951a | 188 | int _highest_score; |
ZhongYufan | 10:51870f8e2e1a | 189 | int _gold_reached_num[9]; |
ZhongYufan | 13:3299ab0ff2f0 | 190 | int _h; |
ZhongYufan | 14:3731b0791970 | 191 | int _i; |
ZhongYufan | 14:3731b0791970 | 192 | int _n; |
ZhongYufan | 14:3731b0791970 | 193 | int _z; |
ZhongYufan | 14:3731b0791970 | 194 | int _j; |
ZhongYufan | 16:e3ecfcd2a389 | 195 | |
ZhongYufan | 1:9c7bb3db32bc | 196 | Direction _d; |
ZhongYufan | 1:9c7bb3db32bc | 197 | float _mag; |
ZhongYufan | 7:5bb5cde8951a | 198 | |
ZhongYufan | 1:9c7bb3db32bc | 199 | }; |
ZhongYufan | 1:9c7bb3db32bc | 200 | |
ZhongYufan | 1:9c7bb3db32bc | 201 | #endif |