ELEC2645 (2018/19) / Mbed 2 deprecated 2645_Project_SiutingWong201186503

Dependencies:   mbed

Committer:
davidwst421
Date:
Thu May 09 08:20:36 2019 +0000
Revision:
16:a5f5bc55d1bb
Parent:
15:749c595b19e2
Last version with Doxygen & comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidwst421 0:fd8eda608206 1 #ifndef ENGINE_H
davidwst421 0:fd8eda608206 2 #define ENGINE_H
davidwst421 0:fd8eda608206 3
davidwst421 0:fd8eda608206 4 #include "mbed.h"
davidwst421 0:fd8eda608206 5 #include "N5110.h"
davidwst421 0:fd8eda608206 6 #include "Gamepad.h"
davidwst421 0:fd8eda608206 7 #include "Stone.h"
davidwst421 0:fd8eda608206 8 #include "Avenger.h"
davidwst421 0:fd8eda608206 9 #include "Wall.h"
davidwst421 0:fd8eda608206 10
davidwst421 15:749c595b19e2 11 /** Engine class
davidwst421 16:a5f5bc55d1bb 12 *
davidwst421 16:a5f5bc55d1bb 13 * @brief Class for running functions for main.cpp and retrieving data from other classes
davidwst421 16:a5f5bc55d1bb 14 *
davidwst421 16:a5f5bc55d1bb 15 * @version 0.56
davidwst421 16:a5f5bc55d1bb 16 *
davidwst421 16:a5f5bc55d1bb 17 * @author Siuting Wong 201186503
davidwst421 16:a5f5bc55d1bb 18 *
davidwst421 16:a5f5bc55d1bb 19 * @date 8th May 2019
davidwst421 16:a5f5bc55d1bb 20 *
davidwst421 16:a5f5bc55d1bb 21 * @code
davidwst421 16:a5f5bc55d1bb 22 *
davidwst421 16:a5f5bc55d1bb 23 * /////////////// structs /////////////////
davidwst421 16:a5f5bc55d1bb 24 * struct UserInput {
davidwst421 16:a5f5bc55d1bb 25 * Direction d;
davidwst421 16:a5f5bc55d1bb 26 * float mag;
davidwst421 16:a5f5bc55d1bb 27 * Vector2D mapped_coord;
davidwst421 16:a5f5bc55d1bb 28 * };
davidwst421 16:a5f5bc55d1bb 29 * /////////////// objects ///////////////
davidwst421 16:a5f5bc55d1bb 30 * N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
davidwst421 16:a5f5bc55d1bb 31 * Gamepad pad;
davidwst421 16:a5f5bc55d1bb 32 * Engine eng;
davidwst421 16:a5f5bc55d1bb 33 *
davidwst421 16:a5f5bc55d1bb 34 * ///////////// prototypes ///////////////
davidwst421 16:a5f5bc55d1bb 35 * void init();
davidwst421 16:a5f5bc55d1bb 36 * void update_game(UserInput input);
davidwst421 16:a5f5bc55d1bb 37 * void render();
davidwst421 16:a5f5bc55d1bb 38 * void welcome();
davidwst421 16:a5f5bc55d1bb 39 * void endgame();
davidwst421 16:a5f5bc55d1bb 40 * void introduction();
davidwst421 16:a5f5bc55d1bb 41 * void fingersnap();
davidwst421 16:a5f5bc55d1bb 42 *
davidwst421 16:a5f5bc55d1bb 43 * ///////////// Images ///////////////
davidwst421 16:a5f5bc55d1bb 44 * const int Avenger0[25][32] = {
davidwst421 16:a5f5bc55d1bb 45 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 46 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 47 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 48 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 49 * { 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 50 * { 0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 51 * { 0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,0,1,1,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 52 * { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 53 * { 0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 54 * { 0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 55 * { 0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 56 * { 0,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 57 * { 0,0,1,1,1,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 58 * { 0,0,1,1,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 59 * { 0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 60 * { 0,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 61 * { 0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 62 * { 0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 63 * { 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 64 * { 0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 65 * { 0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 66 * { 0,0,0,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 67 * { 0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 68 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 69 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 70 * };
davidwst421 16:a5f5bc55d1bb 71 *
davidwst421 16:a5f5bc55d1bb 72 * const int Avenger1[25][32] = {
davidwst421 16:a5f5bc55d1bb 73 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 74 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 75 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 76 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 77 * { 0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 78 * { 0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 79 * { 0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,0,1,1,0,0,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 80 * { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 81 * { 0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 82 * { 0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 83 * { 0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 84 * { 0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 85 * { 0,0,0,1,0,0,1,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 86 * { 0,0,0,1,0,0,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,0,0,0,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 87 * { 0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 88 * { 0,0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,0,0,1,1,1,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 89 * { 0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 90 * { 0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 91 * { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 92 * { 0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 93 * { 0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 94 * { 0,0,0,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 95 * { 0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 96 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 97 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 98 * };
davidwst421 16:a5f5bc55d1bb 99 *
davidwst421 16:a5f5bc55d1bb 100 * const int intro0[8][84] = {
davidwst421 16:a5f5bc55d1bb 101 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 102 * { 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 103 * { 0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 104 * { 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 105 * { 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 106 * { 0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 107 * { 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 108 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 109 * };
davidwst421 16:a5f5bc55d1bb 110 * const int intro1[8][84] = {
davidwst421 16:a5f5bc55d1bb 111 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 112 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 113 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 114 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 115 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 116 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 117 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 118 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 119 * };
davidwst421 16:a5f5bc55d1bb 120 * const int intro2[8][84] = {
davidwst421 16:a5f5bc55d1bb 121 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 122 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 123 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 124 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 125 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 126 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 127 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 128 * { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 129 * };
davidwst421 16:a5f5bc55d1bb 130 *
davidwst421 16:a5f5bc55d1bb 131 * const int intro3[16][18] = {
davidwst421 16:a5f5bc55d1bb 132 * { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 133 * { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 134 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 135 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 136 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 137 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 138 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 16:a5f5bc55d1bb 139 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 16:a5f5bc55d1bb 140 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 16:a5f5bc55d1bb 141 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 16:a5f5bc55d1bb 142 * { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 16:a5f5bc55d1bb 143 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 16:a5f5bc55d1bb 144 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 145 * { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 146 * { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 147 * { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 16:a5f5bc55d1bb 148 * };
davidwst421 16:a5f5bc55d1bb 149 *
davidwst421 16:a5f5bc55d1bb 150 * ///////////// functions ////////////////
davidwst421 16:a5f5bc55d1bb 151 * int main() {
davidwst421 16:a5f5bc55d1bb 152 * while (1) {
davidwst421 16:a5f5bc55d1bb 153 * int fps = 6;
davidwst421 16:a5f5bc55d1bb 154 *
davidwst421 16:a5f5bc55d1bb 155 * init(); // initialise and then display welcome screen...
davidwst421 16:a5f5bc55d1bb 156 * welcome();
davidwst421 16:a5f5bc55d1bb 157 * introduction(); // The intro of the story
davidwst421 16:a5f5bc55d1bb 158 * render();
davidwst421 16:a5f5bc55d1bb 159 * wait(1.0f/fps); // and wait for one frame period
davidwst421 16:a5f5bc55d1bb 160 *
davidwst421 16:a5f5bc55d1bb 161 * while (1) {
davidwst421 16:a5f5bc55d1bb 162 * eng.read_input(pad);
davidwst421 16:a5f5bc55d1bb 163 * eng.update(pad);
davidwst421 16:a5f5bc55d1bb 164 * render();
davidwst421 16:a5f5bc55d1bb 165 * wait(1.0f/fps);
davidwst421 16:a5f5bc55d1bb 166 * if (eng.get_score() < 3) { // setting diffculty regarding the current stone number
davidwst421 16:a5f5bc55d1bb 167 * fps = 6;
davidwst421 16:a5f5bc55d1bb 168 * }
davidwst421 16:a5f5bc55d1bb 169 * if (eng.get_score() == 3) {
davidwst421 16:a5f5bc55d1bb 170 * fps = 9;
davidwst421 16:a5f5bc55d1bb 171 * }
davidwst421 16:a5f5bc55d1bb 172 * if (eng.get_score() == 4) {
davidwst421 16:a5f5bc55d1bb 173 * fps = 12;
davidwst421 16:a5f5bc55d1bb 174 * }
davidwst421 16:a5f5bc55d1bb 175 * if (eng.get_score() == 5) {
davidwst421 16:a5f5bc55d1bb 176 * fps = 15;
davidwst421 16:a5f5bc55d1bb 177 * }
davidwst421 16:a5f5bc55d1bb 178 * if (eng.get_score() == 6) { // you win!!
davidwst421 16:a5f5bc55d1bb 179 * fingersnap();
davidwst421 16:a5f5bc55d1bb 180 * break;
davidwst421 16:a5f5bc55d1bb 181 * } else if (eng.get_score() < 0) { // you lose :(
davidwst421 16:a5f5bc55d1bb 182 * endgame();
davidwst421 16:a5f5bc55d1bb 183 * break;
davidwst421 16:a5f5bc55d1bb 184 * }
davidwst421 16:a5f5bc55d1bb 185 * }
davidwst421 16:a5f5bc55d1bb 186 * }
davidwst421 16:a5f5bc55d1bb 187 * }
davidwst421 16:a5f5bc55d1bb 188 *
davidwst421 16:a5f5bc55d1bb 189 * void init() {
davidwst421 16:a5f5bc55d1bb 190 * // need to initialise LCD and Gamepad
davidwst421 16:a5f5bc55d1bb 191 * lcd.init();
davidwst421 16:a5f5bc55d1bb 192 * pad.init();
davidwst421 16:a5f5bc55d1bb 193 *
davidwst421 16:a5f5bc55d1bb 194 * // initialise the game with correct ball and paddle sizes
davidwst421 16:a5f5bc55d1bb 195 * eng.init(WALL_WIDTH,WALL_GAP,STONE_SIZE,SPEED);
davidwst421 16:a5f5bc55d1bb 196 * }
davidwst421 16:a5f5bc55d1bb 197 *
davidwst421 16:a5f5bc55d1bb 198 * void welcome() {
davidwst421 16:a5f5bc55d1bb 199 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 200 * lcd.printString("Eternity Stone",0,0); //play messages
davidwst421 16:a5f5bc55d1bb 201 * lcd.printString("Start story",9,4);
davidwst421 16:a5f5bc55d1bb 202 * lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 16:a5f5bc55d1bb 203 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 204 * pad.tone(440.00,0.21); // adding avenger music
davidwst421 16:a5f5bc55d1bb 205 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 206 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 207 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 208 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 209 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 210 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 211 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 212 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 213 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 214 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 215 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 216 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 217 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 218 * pad.tone(587.3,0.42);
davidwst421 16:a5f5bc55d1bb 219 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 220 * pad.tone(880.0,0.21);
davidwst421 16:a5f5bc55d1bb 221 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 222 * pad.tone(784.0,1.40);
davidwst421 16:a5f5bc55d1bb 223 * wait(1.40);
davidwst421 16:a5f5bc55d1bb 224 * pad.tone(698.5,0.70);
davidwst421 16:a5f5bc55d1bb 225 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 226 * pad.tone(659.3,0.70);
davidwst421 16:a5f5bc55d1bb 227 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 228 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 229 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 230 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // animation loop until start button is pressed
davidwst421 16:a5f5bc55d1bb 231 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 232 * lcd.printString("Eternity Stone",0,0);
davidwst421 16:a5f5bc55d1bb 233 * lcd.printString("Start story",9,4);
davidwst421 16:a5f5bc55d1bb 234 * lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 16:a5f5bc55d1bb 235 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 236 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 237 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 238 * lcd.printString("Eternity Stone",0,0);
davidwst421 16:a5f5bc55d1bb 239 * lcd.printString("Start story",9,4);
davidwst421 16:a5f5bc55d1bb 240 * lcd.drawSprite(25,8,25,32,(int *)Avenger1);
davidwst421 16:a5f5bc55d1bb 241 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 242 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 243 * }
davidwst421 16:a5f5bc55d1bb 244 * }
davidwst421 16:a5f5bc55d1bb 245 *
davidwst421 16:a5f5bc55d1bb 246 * void introduction() { // background story
davidwst421 16:a5f5bc55d1bb 247 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 248 * lcd.printString("Five years",12,0);
davidwst421 16:a5f5bc55d1bb 249 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 250 * wait(1.0);
davidwst421 16:a5f5bc55d1bb 251 * lcd.printString("Since Thanos",6,2);
davidwst421 16:a5f5bc55d1bb 252 * lcd.printString("destroyed half",0,3);
davidwst421 16:a5f5bc55d1bb 253 * lcd.printString("of all life",9,4);
davidwst421 16:a5f5bc55d1bb 254 * lcd.printString("on Earth",18,5);
davidwst421 16:a5f5bc55d1bb 255 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 256 * wait(1.0);
davidwst421 16:a5f5bc55d1bb 257 * lcd.printString("(Press start)",3,1);
davidwst421 16:a5f5bc55d1bb 258 * wait(1.0);
davidwst421 16:a5f5bc55d1bb 259 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // while-looping until the button is on
davidwst421 16:a5f5bc55d1bb 260 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 261 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 262 * }
davidwst421 16:a5f5bc55d1bb 263 *
davidwst421 16:a5f5bc55d1bb 264 * lcd.clear(); // background story
davidwst421 16:a5f5bc55d1bb 265 * lcd.printString("You are a",12,0);
davidwst421 16:a5f5bc55d1bb 266 * lcd.printString("member of",15,1);
davidwst421 16:a5f5bc55d1bb 267 * lcd.printString("Avengers and",6,2);
davidwst421 16:a5f5bc55d1bb 268 * lcd.printString("you need to",9,3);
davidwst421 16:a5f5bc55d1bb 269 * lcd.printString("time travel in",0,4);
davidwst421 16:a5f5bc55d1bb 270 * lcd.printString("Quantum realm",3,5);
davidwst421 16:a5f5bc55d1bb 271 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 272 * wait(1.0);
davidwst421 16:a5f5bc55d1bb 273 * while ( pad.check_event(Gamepad::START_PRESSED) == false) { // while-looping until the button is on
davidwst421 16:a5f5bc55d1bb 274 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 275 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 276 * }
davidwst421 16:a5f5bc55d1bb 277 *
davidwst421 16:a5f5bc55d1bb 278 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // tutorial with animation
davidwst421 16:a5f5bc55d1bb 279 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 280 * lcd.printString("Use your",18,0);
davidwst421 16:a5f5bc55d1bb 281 * lcd.printString("joystick to",9,1);
davidwst421 16:a5f5bc55d1bb 282 * lcd.printString("send yourself",3,2);
davidwst421 16:a5f5bc55d1bb 283 * lcd.printString("to the right",6,3);
davidwst421 16:a5f5bc55d1bb 284 * lcd.printString("Wormhole",18,4);
davidwst421 16:a5f5bc55d1bb 285 * lcd.drawSprite(0,40,8,84,(int *)intro0);
davidwst421 16:a5f5bc55d1bb 286 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 287 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 288 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 289 * lcd.printString("Use your",18,0);
davidwst421 16:a5f5bc55d1bb 290 * lcd.printString("joystick to",9,1);
davidwst421 16:a5f5bc55d1bb 291 * lcd.printString("send yourself",3,2);
davidwst421 16:a5f5bc55d1bb 292 * lcd.printString("to the right",6,3);
davidwst421 16:a5f5bc55d1bb 293 * lcd.printString("Wormhole",18,4);
davidwst421 16:a5f5bc55d1bb 294 * lcd.drawSprite(0,40,8,84,(int *)intro1);
davidwst421 16:a5f5bc55d1bb 295 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 296 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 297 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 298 * lcd.printString("Use your",18,0);
davidwst421 16:a5f5bc55d1bb 299 * lcd.printString("joystick to",9,1);
davidwst421 16:a5f5bc55d1bb 300 * lcd.printString("send yourself",3,2);
davidwst421 16:a5f5bc55d1bb 301 * lcd.printString("to the right",6,3);
davidwst421 16:a5f5bc55d1bb 302 * lcd.printString("Wormhole",18,4);
davidwst421 16:a5f5bc55d1bb 303 * lcd.drawSprite(0,40,8,84,(int *)intro2);
davidwst421 16:a5f5bc55d1bb 304 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 305 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 306 * }
davidwst421 16:a5f5bc55d1bb 307 *
davidwst421 16:a5f5bc55d1bb 308 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // tutorial with animation
davidwst421 16:a5f5bc55d1bb 309 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 310 * lcd.printString("try not to",12,0);
davidwst421 16:a5f5bc55d1bb 311 * lcd.printString("interrupt",15,1);
davidwst421 16:a5f5bc55d1bb 312 * lcd.printString("the time",0,2);
davidwst421 16:a5f5bc55d1bb 313 * lcd.printString("line but",0,3);
davidwst421 16:a5f5bc55d1bb 314 * lcd.printString("pass thro.",12,4);
davidwst421 16:a5f5bc55d1bb 315 * lcd.printString("the gap",21,5);
davidwst421 16:a5f5bc55d1bb 316 * lcd.drawSprite(54,16,16,18,(int *)intro3);
davidwst421 16:a5f5bc55d1bb 317 * lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 16:a5f5bc55d1bb 318 * lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 16:a5f5bc55d1bb 319 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 320 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 321 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 322 * lcd.printString("try not to",12,0);
davidwst421 16:a5f5bc55d1bb 323 * lcd.printString("interrupt",15,1);
davidwst421 16:a5f5bc55d1bb 324 * lcd.printString("the time",0,2);
davidwst421 16:a5f5bc55d1bb 325 * lcd.printString("line but",0,3);
davidwst421 16:a5f5bc55d1bb 326 * lcd.printString("pass thro.",12,4);
davidwst421 16:a5f5bc55d1bb 327 * lcd.printString("the gap",21,5);
davidwst421 16:a5f5bc55d1bb 328 * lcd.drawSprite(60,16,16,18,(int *)intro3);
davidwst421 16:a5f5bc55d1bb 329 * lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 16:a5f5bc55d1bb 330 * lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 16:a5f5bc55d1bb 331 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 332 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 333 * }
davidwst421 16:a5f5bc55d1bb 334 *
davidwst421 16:a5f5bc55d1bb 335 * lcd.clear(); // last message before the game begins
davidwst421 16:a5f5bc55d1bb 336 * lcd.printString("retrieve 6",12,0);
davidwst421 16:a5f5bc55d1bb 337 * lcd.printString("stones and",12,1);
davidwst421 16:a5f5bc55d1bb 338 * lcd.printString("win the game",6,2);
davidwst421 16:a5f5bc55d1bb 339 * lcd.printString("God speed",15,3);
davidwst421 16:a5f5bc55d1bb 340 * lcd.printString("Avengers!",15,4);
davidwst421 16:a5f5bc55d1bb 341 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 342 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 343 *
davidwst421 16:a5f5bc55d1bb 344 * while (pad.check_event(Gamepad::START_PRESSED) == false) { //sparking leds
davidwst421 16:a5f5bc55d1bb 345 * pad.leds_on();
davidwst421 16:a5f5bc55d1bb 346 * wait(0.25);
davidwst421 16:a5f5bc55d1bb 347 * pad.leds_off();
davidwst421 16:a5f5bc55d1bb 348 * wait(0.25);
davidwst421 16:a5f5bc55d1bb 349 * }
davidwst421 16:a5f5bc55d1bb 350 * }
davidwst421 16:a5f5bc55d1bb 351 *
davidwst421 16:a5f5bc55d1bb 352 * void render() {
davidwst421 16:a5f5bc55d1bb 353 * // clear screen, re-draw and refresh
davidwst421 16:a5f5bc55d1bb 354 * lcd.clear();
davidwst421 16:a5f5bc55d1bb 355 * eng.draw(lcd);
davidwst421 16:a5f5bc55d1bb 356 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 357 * }
davidwst421 16:a5f5bc55d1bb 358 *
davidwst421 16:a5f5bc55d1bb 359 * void fingersnap() {
davidwst421 16:a5f5bc55d1bb 360 * lcd.clear(); // at this point the game has broken the while loop, clear screen to display congrat message
davidwst421 16:a5f5bc55d1bb 361 * lcd.printString("Congrat!!",15,0);
davidwst421 16:a5f5bc55d1bb 362 * lcd.printString("Credit: STWong",0,1);
davidwst421 16:a5f5bc55d1bb 363 * lcd.printString("201186503",15,2);
davidwst421 16:a5f5bc55d1bb 364 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 365 *
davidwst421 16:a5f5bc55d1bb 366 * pad.tone(440.00,0.21); // avenger theme again
davidwst421 16:a5f5bc55d1bb 367 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 368 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 369 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 370 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 371 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 372 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 373 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 374 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 375 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 376 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 377 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 378 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 379 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 380 * pad.tone(587.3,0.42);
davidwst421 16:a5f5bc55d1bb 381 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 382 * pad.tone(880.0,0.21);
davidwst421 16:a5f5bc55d1bb 383 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 384 * pad.tone(784.0,1.40);
davidwst421 16:a5f5bc55d1bb 385 * wait(1.40);
davidwst421 16:a5f5bc55d1bb 386 * pad.tone(698.5,0.70);
davidwst421 16:a5f5bc55d1bb 387 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 388 * pad.tone(659.3,0.70);
davidwst421 16:a5f5bc55d1bb 389 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 390 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 391 * wait(0.70);
davidwst421 16:a5f5bc55d1bb 392 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // enter loop waiting to restart the game
davidwst421 16:a5f5bc55d1bb 393 * lcd.printString("press start",9,4);
davidwst421 16:a5f5bc55d1bb 394 * lcd.printString("to return",15,5);
davidwst421 16:a5f5bc55d1bb 395 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 396 * pad.leds_on();
davidwst421 16:a5f5bc55d1bb 397 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 398 * pad.leds_off();
davidwst421 16:a5f5bc55d1bb 399 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 400 * }
davidwst421 16:a5f5bc55d1bb 401 * }
davidwst421 16:a5f5bc55d1bb 402 *
davidwst421 16:a5f5bc55d1bb 403 * void endgame() {
davidwst421 16:a5f5bc55d1bb 404 * lcd.clear(); //break the while loop and enter gameover
davidwst421 16:a5f5bc55d1bb 405 * lcd.printString("Mr.Stark",18,1);
davidwst421 16:a5f5bc55d1bb 406 * lcd.printString("I don't feel",6,2);
davidwst421 16:a5f5bc55d1bb 407 * lcd.printString("so good ...",9,3);
davidwst421 16:a5f5bc55d1bb 408 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 409 *
davidwst421 16:a5f5bc55d1bb 410 * pad.tone(587.3,0.63); // play sad music when lose
davidwst421 16:a5f5bc55d1bb 411 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 412 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 413 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 414 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 415 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 416 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 417 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 418 * pad.tone(587.3,0.63);
davidwst421 16:a5f5bc55d1bb 419 * wait(0.63);
davidwst421 16:a5f5bc55d1bb 420 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 421 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 422 * pad.tone(698.5,0.42);
davidwst421 16:a5f5bc55d1bb 423 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 424 * pad.tone(659.3,0.21);
davidwst421 16:a5f5bc55d1bb 425 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 426 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 427 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 428 * pad.tone(659.3,0.42);
davidwst421 16:a5f5bc55d1bb 429 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 430 * pad.tone(587.3,0.21);
davidwst421 16:a5f5bc55d1bb 431 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 432 * pad.tone(0.0,0.06);
davidwst421 16:a5f5bc55d1bb 433 * wait(0.06);
davidwst421 16:a5f5bc55d1bb 434 * pad.tone(587.3,0.42);
davidwst421 16:a5f5bc55d1bb 435 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 436 * pad.tone(554.4,0.21);
davidwst421 16:a5f5bc55d1bb 437 * wait(0.21);
davidwst421 16:a5f5bc55d1bb 438 * pad.tone(587.3,0.42);
davidwst421 16:a5f5bc55d1bb 439 * wait(0.42);
davidwst421 16:a5f5bc55d1bb 440 * while (pad.check_event(Gamepad::START_PRESSED) == false) { // enter loop waiting to restart the game
davidwst421 16:a5f5bc55d1bb 441 * lcd.printString("press start",9,4);
davidwst421 16:a5f5bc55d1bb 442 * lcd.printString("to return",15,5);
davidwst421 16:a5f5bc55d1bb 443 * lcd.refresh();
davidwst421 16:a5f5bc55d1bb 444 * wait(0.5);
davidwst421 16:a5f5bc55d1bb 445 * }
davidwst421 16:a5f5bc55d1bb 446 * }
davidwst421 16:a5f5bc55d1bb 447 *
davidwst421 16:a5f5bc55d1bb 448 * @endcode
davidwst421 16:a5f5bc55d1bb 449 */
davidwst421 15:749c595b19e2 450
davidwst421 0:fd8eda608206 451 class Engine
davidwst421 0:fd8eda608206 452 {
davidwst421 0:fd8eda608206 453
davidwst421 0:fd8eda608206 454 public:
davidwst421 0:fd8eda608206 455 Engine();
davidwst421 0:fd8eda608206 456 ~Engine();
davidwst421 15:749c595b19e2 457 // constructors
davidwst421 15:749c595b19e2 458 /**
davidwst421 15:749c595b19e2 459 * @brief Initiates the parameters for every objects
davidwst421 15:749c595b19e2 460 * @param wall_width @details Width of Wall
davidwst421 15:749c595b19e2 461 * @param wall_gap @details Gap of Wall
davidwst421 15:749c595b19e2 462 * @param stone_size @details Radius of Stone
davidwst421 15:749c595b19e2 463 * @param speed @details Speed of the moving objects
davidwst421 15:749c595b19e2 464 */
davidwst421 7:193c0fd7afdd 465 void init(int wall_width,int wall_gap,int stone_size,int speed);
davidwst421 15:749c595b19e2 466 /**
davidwst421 15:749c595b19e2 467 * @brief Reads the data input from the joystick
davidwst421 15:749c595b19e2 468 * @param Gamepad @details Gamepad that holds the parameters of the joystick
davidwst421 15:749c595b19e2 469 */
davidwst421 0:fd8eda608206 470 void read_input(Gamepad &pad);
davidwst421 15:749c595b19e2 471 /**
davidwst421 15:749c595b19e2 472 * @brief Draws every objects on the screen using initiate data/update data
davidwst421 15:749c595b19e2 473 * @param N5110 @details LCD which diaplay the game
davidwst421 15:749c595b19e2 474 */
davidwst421 0:fd8eda608206 475 void draw(N5110 &lcd);
davidwst421 15:749c595b19e2 476 /**
davidwst421 15:749c595b19e2 477 * @brief Renews positions for all the objects
davidwst421 15:749c595b19e2 478 * @param Gamepad @details Gamepad that holds the parameters of the joystick
davidwst421 15:749c595b19e2 479 */
davidwst421 0:fd8eda608206 480 void update(Gamepad &pad);
davidwst421 15:749c595b19e2 481 /**
davidwst421 15:749c595b19e2 482 * @brief Gets the score
davidwst421 15:749c595b19e2 483 * @returns The number of score
davidwst421 15:749c595b19e2 484 */
davidwst421 14:13e82f720bea 485 int get_score(); // get score for the incoming events
davidwst421 0:fd8eda608206 486
davidwst421 0:fd8eda608206 487 private:
davidwst421 15:749c595b19e2 488 /**
davidwst421 15:749c595b19e2 489 * @brief Checks whether an collision occurs between Wall and Avenger
davidwst421 15:749c595b19e2 490 * @param Gamepad @details Gamepad that holds the parameters of the joystick
davidwst421 15:749c595b19e2 491 */
davidwst421 0:fd8eda608206 492 void check_wall_collision(Gamepad &pad);
davidwst421 15:749c595b19e2 493 /**
davidwst421 15:749c595b19e2 494 * @brief Checks whether an collision occurs between Stone and Avenger, and lights the leds on
davidwst421 15:749c595b19e2 495 * @param Gamepad @details Gamepad that holds the parameters of the joystick
davidwst421 15:749c595b19e2 496 */
davidwst421 0:fd8eda608206 497 void check_score(Gamepad &pad);
davidwst421 0:fd8eda608206 498
davidwst421 0:fd8eda608206 499 Wall _w0;
davidwst421 0:fd8eda608206 500 Wall _w1;
davidwst421 0:fd8eda608206 501 Wall _w2;
davidwst421 0:fd8eda608206 502 Wall _w3;
davidwst421 0:fd8eda608206 503 Wall _w4;
davidwst421 0:fd8eda608206 504
davidwst421 0:fd8eda608206 505 int _wall_width;
davidwst421 0:fd8eda608206 506 int _wall_gap;
davidwst421 0:fd8eda608206 507 int _stone_size;
davidwst421 0:fd8eda608206 508 int _speed;
davidwst421 0:fd8eda608206 509
davidwst421 14:13e82f720bea 510 // x positions of the walls
davidwst421 0:fd8eda608206 511 int _w0x;
davidwst421 0:fd8eda608206 512 int _w1x;
davidwst421 0:fd8eda608206 513 int _w2x;
davidwst421 0:fd8eda608206 514 int _w3x;
davidwst421 0:fd8eda608206 515 int _w4x;
davidwst421 0:fd8eda608206 516 int _avengerx;
davidwst421 0:fd8eda608206 517 int _stonex;
davidwst421 0:fd8eda608206 518
davidwst421 0:fd8eda608206 519 Avenger _avenger;
davidwst421 0:fd8eda608206 520 Stone _stone;
davidwst421 0:fd8eda608206 521
davidwst421 0:fd8eda608206 522 Direction _d;
davidwst421 0:fd8eda608206 523 float _mag;
davidwst421 6:a0f3dbbc8d33 524 Vector2D _mapped_coord;
davidwst421 6:a0f3dbbc8d33 525
davidwst421 0:fd8eda608206 526
davidwst421 0:fd8eda608206 527 };
davidwst421 0:fd8eda608206 528
davidwst421 0:fd8eda608206 529 #endif