ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 24 15:20:01 2019 +0000
Revision:
48:bd1f31fbfee3
Parent:
47:3425159c0211
Child:
49:9bea7089b657
publish game engine functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17arm 29:d85886364643 1 #ifndef GAMEENGINE_H
el17arm 29:d85886364643 2 #define GAMEENGINE_H
el17arm 29:d85886364643 3
el17arm 29:d85886364643 4 #include "mbed.h"
el17arm 29:d85886364643 5 #include "N5110.h"
el17arm 29:d85886364643 6 #include "Gamepad.h"
el17arm 33:023f57d52b1c 7 #include "Sprites.h"
el17arm 42:d81c008b0436 8 #include "Levels.h"
el17arm 32:5dc769ba4a58 9
el17arm 45:bad704c546d4 10 /** Gameengine Class
el17arm 46:de3462ad5aef 11 @brief Builds all levels and sets all default values. Updates all game settings
el17arm 46:de3462ad5aef 12 and contains functions for all game conditions
el17arm 46:de3462ad5aef 13
el17arm 45:bad704c546d4 14 @author Andrew Milner University of Leeds
el17arm 46:de3462ad5aef 15
el17arm 45:bad704c546d4 16 @date April 2019
el17arm 45:bad704c546d4 17 */
el17arm 41:0cf320f73424 18
el17arm 29:d85886364643 19 class Gameengine
el17arm 29:d85886364643 20 {
el17arm 29:d85886364643 21
el17arm 29:d85886364643 22 public:
el17arm 29:d85886364643 23
el17arm 29:d85886364643 24 Gameengine();
el17arm 29:d85886364643 25 ~Gameengine();
el17arm 48:bd1f31fbfee3 26 /** Initialises all default game settings.
el17arm 48:bd1f31fbfee3 27 * @details Sets player starting position, number of lives, level start and timer.
el17arm 46:de3462ad5aef 28 */
el17arm 46:de3462ad5aef 29 void game_init();
el17arm 48:bd1f31fbfee3 30 /** Updates all game game settings.
el17arm 48:bd1f31fbfee3 31 * @details Contains all functions that update player position and game conditions
el17arm 48:bd1f31fbfee3 32 such as lives left, timer, game over and level complete.
el17arm 46:de3462ad5aef 33 */
el17arm 46:de3462ad5aef 34 void update(N5110 &lcd, Gamepad &pad);
el17arm 48:bd1f31fbfee3 35 /** Updates and renders all level objects for level 1.
el17arm 46:de3462ad5aef 36 */
el17arm 46:de3462ad5aef 37 void draw_l1(N5110 &lcd, Gamepad &pad);
el17arm 48:bd1f31fbfee3 38 /** Updates and renders all level objects for level 2.
el17arm 46:de3462ad5aef 39 */
el17arm 46:de3462ad5aef 40 void draw_l2(N5110 &lcd, Gamepad &pad);
el17arm 48:bd1f31fbfee3 41 /** Updates and renders all level objects for level 3.
el17arm 46:de3462ad5aef 42 */
el17arm 46:de3462ad5aef 43 void draw_l3(N5110 &lcd, Gamepad &pad);
el17arm 46:de3462ad5aef 44 /**
el17arm 46:de3462ad5aef 45 * @brief Reads direction the player is moving.
el17arm 46:de3462ad5aef 46 * @details Uses getdirection() function from Gamepad library.
el17arm 45:bad704c546d4 47 */
el17arm 29:d85886364643 48 void read_direction(Gamepad &pad);
el17arm 48:bd1f31fbfee3 49 /** Calculates lives remaining.
el17arm 46:de3462ad5aef 50 * @returns integer calue to control lives fsm state in leds() main.cpp
el17arm 46:de3462ad5aef 51 */
el17arm 46:de3462ad5aef 52 int oxygen_leds();
el17arm 48:bd1f31fbfee3 53 /** Calculates time remaining.
el17arm 46:de3462ad5aef 54 * @details Calculates time remaining, every 1/3 of total time passed the return
el17arm 46:de3462ad5aef 55 * value changes.
el17arm 46:de3462ad5aef 56 * @return integer value to control oxygen fsm state in leds() main.cpp
el17arm 46:de3462ad5aef 57 */
el17arm 46:de3462ad5aef 58 int lives_leds();
el17arm 46:de3462ad5aef 59 /**
el17arm 46:de3462ad5aef 60 * @brief Calculates and displays player score.
el17arm 46:de3462ad5aef 61 * @details At game over or game completed the players score is calculated and
el17arm 46:de3462ad5aef 62 * displayed. It takes time remaining and multiplies this by lives remaining, then
el17arm 46:de3462ad5aef 63 * adds on 10 points for every key collected.
el17arm 46:de3462ad5aef 64 */
el17arm 46:de3462ad5aef 65 void get_score(N5110 &lcd);
el17arm 48:bd1f31fbfee3 66 /** Returns true if game completed.
el17arm 46:de3462ad5aef 67 * @details calculates when _level variable has gone beyond number of levels in game.
el17arm 46:de3462ad5aef 68 * @return true if game complete
el17arm 46:de3462ad5aef 69 */
el17arm 46:de3462ad5aef 70 bool game_complete(N5110 &lcd);
el17arm 48:bd1f31fbfee3 71 /** Reduces number of lives on player death.
el17arm 46:de3462ad5aef 72 * @details After reducing lives, makes tone to signify player death, resets player
el17arm 48:bd1f31fbfee3 73 * back to start, creates small pause.
el17arm 46:de3462ad5aef 74 */
el17arm 41:0cf320f73424 75 void lose_life(Gamepad &pad, N5110 &lcd);
el17arm 48:bd1f31fbfee3 76 /** States whether game over condition met
el17arm 46:de3462ad5aef 77 * @return returns true if game over.
el17arm 46:de3462ad5aef 78 */
el17arm 29:d85886364643 79 bool game_over();
el17arm 48:bd1f31fbfee3 80 /** Returns true when player at exit.
el17arm 48:bd1f31fbfee3 81 * @return Function returns true when the player is in contact with the level exit.
el17arm 46:de3462ad5aef 82 */
el17arm 46:de3462ad5aef 83 bool level_exit(N5110 &lcd);
el17arm 48:bd1f31fbfee3 84 /** Returns true when level complete conditions met.
el17arm 46:de3462ad5aef 85 * @details Function returns true when all 5 keys have been collected using _sprites.keys_collected()
el17arm 48:bd1f31fbfee3 86 * and player is in contact with the level exit using level_exit() function.
el17arm 48:bd1f31fbfee3 87 * Calculates time reamining then resets, resets enemy and key flags
el17arm 46:de3462ad5aef 88 * so they can be initialised for the next level, increases _level by 1 so next
el17arm 48:bd1f31fbfee3 89 * level will be drawn, keys needed increased by 5 and miner position reset.
el17arm 46:de3462ad5aef 90 */
el17arm 33:023f57d52b1c 91 void next_level(N5110 &lcd);
el17arm 48:bd1f31fbfee3 92 /** Returns true if player in contact with trap
el17arm 46:de3462ad5aef 93 * @details Function sets all trap poisitons and collision rules. Usues int i
el17arm 46:de3462ad5aef 94 * to select which level positions to use.
el17arm 46:de3462ad5aef 95 */
el17arm 34:c5a042973e0c 96 bool trap_death(N5110 &lcd);
el17arm 48:bd1f31fbfee3 97 /** Returns true if player in contact with trap.
el17arm 46:de3462ad5aef 98 * @details Function sets all trap positons and collision rules stated in
el17arm 46:de3462ad5aef 99 * Sprites class. Uses int i to select which level positions to use, these are
el17arm 46:de3462ad5aef 100 * specified in Level class.
el17arm 46:de3462ad5aef 101 */
el17arm 37:4d525a37d5d2 102 void key_draw(N5110 &lcd,Gamepad &pad);
el17arm 48:bd1f31fbfee3 103 /** Sets all block positions and collision rules.
el17arm 46:de3462ad5aef 104 * @details Function sets all block positons and collision rules stated in
el17arm 46:de3462ad5aef 105 * Sprites class. Keys are indexed so each one is treated independently
el17arm 46:de3462ad5aef 106 * otherwise all will disappear if one is collected. Uses int i to select which
el17arm 48:bd1f31fbfee3 107 * level positions to use, these are specified in Level class.
el17arm 46:de3462ad5aef 108 */
el17arm 38:55bb9da08a52 109 void blocks(N5110 &lcd);
el17arm 48:bd1f31fbfee3 110 /** Initialises enemies, updates movements and detects collision with player.
el17arm 48:bd1f31fbfee3 111 * @details Only initialises enemies when enem_flag set to false and sets it true
el17arm 48:bd1f31fbfee3 112 * once done. Function also updates enemy position and detects collision with players,
el17arm 48:bd1f31fbfee3 113 * int i states which level settings to use
el17arm 48:bd1f31fbfee3 114
el17arm 48:bd1f31fbfee3 115 */
el17arm 38:55bb9da08a52 116 bool enemies(N5110 &lcd);
el17arm 48:bd1f31fbfee3 117 /** Reinitialises keys once new level starts.
el17arm 48:bd1f31fbfee3 118 * @details Once level is complete the _key_reint flag is set to false and all
el17arm 48:bd1f31fbfee3 119 * 5 level keys are set to false. This means they are drawn in new positions as
el17arm 48:bd1f31fbfee3 120 * per int i which states which level settings to use in key_draw().
el17arm 48:bd1f31fbfee3 121
el17arm 48:bd1f31fbfee3 122 */
el17arm 40:913339e324b8 123 void key_reinit();
el17arm 29:d85886364643 124
el17arm 29:d85886364643 125 private:
el17arm 29:d85886364643 126
el17arm 40:913339e324b8 127 int _level;
el17arm 29:d85886364643 128 int _lives;
el17arm 40:913339e324b8 129 bool _enem_flag;
el17arm 40:913339e324b8 130 int _five_keys;
el17arm 40:913339e324b8 131 bool _key_reinit;
el17arm 41:0cf320f73424 132 int _oxy_state;
el17arm 41:0cf320f73424 133 int _life_state;
el17arm 41:0cf320f73424 134 float _total_time;
el17arm 41:0cf320f73424 135 float _time;
el17arm 29:d85886364643 136
el17arm 33:023f57d52b1c 137 Sprites _sprites;
el17arm 29:d85886364643 138 Direction _d;
el17arm 42:d81c008b0436 139 Levels _lev;
el17arm 41:0cf320f73424 140 Timer _t;
el17arm 41:0cf320f73424 141
el17arm 40:913339e324b8 142
el17arm 29:d85886364643 143 };
el17arm 29:d85886364643 144 #endif