Yufan Zhong / Mbed 2 deprecated GOLD_MINER

Dependencies:   mbed

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?

UserRevisionLine numberNew 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