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@17:3ba4ec25c4c5, 2020-05-12 (annotated)
- Committer:
- ZhongYufan
- Date:
- Tue May 12 09:22:31 2020 +0000
- Revision:
- 17:3ba4ec25c4c5
- Parent:
- 16:e3ecfcd2a389
- Child:
- 18:d4fccdf8d90e
test
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 | 16:e3ecfcd2a389 | 28 | /** Destructor */ |
ZhongYufan | 1:9c7bb3db32bc | 29 | ~MinerEngine(); |
ZhongYufan | 16:e3ecfcd2a389 | 30 | /** Initialise the components of the MinerEngine |
ZhongYufan | 16:e3ecfcd2a389 | 31 | * |
ZhongYufan | 16:e3ecfcd2a389 | 32 | * This function initialises 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 | 16:e3ecfcd2a389 | 39 | /** Initialise the unchanged parameter |
ZhongYufan | 16:e3ecfcd2a389 | 40 | * |
ZhongYufan | 16:e3ecfcd2a389 | 41 | * This function initialises the unchanged parameter. |
ZhongYufan | 16:e3ecfcd2a389 | 42 | */ |
ZhongYufan | 12:07a9f2140d9b | 43 | void init_unchanged_parameter(); |
ZhongYufan | 16:e3ecfcd2a389 | 44 | /** Switch the states |
ZhongYufan | 16:e3ecfcd2a389 | 45 | * |
ZhongYufan | 16:e3ecfcd2a389 | 46 | * This function switches the states. |
ZhongYufan | 16:e3ecfcd2a389 | 47 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 48 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 49 | */ |
ZhongYufan | 7:5bb5cde8951a | 50 | void state_switch(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 51 | /** Get the select |
ZhongYufan | 16:e3ecfcd2a389 | 52 | * |
ZhongYufan | 16:e3ecfcd2a389 | 53 | * This function gets the select from the gamepad. |
ZhongYufan | 16:e3ecfcd2a389 | 54 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 55 | */ |
ZhongYufan | 7:5bb5cde8951a | 56 | int get_select(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 57 | /** Print the instruction |
ZhongYufan | 16:e3ecfcd2a389 | 58 | * |
ZhongYufan | 16:e3ecfcd2a389 | 59 | * This function prints the instruction on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 60 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 61 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 62 | */ |
ZhongYufan | 7:5bb5cde8951a | 63 | void instruction(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 64 | /** Print the menu |
ZhongYufan | 16:e3ecfcd2a389 | 65 | * |
ZhongYufan | 16:e3ecfcd2a389 | 66 | * This function prints the menu on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 67 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 68 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 69 | */ |
ZhongYufan | 7:5bb5cde8951a | 70 | void menu(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 71 | /** Select the difficulties |
ZhongYufan | 16:e3ecfcd2a389 | 72 | * |
ZhongYufan | 16:e3ecfcd2a389 | 73 | * This function selects the difficulties. |
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 options(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 78 | /** Run the game |
ZhongYufan | 16:e3ecfcd2a389 | 79 | * |
ZhongYufan | 16:e3ecfcd2a389 | 80 | * This function runs the game loop. |
ZhongYufan | 16:e3ecfcd2a389 | 81 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 82 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 83 | */ |
ZhongYufan | 7:5bb5cde8951a | 84 | void game_run(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 85 | /** Draw all the components |
ZhongYufan | 16:e3ecfcd2a389 | 86 | * |
ZhongYufan | 16:e3ecfcd2a389 | 87 | * This function draws winch, claw, gold and monster on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 88 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 89 | */ |
ZhongYufan | 7:5bb5cde8951a | 90 | void draw(N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 91 | /** Read the gamepad input |
ZhongYufan | 16:e3ecfcd2a389 | 92 | * |
ZhongYufan | 16:e3ecfcd2a389 | 93 | * This function raed the gamepad input. |
ZhongYufan | 16:e3ecfcd2a389 | 94 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 95 | */ |
ZhongYufan | 1:9c7bb3db32bc | 96 | void read_input(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 97 | /** Update the data |
ZhongYufan | 16:e3ecfcd2a389 | 98 | * |
ZhongYufan | 16:e3ecfcd2a389 | 99 | * This function update all data components. |
ZhongYufan | 16:e3ecfcd2a389 | 100 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 101 | */ |
ZhongYufan | 1:9c7bb3db32bc | 102 | void update(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 103 | /** Print welcome component and wait for start |
ZhongYufan | 16:e3ecfcd2a389 | 104 | * |
ZhongYufan | 16:e3ecfcd2a389 | 105 | * This function prints welcome component on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 106 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 107 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 108 | */ |
ZhongYufan | 1:9c7bb3db32bc | 109 | void welcome(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 110 | /** Print game over on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 111 | * |
ZhongYufan | 16:e3ecfcd2a389 | 112 | * This function prints game over on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 113 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 114 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 115 | */ |
ZhongYufan | 7:5bb5cde8951a | 116 | void game_over(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 117 | /** Play the music |
ZhongYufan | 16:e3ecfcd2a389 | 118 | * |
ZhongYufan | 16:e3ecfcd2a389 | 119 | * This function plays the music. |
ZhongYufan | 16:e3ecfcd2a389 | 120 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 121 | */ |
ZhongYufan | 7:5bb5cde8951a | 122 | void play_music(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 123 | /** Roll up the picture |
ZhongYufan | 16:e3ecfcd2a389 | 124 | * |
ZhongYufan | 16:e3ecfcd2a389 | 125 | * This function rolls up the picture. |
ZhongYufan | 16:e3ecfcd2a389 | 126 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 127 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 128 | */ |
ZhongYufan | 7:5bb5cde8951a | 129 | void screen_rollup(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 130 | /** Print loading on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 131 | * |
ZhongYufan | 16:e3ecfcd2a389 | 132 | * This function prints loading on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 133 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 134 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 135 | */ |
ZhongYufan | 7:5bb5cde8951a | 136 | void loading(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 137 | /** Play the tunnel animation on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 138 | * |
ZhongYufan | 16:e3ecfcd2a389 | 139 | * This function plays the tunnel animation on the screen. |
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(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 144 | /** Draw the tunnel |
ZhongYufan | 16:e3ecfcd2a389 | 145 | * |
ZhongYufan | 16:e3ecfcd2a389 | 146 | * This function draws the tunnel. |
ZhongYufan | 16:e3ecfcd2a389 | 147 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 148 | */ |
ZhongYufan | 14:3731b0791970 | 149 | void draw_tunnel(N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 150 | /** Draw the walking man |
ZhongYufan | 16:e3ecfcd2a389 | 151 | * |
ZhongYufan | 16:e3ecfcd2a389 | 152 | * This function draws the walking man. |
ZhongYufan | 16:e3ecfcd2a389 | 153 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 154 | */ |
ZhongYufan | 14:3731b0791970 | 155 | void draw_man(N5110 &lcd); |
ZhongYufan | 16:e3ecfcd2a389 | 156 | /** Print message in the tunnel |
ZhongYufan | 16:e3ecfcd2a389 | 157 | * |
ZhongYufan | 16:e3ecfcd2a389 | 158 | * This function prints the message on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 159 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 160 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 161 | */ |
ZhongYufan | 14:3731b0791970 | 162 | void tunnel_print(Gamepad &pad, N5110 &lcd); |
ZhongYufan | 1:9c7bb3db32bc | 163 | |
ZhongYufan | 16:e3ecfcd2a389 | 164 | |
ZhongYufan | 1:9c7bb3db32bc | 165 | private: |
ZhongYufan | 16:e3ecfcd2a389 | 166 | |
ZhongYufan | 16:e3ecfcd2a389 | 167 | /** Check if the gold has been lifted |
ZhongYufan | 16:e3ecfcd2a389 | 168 | * |
ZhongYufan | 16:e3ecfcd2a389 | 169 | * This function checks if the gold has been lifted. |
ZhongYufan | 16:e3ecfcd2a389 | 170 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 171 | */ |
ZhongYufan | 7:5bb5cde8951a | 172 | void check_gold_collision(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 173 | /** Check if the monster collides with claw |
ZhongYufan | 16:e3ecfcd2a389 | 174 | * |
ZhongYufan | 16:e3ecfcd2a389 | 175 | * This function checks if the monster collides with claw. |
ZhongYufan | 16:e3ecfcd2a389 | 176 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 177 | */ |
ZhongYufan | 7:5bb5cde8951a | 178 | void check_monster_collision(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 179 | /** Check if the claw gets the gold or the bottom |
ZhongYufan | 16:e3ecfcd2a389 | 180 | * |
ZhongYufan | 16:e3ecfcd2a389 | 181 | * This function checks if the claw gets the gold or the bottom. |
ZhongYufan | 16:e3ecfcd2a389 | 182 | * @param pad - Gamepad library |
ZhongYufan | 16:e3ecfcd2a389 | 183 | */ |
ZhongYufan | 7:5bb5cde8951a | 184 | void check_claw_collision(Gamepad &pad); |
ZhongYufan | 16:e3ecfcd2a389 | 185 | /** Check if gold reloading is needed |
ZhongYufan | 16:e3ecfcd2a389 | 186 | * |
ZhongYufan | 16:e3ecfcd2a389 | 187 | * This function checks if gold reloading is needed. |
ZhongYufan | 16:e3ecfcd2a389 | 188 | */ |
ZhongYufan | 7:5bb5cde8951a | 189 | void check_gold_reload(); |
ZhongYufan | 16:e3ecfcd2a389 | 190 | /** Print the score on the screen |
ZhongYufan | 16:e3ecfcd2a389 | 191 | * |
ZhongYufan | 16:e3ecfcd2a389 | 192 | * This function prints the current score and highest score on the screen. |
ZhongYufan | 16:e3ecfcd2a389 | 193 | * @param lcd - N5110 library |
ZhongYufan | 16:e3ecfcd2a389 | 194 | */ |
ZhongYufan | 1:9c7bb3db32bc | 195 | void print_scores(N5110 &lcd); |
ZhongYufan | 1:9c7bb3db32bc | 196 | |
ZhongYufan | 1:9c7bb3db32bc | 197 | Winch _winch; |
ZhongYufan | 1:9c7bb3db32bc | 198 | Claw _claw; |
ZhongYufan | 1:9c7bb3db32bc | 199 | Gold _gold; |
ZhongYufan | 1:9c7bb3db32bc | 200 | Monster _monster; |
ZhongYufan | 1:9c7bb3db32bc | 201 | |
ZhongYufan | 1:9c7bb3db32bc | 202 | int _winch_width; |
ZhongYufan | 1:9c7bb3db32bc | 203 | int _winch_height; |
ZhongYufan | 1:9c7bb3db32bc | 204 | int _gold_num; |
ZhongYufan | 1:9c7bb3db32bc | 205 | float _monster_speed; |
ZhongYufan | 1:9c7bb3db32bc | 206 | int _s; |
ZhongYufan | 1:9c7bb3db32bc | 207 | int _state; |
ZhongYufan | 7:5bb5cde8951a | 208 | int _catching; |
ZhongYufan | 7:5bb5cde8951a | 209 | int _claw_get; |
ZhongYufan | 12:07a9f2140d9b | 210 | int _claw_speed; |
ZhongYufan | 7:5bb5cde8951a | 211 | int _monster_collision; |
ZhongYufan | 7:5bb5cde8951a | 212 | int _now_score; |
ZhongYufan | 7:5bb5cde8951a | 213 | int _highest_score; |
ZhongYufan | 10:51870f8e2e1a | 214 | int _gold_reached_num[9]; |
ZhongYufan | 13:3299ab0ff2f0 | 215 | int _h; |
ZhongYufan | 14:3731b0791970 | 216 | int _i; |
ZhongYufan | 14:3731b0791970 | 217 | int _n; |
ZhongYufan | 14:3731b0791970 | 218 | int _z; |
ZhongYufan | 14:3731b0791970 | 219 | int _j; |
ZhongYufan | 16:e3ecfcd2a389 | 220 | |
ZhongYufan | 1:9c7bb3db32bc | 221 | Direction _d; |
ZhongYufan | 1:9c7bb3db32bc | 222 | float _mag; |
ZhongYufan | 7:5bb5cde8951a | 223 | |
ZhongYufan | 1:9c7bb3db32bc | 224 | }; |
ZhongYufan | 1:9c7bb3db32bc | 225 | |
ZhongYufan | 1:9c7bb3db32bc | 226 | #endif |