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

Dependencies:   mbed

Committer:
davidwst421
Date:
Thu May 09 03:40:19 2019 +0000
Revision:
10:961bf7a76f45
Parent:
9:f88f3f50bbee
Child:
11:4723e7f3f1d2
debug, add avenger theme music

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidwst421 0:fd8eda608206 1 /*
davidwst421 0:fd8eda608206 2 ELEC2645 Embedded Systems Project
davidwst421 0:fd8eda608206 3 School of Electronic & Electrical Engineering
davidwst421 0:fd8eda608206 4 University of Leeds
davidwst421 0:fd8eda608206 5 Name: Siuting Wong
davidwst421 0:fd8eda608206 6 Username: Siuting Wong
davidwst421 0:fd8eda608206 7 Student ID Number: 201186503
davidwst421 0:fd8eda608206 8 Date: 06/05/2019
davidwst421 0:fd8eda608206 9 */
davidwst421 0:fd8eda608206 10 ///////// pre-processor directives ////////
davidwst421 0:fd8eda608206 11 #include "mbed.h"
davidwst421 0:fd8eda608206 12 #include "Gamepad.h"
davidwst421 0:fd8eda608206 13 #include "N5110.h"
davidwst421 0:fd8eda608206 14 #include "Engine.h"
davidwst421 0:fd8eda608206 15
davidwst421 0:fd8eda608206 16 #define WALL_WIDTH 2
davidwst421 8:97576c8761a8 17 #define WALL_GAP 12
davidwst421 0:fd8eda608206 18 #define AVENGER_SIZE 2
davidwst421 6:a0f3dbbc8d33 19 #define STONE_SIZE 2
davidwst421 2:00a3edbe39b0 20 #define SPEED 2
davidwst421 0:fd8eda608206 21
davidwst421 0:fd8eda608206 22 /////////////// structs /////////////////
davidwst421 0:fd8eda608206 23 struct UserInput {
davidwst421 0:fd8eda608206 24 Direction d;
davidwst421 0:fd8eda608206 25 float mag;
davidwst421 6:a0f3dbbc8d33 26 Vector2D mapped_coord;
davidwst421 0:fd8eda608206 27 };
davidwst421 0:fd8eda608206 28 /////////////// objects ///////////////
davidwst421 0:fd8eda608206 29 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
davidwst421 0:fd8eda608206 30 Gamepad pad;
davidwst421 0:fd8eda608206 31 Engine eng;
davidwst421 0:fd8eda608206 32
davidwst421 0:fd8eda608206 33 ///////////// prototypes ///////////////
davidwst421 0:fd8eda608206 34 void init();
davidwst421 0:fd8eda608206 35 void update_game(UserInput input);
davidwst421 0:fd8eda608206 36 void render();
davidwst421 0:fd8eda608206 37 void welcome();
davidwst421 4:fcd80b40f257 38 void endgame();
davidwst421 7:193c0fd7afdd 39 void introduction();
davidwst421 10:961bf7a76f45 40 void fingersnap();
davidwst421 0:fd8eda608206 41
davidwst421 7:193c0fd7afdd 42 const int Avenger0[25][32] = {
davidwst421 7:193c0fd7afdd 43 { 0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 44 { 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 7:193c0fd7afdd 45 { 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 7:193c0fd7afdd 46 { 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 7:193c0fd7afdd 47 { 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 7:193c0fd7afdd 48 { 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 7:193c0fd7afdd 49 { 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 7:193c0fd7afdd 50 { 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 7:193c0fd7afdd 51 { 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 7:193c0fd7afdd 52 { 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 7:193c0fd7afdd 53 { 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 7:193c0fd7afdd 54 { 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 7:193c0fd7afdd 55 { 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 7:193c0fd7afdd 56 { 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 7:193c0fd7afdd 57 { 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 7:193c0fd7afdd 58 { 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 7:193c0fd7afdd 59 { 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 7:193c0fd7afdd 60 { 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 7:193c0fd7afdd 61 { 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 7:193c0fd7afdd 62 { 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 7:193c0fd7afdd 63 { 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 7:193c0fd7afdd 64 { 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 7:193c0fd7afdd 65 { 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 7:193c0fd7afdd 66 { 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 7:193c0fd7afdd 67 { 0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 68 };
davidwst421 7:193c0fd7afdd 69
davidwst421 7:193c0fd7afdd 70 const int Avenger1[25][32] = {
davidwst421 7:193c0fd7afdd 71 { 0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 72 { 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 7:193c0fd7afdd 73 { 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 7:193c0fd7afdd 74 { 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 7:193c0fd7afdd 75 { 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 7:193c0fd7afdd 76 { 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 7:193c0fd7afdd 77 { 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 7:193c0fd7afdd 78 { 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 7:193c0fd7afdd 79 { 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 7:193c0fd7afdd 80 { 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 7:193c0fd7afdd 81 { 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 7:193c0fd7afdd 82 { 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 7:193c0fd7afdd 83 { 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 7:193c0fd7afdd 84 { 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 7:193c0fd7afdd 85 { 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 7:193c0fd7afdd 86 { 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 7:193c0fd7afdd 87 { 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 7:193c0fd7afdd 88 { 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 7:193c0fd7afdd 89 { 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 7:193c0fd7afdd 90 { 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 7:193c0fd7afdd 91 { 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 7:193c0fd7afdd 92 { 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 7:193c0fd7afdd 93 { 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 7:193c0fd7afdd 94 { 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 7:193c0fd7afdd 95 { 0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 96 };
davidwst421 7:193c0fd7afdd 97
davidwst421 7:193c0fd7afdd 98 const int intro0[8][84] = {
davidwst421 7:193c0fd7afdd 99 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 100 { 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 7:193c0fd7afdd 101 { 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 7:193c0fd7afdd 102 { 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 7:193c0fd7afdd 103 { 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 7:193c0fd7afdd 104 { 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 7:193c0fd7afdd 105 { 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 7:193c0fd7afdd 106 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 107 };
davidwst421 7:193c0fd7afdd 108 const int intro1[8][84] = {
davidwst421 7:193c0fd7afdd 109 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 110 { 0,0,0,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 7:193c0fd7afdd 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,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 7:193c0fd7afdd 112 { 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 7:193c0fd7afdd 113 { 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 7:193c0fd7afdd 114 { 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 7:193c0fd7afdd 115 { 0,0,0,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 7:193c0fd7afdd 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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 7:193c0fd7afdd 117 };
davidwst421 7:193c0fd7afdd 118 const int intro2[8][84] = {
davidwst421 7:193c0fd7afdd 119 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 8:97576c8761a8 120 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 8:97576c8761a8 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,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 8:97576c8761a8 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,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 8:97576c8761a8 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,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 8:97576c8761a8 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,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 8:97576c8761a8 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,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 7:193c0fd7afdd 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,0,0,0,0,0,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 7:193c0fd7afdd 127 };
davidwst421 9:f88f3f50bbee 128
davidwst421 10:961bf7a76f45 129 const int intro3[16][18] = {
davidwst421 10:961bf7a76f45 130 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 10:961bf7a76f45 131 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 10:961bf7a76f45 132 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 10:961bf7a76f45 133 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 10:961bf7a76f45 134 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 10:961bf7a76f45 135 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 10:961bf7a76f45 136 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 10:961bf7a76f45 137 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 10:961bf7a76f45 138 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 10:961bf7a76f45 139 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 10:961bf7a76f45 140 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 },
davidwst421 10:961bf7a76f45 141 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 },
davidwst421 10:961bf7a76f45 142 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0 },
davidwst421 10:961bf7a76f45 143 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0 },
davidwst421 10:961bf7a76f45 144 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 },
davidwst421 10:961bf7a76f45 145 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 },
davidwst421 9:f88f3f50bbee 146 };
davidwst421 9:f88f3f50bbee 147
davidwst421 0:fd8eda608206 148 ///////////// functions ////////////////
davidwst421 0:fd8eda608206 149 int main() {
davidwst421 8:97576c8761a8 150 while (1) {
davidwst421 8:97576c8761a8 151 int fps = 8;
davidwst421 8:97576c8761a8 152
davidwst421 8:97576c8761a8 153 init(); // initialise and then display welcome screen...
davidwst421 8:97576c8761a8 154 welcome();
davidwst421 8:97576c8761a8 155 introduction();
davidwst421 8:97576c8761a8 156 render();
davidwst421 8:97576c8761a8 157 wait(1.0f/fps); // and wait for one frame period
davidwst421 0:fd8eda608206 158
davidwst421 10:961bf7a76f45 159 while (1) {
davidwst421 8:97576c8761a8 160 eng.read_input(pad);
davidwst421 8:97576c8761a8 161 eng.update(pad);
davidwst421 8:97576c8761a8 162 render();
davidwst421 8:97576c8761a8 163 wait(1.0f/fps);
davidwst421 10:961bf7a76f45 164 if (eng.get_score() == 6) {
davidwst421 10:961bf7a76f45 165 fingersnap();
davidwst421 10:961bf7a76f45 166 break;
davidwst421 10:961bf7a76f45 167 } else if (eng.get_score() < 0) {
davidwst421 10:961bf7a76f45 168 endgame();
davidwst421 10:961bf7a76f45 169 break;
davidwst421 10:961bf7a76f45 170 }
davidwst421 8:97576c8761a8 171 }
davidwst421 0:fd8eda608206 172 }
davidwst421 0:fd8eda608206 173 }
davidwst421 0:fd8eda608206 174
davidwst421 0:fd8eda608206 175 void init() {
davidwst421 0:fd8eda608206 176
davidwst421 0:fd8eda608206 177 // need to initialise LCD and Gamepad
davidwst421 0:fd8eda608206 178 lcd.init();
davidwst421 0:fd8eda608206 179 pad.init();
davidwst421 0:fd8eda608206 180
davidwst421 0:fd8eda608206 181 // initialise the game with correct ball and paddle sizes
davidwst421 7:193c0fd7afdd 182 eng.init(WALL_WIDTH,WALL_GAP,STONE_SIZE,SPEED);
davidwst421 0:fd8eda608206 183 }
davidwst421 0:fd8eda608206 184
davidwst421 0:fd8eda608206 185 void welcome() {
davidwst421 10:961bf7a76f45 186 lcd.clear();
davidwst421 10:961bf7a76f45 187 lcd.printString("Eternity Stone",0,0);
davidwst421 10:961bf7a76f45 188 lcd.printString("Start story",9,4);
davidwst421 10:961bf7a76f45 189 lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 10:961bf7a76f45 190 lcd.refresh();
davidwst421 10:961bf7a76f45 191 pad.tone(440.00,0.21);
davidwst421 10:961bf7a76f45 192 wait(0.21);
davidwst421 10:961bf7a76f45 193 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 194 wait(0.63);
davidwst421 10:961bf7a76f45 195 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 196 wait(0.06);
davidwst421 10:961bf7a76f45 197 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 198 wait(0.63);
davidwst421 10:961bf7a76f45 199 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 200 wait(0.06);
davidwst421 10:961bf7a76f45 201 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 202 wait(0.63);
davidwst421 10:961bf7a76f45 203 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 204 wait(0.06);
davidwst421 10:961bf7a76f45 205 pad.tone(587.3,0.42);
davidwst421 10:961bf7a76f45 206 wait(0.42);
davidwst421 10:961bf7a76f45 207 pad.tone(880.0,0.21);
davidwst421 10:961bf7a76f45 208 wait(0.21);
davidwst421 10:961bf7a76f45 209 pad.tone(784.0,1.40);
davidwst421 10:961bf7a76f45 210 wait(1.40);
davidwst421 10:961bf7a76f45 211 pad.tone(698.5,0.70);
davidwst421 10:961bf7a76f45 212 wait(0.70);
davidwst421 10:961bf7a76f45 213 pad.tone(659.3,0.70);
davidwst421 10:961bf7a76f45 214 wait(0.70);
davidwst421 10:961bf7a76f45 215 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 216 wait(0.70);
davidwst421 8:97576c8761a8 217 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 0:fd8eda608206 218 lcd.clear();
davidwst421 6:a0f3dbbc8d33 219 lcd.printString("Eternity Stone",0,0);
davidwst421 8:97576c8761a8 220 lcd.printString("Start story",9,4);
davidwst421 6:a0f3dbbc8d33 221 lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 0:fd8eda608206 222 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 223 wait(0.5);
davidwst421 6:a0f3dbbc8d33 224 lcd.clear();
davidwst421 6:a0f3dbbc8d33 225 lcd.printString("Eternity Stone",0,0);
davidwst421 8:97576c8761a8 226 lcd.printString("Start story",9,4);
davidwst421 6:a0f3dbbc8d33 227 lcd.drawSprite(25,8,25,32,(int *)Avenger1);
davidwst421 6:a0f3dbbc8d33 228 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 229 wait(0.5);
davidwst421 0:fd8eda608206 230 }
davidwst421 0:fd8eda608206 231 }
davidwst421 0:fd8eda608206 232
davidwst421 7:193c0fd7afdd 233 void introduction() {
davidwst421 7:193c0fd7afdd 234 lcd.clear();
davidwst421 10:961bf7a76f45 235 lcd.printString("Five years",12,0);
davidwst421 7:193c0fd7afdd 236 lcd.refresh();
davidwst421 7:193c0fd7afdd 237 wait(1.0);
davidwst421 7:193c0fd7afdd 238 lcd.printString("Since Thanos",6,2);
davidwst421 8:97576c8761a8 239 lcd.printString("destroyed half",0,3);
davidwst421 7:193c0fd7afdd 240 lcd.printString("of all life",9,4);
davidwst421 7:193c0fd7afdd 241 lcd.printString("on Earth",18,5);
davidwst421 7:193c0fd7afdd 242 lcd.refresh();
davidwst421 9:f88f3f50bbee 243 wait(2.0);
davidwst421 8:97576c8761a8 244 lcd.printString("(Press start)",3,1);
davidwst421 7:193c0fd7afdd 245 wait(1.0);
davidwst421 7:193c0fd7afdd 246 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 247 lcd.refresh();
davidwst421 7:193c0fd7afdd 248 wait(0.5);
davidwst421 7:193c0fd7afdd 249 }
davidwst421 7:193c0fd7afdd 250 lcd.clear();
davidwst421 7:193c0fd7afdd 251 lcd.printString("You are a",12,0);
davidwst421 7:193c0fd7afdd 252 lcd.printString("member of",15,1);
davidwst421 7:193c0fd7afdd 253 lcd.printString("Avengers and",6,2);
davidwst421 7:193c0fd7afdd 254 lcd.printString("you need to",9,3);
davidwst421 7:193c0fd7afdd 255 lcd.printString("time travel in",0,4);
davidwst421 7:193c0fd7afdd 256 lcd.printString("Quantum realm",3,5);
davidwst421 7:193c0fd7afdd 257 lcd.refresh();
davidwst421 7:193c0fd7afdd 258 wait(3.0);
davidwst421 7:193c0fd7afdd 259 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 260 lcd.refresh();
davidwst421 7:193c0fd7afdd 261 wait(0.5);
davidwst421 7:193c0fd7afdd 262 }
davidwst421 7:193c0fd7afdd 263 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 264 lcd.clear();
davidwst421 10:961bf7a76f45 265 lcd.printString("Use your",18,0);
davidwst421 10:961bf7a76f45 266 lcd.printString("joystick to",9,1);
davidwst421 7:193c0fd7afdd 267 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 268 lcd.printString("to the right",6,3);
davidwst421 10:961bf7a76f45 269 lcd.printString("Wormhole",18,4);
davidwst421 7:193c0fd7afdd 270 lcd.drawSprite(0,40,8,84,(int *)intro0);
davidwst421 7:193c0fd7afdd 271 lcd.refresh();
davidwst421 7:193c0fd7afdd 272 wait(0.5);
davidwst421 7:193c0fd7afdd 273 lcd.clear();
davidwst421 10:961bf7a76f45 274 lcd.printString("Use your",18,0);
davidwst421 10:961bf7a76f45 275 lcd.printString("joystick to",9,1);
davidwst421 7:193c0fd7afdd 276 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 277 lcd.printString("to the right",6,3);
davidwst421 10:961bf7a76f45 278 lcd.printString("Wormhole",18,4);
davidwst421 7:193c0fd7afdd 279 lcd.drawSprite(0,40,8,84,(int *)intro1);
davidwst421 7:193c0fd7afdd 280 lcd.refresh();
davidwst421 7:193c0fd7afdd 281 wait(0.5);
davidwst421 7:193c0fd7afdd 282 lcd.clear();
davidwst421 9:f88f3f50bbee 283 lcd.printString("Use your",18,0);
davidwst421 9:f88f3f50bbee 284 lcd.printString("joystick to",9,1);
davidwst421 7:193c0fd7afdd 285 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 286 lcd.printString("to the right",6,3);
davidwst421 9:f88f3f50bbee 287 lcd.printString("Wormhole",18,4);
davidwst421 7:193c0fd7afdd 288 lcd.drawSprite(0,40,8,84,(int *)intro2);
davidwst421 7:193c0fd7afdd 289 lcd.refresh();
davidwst421 7:193c0fd7afdd 290 wait(0.5);
davidwst421 7:193c0fd7afdd 291 }
davidwst421 9:f88f3f50bbee 292 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 9:f88f3f50bbee 293 lcd.clear();
davidwst421 9:f88f3f50bbee 294 lcd.printString("try not to",12,0);
davidwst421 9:f88f3f50bbee 295 lcd.printString("interrupt",15,1);
davidwst421 9:f88f3f50bbee 296 lcd.printString("the time",0,2);
davidwst421 9:f88f3f50bbee 297 lcd.printString("line but",0,3);
davidwst421 9:f88f3f50bbee 298 lcd.printString("pass thro.",12,4);
davidwst421 9:f88f3f50bbee 299 lcd.printString("the gap",21,5);
davidwst421 10:961bf7a76f45 300 lcd.drawSprite(54,16,16,18,(int *)intro3);
davidwst421 9:f88f3f50bbee 301 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 302 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 303 lcd.refresh();
davidwst421 9:f88f3f50bbee 304 wait(0.5);
davidwst421 9:f88f3f50bbee 305 lcd.clear();
davidwst421 9:f88f3f50bbee 306 lcd.printString("try not to",12,0);
davidwst421 9:f88f3f50bbee 307 lcd.printString("interrupt",15,1);
davidwst421 9:f88f3f50bbee 308 lcd.printString("the time",0,2);
davidwst421 9:f88f3f50bbee 309 lcd.printString("line but",0,3);
davidwst421 9:f88f3f50bbee 310 lcd.printString("pass thro.",12,4);
davidwst421 9:f88f3f50bbee 311 lcd.printString("the gap",21,5);
davidwst421 10:961bf7a76f45 312 lcd.drawSprite(60,16,16,18,(int *)intro3);
davidwst421 9:f88f3f50bbee 313 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 314 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 315 lcd.refresh();
davidwst421 9:f88f3f50bbee 316 wait(0.5);
davidwst421 9:f88f3f50bbee 317 }
davidwst421 9:f88f3f50bbee 318 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 9:f88f3f50bbee 319 lcd.clear();
davidwst421 9:f88f3f50bbee 320 lcd.printString("retrieve 6",12,0);
davidwst421 9:f88f3f50bbee 321 lcd.printString("stones and",12,1);
davidwst421 9:f88f3f50bbee 322 lcd.printString("win the game",6,2);
davidwst421 9:f88f3f50bbee 323 lcd.printString("God speed",15,3);
davidwst421 9:f88f3f50bbee 324 lcd.printString("Avengers!",15,4);
davidwst421 9:f88f3f50bbee 325 lcd.refresh();
davidwst421 9:f88f3f50bbee 326 pad.leds_on();
davidwst421 9:f88f3f50bbee 327 wait(0.5);
davidwst421 9:f88f3f50bbee 328 lcd.clear();
davidwst421 9:f88f3f50bbee 329 lcd.printString("retrieve 6",12,0);
davidwst421 9:f88f3f50bbee 330 lcd.printString("stones and",12,1);
davidwst421 9:f88f3f50bbee 331 lcd.printString("win the game",6,2);
davidwst421 9:f88f3f50bbee 332 lcd.printString("God speed",15,3);
davidwst421 9:f88f3f50bbee 333 lcd.printString("Avengers!",15,4);
davidwst421 9:f88f3f50bbee 334 lcd.refresh();
davidwst421 9:f88f3f50bbee 335 pad.leds_off();
davidwst421 9:f88f3f50bbee 336 wait(0.5);
davidwst421 9:f88f3f50bbee 337 }
davidwst421 7:193c0fd7afdd 338 }
davidwst421 7:193c0fd7afdd 339
davidwst421 0:fd8eda608206 340 void render() {
davidwst421 0:fd8eda608206 341 // clear screen, re-draw and refresh
davidwst421 0:fd8eda608206 342 lcd.clear();
davidwst421 0:fd8eda608206 343 eng.draw(lcd);
davidwst421 0:fd8eda608206 344 lcd.refresh();
davidwst421 2:00a3edbe39b0 345 }
davidwst421 2:00a3edbe39b0 346
davidwst421 10:961bf7a76f45 347 void fingersnap() {
davidwst421 10:961bf7a76f45 348 lcd.clear();
davidwst421 10:961bf7a76f45 349 lcd.printString("Congrat!!",15,1);
davidwst421 10:961bf7a76f45 350 lcd.refresh();
davidwst421 10:961bf7a76f45 351 pad.tone(440.00,0.21);
davidwst421 10:961bf7a76f45 352 wait(0.21);
davidwst421 10:961bf7a76f45 353 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 354 wait(0.63);
davidwst421 10:961bf7a76f45 355 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 356 wait(0.06);
davidwst421 10:961bf7a76f45 357 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 358 wait(0.63);
davidwst421 10:961bf7a76f45 359 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 360 wait(0.06);
davidwst421 10:961bf7a76f45 361 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 362 wait(0.63);
davidwst421 10:961bf7a76f45 363 pad.tone(0.0,0.06);
davidwst421 10:961bf7a76f45 364 wait(0.06);
davidwst421 10:961bf7a76f45 365 pad.tone(587.3,0.42);
davidwst421 10:961bf7a76f45 366 wait(0.42);
davidwst421 10:961bf7a76f45 367 pad.tone(880.0,0.21);
davidwst421 10:961bf7a76f45 368 wait(0.21);
davidwst421 10:961bf7a76f45 369 pad.tone(784.0,1.40);
davidwst421 10:961bf7a76f45 370 wait(1.40);
davidwst421 10:961bf7a76f45 371 pad.tone(698.5,0.70);
davidwst421 10:961bf7a76f45 372 wait(0.70);
davidwst421 10:961bf7a76f45 373 pad.tone(659.3,0.70);
davidwst421 10:961bf7a76f45 374 wait(0.70);
davidwst421 10:961bf7a76f45 375 pad.tone(587.3,0.63);
davidwst421 10:961bf7a76f45 376 wait(0.70);
davidwst421 10:961bf7a76f45 377 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 10:961bf7a76f45 378 lcd.printString("press start",9,4);
davidwst421 10:961bf7a76f45 379 lcd.printString("to return",15,5);
davidwst421 10:961bf7a76f45 380 lcd.refresh();
davidwst421 10:961bf7a76f45 381 pad.leds_on();
davidwst421 10:961bf7a76f45 382 wait(0.5);
davidwst421 10:961bf7a76f45 383 pad.leds_off();
davidwst421 10:961bf7a76f45 384 wait(0.5);
davidwst421 10:961bf7a76f45 385 }
davidwst421 10:961bf7a76f45 386 }
davidwst421 10:961bf7a76f45 387
davidwst421 2:00a3edbe39b0 388 void endgame() {
davidwst421 3:53f0365461c0 389 lcd.clear();
davidwst421 10:961bf7a76f45 390 lcd.printString("Mr.Stark",18,1);
davidwst421 10:961bf7a76f45 391 lcd.printString("I don't feel",6,2);
davidwst421 10:961bf7a76f45 392 lcd.printString("so good ...",9,3);
davidwst421 10:961bf7a76f45 393 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 394 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 395 wait(0.63);
davidwst421 6:a0f3dbbc8d33 396 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 397 wait(0.06);
davidwst421 6:a0f3dbbc8d33 398 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 399 wait(0.63);
davidwst421 6:a0f3dbbc8d33 400 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 401 wait(0.06);
davidwst421 6:a0f3dbbc8d33 402 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 403 wait(0.63);
davidwst421 6:a0f3dbbc8d33 404 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 405 wait(0.06);
davidwst421 6:a0f3dbbc8d33 406 pad.tone(698.5,0.42);
davidwst421 6:a0f3dbbc8d33 407 wait(0.42);
davidwst421 6:a0f3dbbc8d33 408 pad.tone(659.3,0.21);
davidwst421 6:a0f3dbbc8d33 409 wait(0.21);
davidwst421 6:a0f3dbbc8d33 410 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 411 wait(0.06);
davidwst421 6:a0f3dbbc8d33 412 pad.tone(659.3,0.42);
davidwst421 6:a0f3dbbc8d33 413 wait(0.42);
davidwst421 6:a0f3dbbc8d33 414 pad.tone(587.3,0.21);
davidwst421 6:a0f3dbbc8d33 415 wait(0.21);
davidwst421 6:a0f3dbbc8d33 416 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 417 wait(0.06);
davidwst421 6:a0f3dbbc8d33 418 pad.tone(587.3,0.42);
davidwst421 6:a0f3dbbc8d33 419 wait(0.42);
davidwst421 6:a0f3dbbc8d33 420 pad.tone(554.4,0.21);
davidwst421 6:a0f3dbbc8d33 421 wait(0.21);
davidwst421 6:a0f3dbbc8d33 422 pad.tone(587.3,0.42);
davidwst421 6:a0f3dbbc8d33 423 wait(0.42);
davidwst421 8:97576c8761a8 424 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 10:961bf7a76f45 425 lcd.printString("press start",9,4);
davidwst421 10:961bf7a76f45 426 lcd.printString("to return",15,5);
davidwst421 8:97576c8761a8 427 lcd.refresh();
davidwst421 10:961bf7a76f45 428 wait(0.5);
davidwst421 8:97576c8761a8 429 }
davidwst421 8:97576c8761a8 430
davidwst421 7:193c0fd7afdd 431 }