Yufan Zhong / Mbed 2 deprecated GOLD_MINER

Dependencies:   mbed

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?

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