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

Dependencies:   mbed

Committer:
davidwst421
Date:
Thu May 09 07:53:59 2019 +0000
Revision:
15:749c595b19e2
Parent:
14:13e82f720bea
Child:
16:a5f5bc55d1bb
Final with Doxy & comment

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 15:749c595b19e2 12
davidwst421 15:749c595b19e2 13 @brief Class for running functions for main.cpp and retrieving data from other classes
davidwst421 15:749c595b19e2 14
davidwst421 15:749c595b19e2 15 @version 0.56
davidwst421 15:749c595b19e2 16
davidwst421 15:749c595b19e2 17 @author Siuting Wong 201186503
davidwst421 15:749c595b19e2 18
davidwst421 15:749c595b19e2 19 @date 8th May 2019
davidwst421 15:749c595b19e2 20
davidwst421 15:749c595b19e2 21 @code
davidwst421 15:749c595b19e2 22
davidwst421 15:749c595b19e2 23 /////////////// structs /////////////////
davidwst421 15:749c595b19e2 24 struct UserInput {
davidwst421 15:749c595b19e2 25 Direction d;
davidwst421 15:749c595b19e2 26 float mag;
davidwst421 15:749c595b19e2 27 Vector2D mapped_coord;
davidwst421 15:749c595b19e2 28 };
davidwst421 15:749c595b19e2 29 /////////////// objects ///////////////
davidwst421 15:749c595b19e2 30 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
davidwst421 15:749c595b19e2 31 Gamepad pad;
davidwst421 15:749c595b19e2 32 Engine eng;
davidwst421 15:749c595b19e2 33
davidwst421 15:749c595b19e2 34 ///////////// prototypes ///////////////
davidwst421 15:749c595b19e2 35 void init();
davidwst421 15:749c595b19e2 36 void update_game(UserInput input);
davidwst421 15:749c595b19e2 37 void render();
davidwst421 15:749c595b19e2 38 void welcome();
davidwst421 15:749c595b19e2 39 void endgame();
davidwst421 15:749c595b19e2 40 void introduction();
davidwst421 15:749c595b19e2 41 void fingersnap();
davidwst421 15:749c595b19e2 42
davidwst421 15:749c595b19e2 43 ///////////// Images ///////////////
davidwst421 15:749c595b19e2 44 const int Avenger0[25][32] = {
davidwst421 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 70 };
davidwst421 15:749c595b19e2 71
davidwst421 15:749c595b19e2 72 const int Avenger1[25][32] = {
davidwst421 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 98 };
davidwst421 15:749c595b19e2 99
davidwst421 15:749c595b19e2 100 const int intro0[8][84] = {
davidwst421 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 109 };
davidwst421 15:749c595b19e2 110 const int intro1[8][84] = {
davidwst421 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 119 };
davidwst421 15:749c595b19e2 120 const int intro2[8][84] = {
davidwst421 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 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 15:749c595b19e2 129 };
davidwst421 15:749c595b19e2 130
davidwst421 15:749c595b19e2 131 const int intro3[16][18] = {
davidwst421 15:749c595b19e2 132 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 15:749c595b19e2 133 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 15:749c595b19e2 134 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 15:749c595b19e2 135 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 15:749c595b19e2 136 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 15:749c595b19e2 137 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 15:749c595b19e2 138 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 15:749c595b19e2 139 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 15:749c595b19e2 140 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 15:749c595b19e2 141 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 15:749c595b19e2 142 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 15:749c595b19e2 143 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 15:749c595b19e2 144 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 15:749c595b19e2 145 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 15:749c595b19e2 146 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 15:749c595b19e2 147 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 15:749c595b19e2 148 };
davidwst421 15:749c595b19e2 149
davidwst421 15:749c595b19e2 150 ///////////// functions ////////////////
davidwst421 15:749c595b19e2 151 int main() {
davidwst421 15:749c595b19e2 152 while (1) {
davidwst421 15:749c595b19e2 153 int fps = 6;
davidwst421 15:749c595b19e2 154
davidwst421 15:749c595b19e2 155 init(); // initialise and then display welcome screen...
davidwst421 15:749c595b19e2 156 welcome();
davidwst421 15:749c595b19e2 157 introduction(); // The intro of the story
davidwst421 15:749c595b19e2 158 render();
davidwst421 15:749c595b19e2 159 wait(1.0f/fps); // and wait for one frame period
davidwst421 15:749c595b19e2 160
davidwst421 15:749c595b19e2 161 while (1) {
davidwst421 15:749c595b19e2 162 eng.read_input(pad);
davidwst421 15:749c595b19e2 163 eng.update(pad);
davidwst421 15:749c595b19e2 164 render();
davidwst421 15:749c595b19e2 165 wait(1.0f/fps);
davidwst421 15:749c595b19e2 166 if (eng.get_score() < 3) { // setting diffculty regarding the current stone number
davidwst421 15:749c595b19e2 167 fps = 6;
davidwst421 15:749c595b19e2 168 }
davidwst421 15:749c595b19e2 169 if (eng.get_score() == 3) {
davidwst421 15:749c595b19e2 170 fps = 9;
davidwst421 15:749c595b19e2 171 }
davidwst421 15:749c595b19e2 172 if (eng.get_score() == 4) {
davidwst421 15:749c595b19e2 173 fps = 12;
davidwst421 15:749c595b19e2 174 }
davidwst421 15:749c595b19e2 175 if (eng.get_score() == 5) {
davidwst421 15:749c595b19e2 176 fps = 15;
davidwst421 15:749c595b19e2 177 }
davidwst421 15:749c595b19e2 178 if (eng.get_score() == 6) { // you win!!
davidwst421 15:749c595b19e2 179 fingersnap();
davidwst421 15:749c595b19e2 180 break;
davidwst421 15:749c595b19e2 181 } else if (eng.get_score() < 0) { // you lose :(
davidwst421 15:749c595b19e2 182 endgame();
davidwst421 15:749c595b19e2 183 break;
davidwst421 15:749c595b19e2 184 }
davidwst421 15:749c595b19e2 185 }
davidwst421 15:749c595b19e2 186 }
davidwst421 15:749c595b19e2 187 }
davidwst421 15:749c595b19e2 188
davidwst421 15:749c595b19e2 189 void init() {
davidwst421 15:749c595b19e2 190 // need to initialise LCD and Gamepad
davidwst421 15:749c595b19e2 191 lcd.init();
davidwst421 15:749c595b19e2 192 pad.init();
davidwst421 15:749c595b19e2 193
davidwst421 15:749c595b19e2 194 // initialise the game with correct ball and paddle sizes
davidwst421 15:749c595b19e2 195 eng.init(WALL_WIDTH,WALL_GAP,STONE_SIZE,SPEED);
davidwst421 15:749c595b19e2 196 }
davidwst421 15:749c595b19e2 197
davidwst421 15:749c595b19e2 198 void welcome() {
davidwst421 15:749c595b19e2 199 lcd.clear();
davidwst421 15:749c595b19e2 200 lcd.printString("Eternity Stone",0,0); //play messages
davidwst421 15:749c595b19e2 201 lcd.printString("Start story",9,4);
davidwst421 15:749c595b19e2 202 lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 15:749c595b19e2 203 lcd.refresh();
davidwst421 15:749c595b19e2 204 pad.tone(440.00,0.21); // adding avenger music
davidwst421 15:749c595b19e2 205 wait(0.21);
davidwst421 15:749c595b19e2 206 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 207 wait(0.63);
davidwst421 15:749c595b19e2 208 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 209 wait(0.06);
davidwst421 15:749c595b19e2 210 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 211 wait(0.63);
davidwst421 15:749c595b19e2 212 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 213 wait(0.06);
davidwst421 15:749c595b19e2 214 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 215 wait(0.63);
davidwst421 15:749c595b19e2 216 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 217 wait(0.06);
davidwst421 15:749c595b19e2 218 pad.tone(587.3,0.42);
davidwst421 15:749c595b19e2 219 wait(0.42);
davidwst421 15:749c595b19e2 220 pad.tone(880.0,0.21);
davidwst421 15:749c595b19e2 221 wait(0.21);
davidwst421 15:749c595b19e2 222 pad.tone(784.0,1.40);
davidwst421 15:749c595b19e2 223 wait(1.40);
davidwst421 15:749c595b19e2 224 pad.tone(698.5,0.70);
davidwst421 15:749c595b19e2 225 wait(0.70);
davidwst421 15:749c595b19e2 226 pad.tone(659.3,0.70);
davidwst421 15:749c595b19e2 227 wait(0.70);
davidwst421 15:749c595b19e2 228 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 229 wait(0.70);
davidwst421 15:749c595b19e2 230 while (pad.check_event(Gamepad::START_PRESSED) == false) { // animation loop until start button is pressed
davidwst421 15:749c595b19e2 231 lcd.clear();
davidwst421 15:749c595b19e2 232 lcd.printString("Eternity Stone",0,0);
davidwst421 15:749c595b19e2 233 lcd.printString("Start story",9,4);
davidwst421 15:749c595b19e2 234 lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 15:749c595b19e2 235 lcd.refresh();
davidwst421 15:749c595b19e2 236 wait(0.5);
davidwst421 15:749c595b19e2 237 lcd.clear();
davidwst421 15:749c595b19e2 238 lcd.printString("Eternity Stone",0,0);
davidwst421 15:749c595b19e2 239 lcd.printString("Start story",9,4);
davidwst421 15:749c595b19e2 240 lcd.drawSprite(25,8,25,32,(int *)Avenger1);
davidwst421 15:749c595b19e2 241 lcd.refresh();
davidwst421 15:749c595b19e2 242 wait(0.5);
davidwst421 15:749c595b19e2 243 }
davidwst421 15:749c595b19e2 244 }
davidwst421 15:749c595b19e2 245
davidwst421 15:749c595b19e2 246 void introduction() { // background story
davidwst421 15:749c595b19e2 247 lcd.clear();
davidwst421 15:749c595b19e2 248 lcd.printString("Five years",12,0);
davidwst421 15:749c595b19e2 249 lcd.refresh();
davidwst421 15:749c595b19e2 250 wait(1.0);
davidwst421 15:749c595b19e2 251 lcd.printString("Since Thanos",6,2);
davidwst421 15:749c595b19e2 252 lcd.printString("destroyed half",0,3);
davidwst421 15:749c595b19e2 253 lcd.printString("of all life",9,4);
davidwst421 15:749c595b19e2 254 lcd.printString("on Earth",18,5);
davidwst421 15:749c595b19e2 255 lcd.refresh();
davidwst421 15:749c595b19e2 256 wait(1.0);
davidwst421 15:749c595b19e2 257 lcd.printString("(Press start)",3,1);
davidwst421 15:749c595b19e2 258 wait(1.0);
davidwst421 15:749c595b19e2 259 while (pad.check_event(Gamepad::START_PRESSED) == false) { // while-looping until the button is on
davidwst421 15:749c595b19e2 260 lcd.refresh();
davidwst421 15:749c595b19e2 261 wait(0.5);
davidwst421 15:749c595b19e2 262 }
davidwst421 15:749c595b19e2 263
davidwst421 15:749c595b19e2 264 lcd.clear(); // background story
davidwst421 15:749c595b19e2 265 lcd.printString("You are a",12,0);
davidwst421 15:749c595b19e2 266 lcd.printString("member of",15,1);
davidwst421 15:749c595b19e2 267 lcd.printString("Avengers and",6,2);
davidwst421 15:749c595b19e2 268 lcd.printString("you need to",9,3);
davidwst421 15:749c595b19e2 269 lcd.printString("time travel in",0,4);
davidwst421 15:749c595b19e2 270 lcd.printString("Quantum realm",3,5);
davidwst421 15:749c595b19e2 271 lcd.refresh();
davidwst421 15:749c595b19e2 272 wait(1.0);
davidwst421 15:749c595b19e2 273 while ( pad.check_event(Gamepad::START_PRESSED) == false) { // while-looping until the button is on
davidwst421 15:749c595b19e2 274 lcd.refresh();
davidwst421 15:749c595b19e2 275 wait(0.5);
davidwst421 15:749c595b19e2 276 }
davidwst421 15:749c595b19e2 277
davidwst421 15:749c595b19e2 278 while (pad.check_event(Gamepad::START_PRESSED) == false) { // tutorial with animation
davidwst421 15:749c595b19e2 279 lcd.clear();
davidwst421 15:749c595b19e2 280 lcd.printString("Use your",18,0);
davidwst421 15:749c595b19e2 281 lcd.printString("joystick to",9,1);
davidwst421 15:749c595b19e2 282 lcd.printString("send yourself",3,2);
davidwst421 15:749c595b19e2 283 lcd.printString("to the right",6,3);
davidwst421 15:749c595b19e2 284 lcd.printString("Wormhole",18,4);
davidwst421 15:749c595b19e2 285 lcd.drawSprite(0,40,8,84,(int *)intro0);
davidwst421 15:749c595b19e2 286 lcd.refresh();
davidwst421 15:749c595b19e2 287 wait(0.5);
davidwst421 15:749c595b19e2 288 lcd.clear();
davidwst421 15:749c595b19e2 289 lcd.printString("Use your",18,0);
davidwst421 15:749c595b19e2 290 lcd.printString("joystick to",9,1);
davidwst421 15:749c595b19e2 291 lcd.printString("send yourself",3,2);
davidwst421 15:749c595b19e2 292 lcd.printString("to the right",6,3);
davidwst421 15:749c595b19e2 293 lcd.printString("Wormhole",18,4);
davidwst421 15:749c595b19e2 294 lcd.drawSprite(0,40,8,84,(int *)intro1);
davidwst421 15:749c595b19e2 295 lcd.refresh();
davidwst421 15:749c595b19e2 296 wait(0.5);
davidwst421 15:749c595b19e2 297 lcd.clear();
davidwst421 15:749c595b19e2 298 lcd.printString("Use your",18,0);
davidwst421 15:749c595b19e2 299 lcd.printString("joystick to",9,1);
davidwst421 15:749c595b19e2 300 lcd.printString("send yourself",3,2);
davidwst421 15:749c595b19e2 301 lcd.printString("to the right",6,3);
davidwst421 15:749c595b19e2 302 lcd.printString("Wormhole",18,4);
davidwst421 15:749c595b19e2 303 lcd.drawSprite(0,40,8,84,(int *)intro2);
davidwst421 15:749c595b19e2 304 lcd.refresh();
davidwst421 15:749c595b19e2 305 wait(0.5);
davidwst421 15:749c595b19e2 306 }
davidwst421 15:749c595b19e2 307
davidwst421 15:749c595b19e2 308 while (pad.check_event(Gamepad::START_PRESSED) == false) { // tutorial with animation
davidwst421 15:749c595b19e2 309 lcd.clear();
davidwst421 15:749c595b19e2 310 lcd.printString("try not to",12,0);
davidwst421 15:749c595b19e2 311 lcd.printString("interrupt",15,1);
davidwst421 15:749c595b19e2 312 lcd.printString("the time",0,2);
davidwst421 15:749c595b19e2 313 lcd.printString("line but",0,3);
davidwst421 15:749c595b19e2 314 lcd.printString("pass thro.",12,4);
davidwst421 15:749c595b19e2 315 lcd.printString("the gap",21,5);
davidwst421 15:749c595b19e2 316 lcd.drawSprite(54,16,16,18,(int *)intro3);
davidwst421 15:749c595b19e2 317 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 15:749c595b19e2 318 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 15:749c595b19e2 319 lcd.refresh();
davidwst421 15:749c595b19e2 320 wait(0.5);
davidwst421 15:749c595b19e2 321 lcd.clear();
davidwst421 15:749c595b19e2 322 lcd.printString("try not to",12,0);
davidwst421 15:749c595b19e2 323 lcd.printString("interrupt",15,1);
davidwst421 15:749c595b19e2 324 lcd.printString("the time",0,2);
davidwst421 15:749c595b19e2 325 lcd.printString("line but",0,3);
davidwst421 15:749c595b19e2 326 lcd.printString("pass thro.",12,4);
davidwst421 15:749c595b19e2 327 lcd.printString("the gap",21,5);
davidwst421 15:749c595b19e2 328 lcd.drawSprite(60,16,16,18,(int *)intro3);
davidwst421 15:749c595b19e2 329 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 15:749c595b19e2 330 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 15:749c595b19e2 331 lcd.refresh();
davidwst421 15:749c595b19e2 332 wait(0.5);
davidwst421 15:749c595b19e2 333 }
davidwst421 15:749c595b19e2 334
davidwst421 15:749c595b19e2 335 lcd.clear(); // last message before the game begins
davidwst421 15:749c595b19e2 336 lcd.printString("retrieve 6",12,0);
davidwst421 15:749c595b19e2 337 lcd.printString("stones and",12,1);
davidwst421 15:749c595b19e2 338 lcd.printString("win the game",6,2);
davidwst421 15:749c595b19e2 339 lcd.printString("God speed",15,3);
davidwst421 15:749c595b19e2 340 lcd.printString("Avengers!",15,4);
davidwst421 15:749c595b19e2 341 lcd.refresh();
davidwst421 15:749c595b19e2 342 wait(0.5);
davidwst421 15:749c595b19e2 343
davidwst421 15:749c595b19e2 344 while (pad.check_event(Gamepad::START_PRESSED) == false) { //sparking leds
davidwst421 15:749c595b19e2 345 pad.leds_on();
davidwst421 15:749c595b19e2 346 wait(0.25);
davidwst421 15:749c595b19e2 347 pad.leds_off();
davidwst421 15:749c595b19e2 348 wait(0.25);
davidwst421 15:749c595b19e2 349 }
davidwst421 15:749c595b19e2 350 }
davidwst421 15:749c595b19e2 351
davidwst421 15:749c595b19e2 352 void render() {
davidwst421 15:749c595b19e2 353 // clear screen, re-draw and refresh
davidwst421 15:749c595b19e2 354 lcd.clear();
davidwst421 15:749c595b19e2 355 eng.draw(lcd);
davidwst421 15:749c595b19e2 356 lcd.refresh();
davidwst421 15:749c595b19e2 357 }
davidwst421 15:749c595b19e2 358
davidwst421 15:749c595b19e2 359 void fingersnap() {
davidwst421 15:749c595b19e2 360 lcd.clear(); // at this point the game has broken the while loop, clear screen to display congrat message
davidwst421 15:749c595b19e2 361 lcd.printString("Congrat!!",15,0);
davidwst421 15:749c595b19e2 362 lcd.printString("Credit: STWong",0,1);
davidwst421 15:749c595b19e2 363 lcd.printString("201186503",15,2);
davidwst421 15:749c595b19e2 364 lcd.refresh();
davidwst421 15:749c595b19e2 365
davidwst421 15:749c595b19e2 366 pad.tone(440.00,0.21); // avenger theme again
davidwst421 15:749c595b19e2 367 wait(0.21);
davidwst421 15:749c595b19e2 368 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 369 wait(0.63);
davidwst421 15:749c595b19e2 370 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 371 wait(0.06);
davidwst421 15:749c595b19e2 372 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 373 wait(0.63);
davidwst421 15:749c595b19e2 374 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 375 wait(0.06);
davidwst421 15:749c595b19e2 376 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 377 wait(0.63);
davidwst421 15:749c595b19e2 378 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 379 wait(0.06);
davidwst421 15:749c595b19e2 380 pad.tone(587.3,0.42);
davidwst421 15:749c595b19e2 381 wait(0.42);
davidwst421 15:749c595b19e2 382 pad.tone(880.0,0.21);
davidwst421 15:749c595b19e2 383 wait(0.21);
davidwst421 15:749c595b19e2 384 pad.tone(784.0,1.40);
davidwst421 15:749c595b19e2 385 wait(1.40);
davidwst421 15:749c595b19e2 386 pad.tone(698.5,0.70);
davidwst421 15:749c595b19e2 387 wait(0.70);
davidwst421 15:749c595b19e2 388 pad.tone(659.3,0.70);
davidwst421 15:749c595b19e2 389 wait(0.70);
davidwst421 15:749c595b19e2 390 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 391 wait(0.70);
davidwst421 15:749c595b19e2 392 while (pad.check_event(Gamepad::START_PRESSED) == false) { // enter loop waiting to restart the game
davidwst421 15:749c595b19e2 393 lcd.printString("press start",9,4);
davidwst421 15:749c595b19e2 394 lcd.printString("to return",15,5);
davidwst421 15:749c595b19e2 395 lcd.refresh();
davidwst421 15:749c595b19e2 396 pad.leds_on();
davidwst421 15:749c595b19e2 397 wait(0.5);
davidwst421 15:749c595b19e2 398 pad.leds_off();
davidwst421 15:749c595b19e2 399 wait(0.5);
davidwst421 15:749c595b19e2 400 }
davidwst421 15:749c595b19e2 401 }
davidwst421 15:749c595b19e2 402
davidwst421 15:749c595b19e2 403 void endgame() {
davidwst421 15:749c595b19e2 404 lcd.clear(); //break the while loop and enter gameover
davidwst421 15:749c595b19e2 405 lcd.printString("Mr.Stark",18,1);
davidwst421 15:749c595b19e2 406 lcd.printString("I don't feel",6,2);
davidwst421 15:749c595b19e2 407 lcd.printString("so good ...",9,3);
davidwst421 15:749c595b19e2 408 lcd.refresh();
davidwst421 15:749c595b19e2 409
davidwst421 15:749c595b19e2 410 pad.tone(587.3,0.63); // play sad music when lose
davidwst421 15:749c595b19e2 411 wait(0.63);
davidwst421 15:749c595b19e2 412 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 413 wait(0.06);
davidwst421 15:749c595b19e2 414 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 415 wait(0.63);
davidwst421 15:749c595b19e2 416 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 417 wait(0.06);
davidwst421 15:749c595b19e2 418 pad.tone(587.3,0.63);
davidwst421 15:749c595b19e2 419 wait(0.63);
davidwst421 15:749c595b19e2 420 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 421 wait(0.06);
davidwst421 15:749c595b19e2 422 pad.tone(698.5,0.42);
davidwst421 15:749c595b19e2 423 wait(0.42);
davidwst421 15:749c595b19e2 424 pad.tone(659.3,0.21);
davidwst421 15:749c595b19e2 425 wait(0.21);
davidwst421 15:749c595b19e2 426 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 427 wait(0.06);
davidwst421 15:749c595b19e2 428 pad.tone(659.3,0.42);
davidwst421 15:749c595b19e2 429 wait(0.42);
davidwst421 15:749c595b19e2 430 pad.tone(587.3,0.21);
davidwst421 15:749c595b19e2 431 wait(0.21);
davidwst421 15:749c595b19e2 432 pad.tone(0.0,0.06);
davidwst421 15:749c595b19e2 433 wait(0.06);
davidwst421 15:749c595b19e2 434 pad.tone(587.3,0.42);
davidwst421 15:749c595b19e2 435 wait(0.42);
davidwst421 15:749c595b19e2 436 pad.tone(554.4,0.21);
davidwst421 15:749c595b19e2 437 wait(0.21);
davidwst421 15:749c595b19e2 438 pad.tone(587.3,0.42);
davidwst421 15:749c595b19e2 439 wait(0.42);
davidwst421 15:749c595b19e2 440 while (pad.check_event(Gamepad::START_PRESSED) == false) { // enter loop waiting to restart the game
davidwst421 15:749c595b19e2 441 lcd.printString("press start",9,4);
davidwst421 15:749c595b19e2 442 lcd.printString("to return",15,5);
davidwst421 15:749c595b19e2 443 lcd.refresh();
davidwst421 15:749c595b19e2 444 wait(0.5);
davidwst421 15:749c595b19e2 445 }
davidwst421 15:749c595b19e2 446 }
davidwst421 15:749c595b19e2 447
davidwst421 15:749c595b19e2 448 @endcode
davidwst421 15:749c595b19e2 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