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

Dependencies:   mbed

Committer:
davidwst421
Date:
Thu May 09 02:56:02 2019 +0000
Revision:
9:f88f3f50bbee
Parent:
8:97576c8761a8
Child:
10:961bf7a76f45
finalizing

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 0:fd8eda608206 40
davidwst421 7:193c0fd7afdd 41 const int Avenger0[25][32] = {
davidwst421 7:193c0fd7afdd 42 { 0,0,0,0,0,0,0,0,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 43 { 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 44 { 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 45 { 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 46 { 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 47 { 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 48 { 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 49 { 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 50 { 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 51 { 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 52 { 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 53 { 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 54 { 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 55 { 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 56 { 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 57 { 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 58 { 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 59 { 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 60 { 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 61 { 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 62 { 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 63 { 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 64 { 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 65 { 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 66 { 0,0,0,0,0,0,0,0,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 67 };
davidwst421 7:193c0fd7afdd 68
davidwst421 7:193c0fd7afdd 69 const int Avenger1[25][32] = {
davidwst421 7:193c0fd7afdd 70 { 0,0,0,0,0,0,0,0,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 71 { 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 72 { 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 73 { 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 74 { 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 75 { 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 76 { 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 77 { 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 78 { 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 79 { 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 80 { 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 81 { 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 82 { 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 83 { 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 84 { 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 85 { 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 86 { 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 87 { 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 88 { 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 89 { 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 90 { 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 91 { 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 92 { 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 93 { 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 94 { 0,0,0,0,0,0,0,0,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 95 };
davidwst421 7:193c0fd7afdd 96
davidwst421 7:193c0fd7afdd 97 const int intro0[8][84] = {
davidwst421 7:193c0fd7afdd 98 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 99 { 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 100 { 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 101 { 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 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,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 104 { 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 105 { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 106 };
davidwst421 7:193c0fd7afdd 107 const int intro1[8][84] = {
davidwst421 7:193c0fd7afdd 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 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,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 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,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 111 { 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 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,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 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,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 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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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 116 };
davidwst421 7:193c0fd7afdd 117 const int intro2[8][84] = {
davidwst421 7:193c0fd7afdd 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 8:97576c8761a8 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,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 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,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 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,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 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,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 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,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 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,0,0,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 126 };
davidwst421 9:f88f3f50bbee 127
davidwst421 9:f88f3f50bbee 128 const int intro3[12][16] = {
davidwst421 9:f88f3f50bbee 129 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 },
davidwst421 9:f88f3f50bbee 130 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0 },
davidwst421 9:f88f3f50bbee 131 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0 },
davidwst421 9:f88f3f50bbee 132 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0 },
davidwst421 9:f88f3f50bbee 133 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 9:f88f3f50bbee 134 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 9:f88f3f50bbee 135 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
davidwst421 9:f88f3f50bbee 136 { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 },
davidwst421 9:f88f3f50bbee 137 { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0 },
davidwst421 9:f88f3f50bbee 138 { 0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0 },
davidwst421 9:f88f3f50bbee 139 { 0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0 },
davidwst421 9:f88f3f50bbee 140 { 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 },
davidwst421 9:f88f3f50bbee 141 };
davidwst421 9:f88f3f50bbee 142
davidwst421 0:fd8eda608206 143 ///////////// functions ////////////////
davidwst421 0:fd8eda608206 144 int main() {
davidwst421 8:97576c8761a8 145 while (1) {
davidwst421 8:97576c8761a8 146 int fps = 8;
davidwst421 8:97576c8761a8 147
davidwst421 8:97576c8761a8 148 init(); // initialise and then display welcome screen...
davidwst421 8:97576c8761a8 149 welcome();
davidwst421 8:97576c8761a8 150 introduction();
davidwst421 8:97576c8761a8 151 render();
davidwst421 8:97576c8761a8 152 wait(1.0f/fps); // and wait for one frame period
davidwst421 0:fd8eda608206 153
davidwst421 8:97576c8761a8 154 while (eng.get_score() >= 0) {
davidwst421 8:97576c8761a8 155 eng.read_input(pad);
davidwst421 8:97576c8761a8 156 eng.update(pad);
davidwst421 8:97576c8761a8 157 render();
davidwst421 8:97576c8761a8 158 wait(1.0f/fps);
davidwst421 8:97576c8761a8 159 }
davidwst421 8:97576c8761a8 160 endgame();
davidwst421 0:fd8eda608206 161 }
davidwst421 0:fd8eda608206 162 }
davidwst421 0:fd8eda608206 163
davidwst421 0:fd8eda608206 164 void init() {
davidwst421 0:fd8eda608206 165
davidwst421 0:fd8eda608206 166 // need to initialise LCD and Gamepad
davidwst421 0:fd8eda608206 167 lcd.init();
davidwst421 0:fd8eda608206 168 pad.init();
davidwst421 0:fd8eda608206 169
davidwst421 0:fd8eda608206 170 // initialise the game with correct ball and paddle sizes
davidwst421 7:193c0fd7afdd 171 eng.init(WALL_WIDTH,WALL_GAP,STONE_SIZE,SPEED);
davidwst421 0:fd8eda608206 172 }
davidwst421 0:fd8eda608206 173
davidwst421 0:fd8eda608206 174 void welcome() {
davidwst421 0:fd8eda608206 175
davidwst421 8:97576c8761a8 176 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 0:fd8eda608206 177 lcd.clear();
davidwst421 6:a0f3dbbc8d33 178 lcd.printString("Eternity Stone",0,0);
davidwst421 8:97576c8761a8 179 lcd.printString("Start story",9,4);
davidwst421 6:a0f3dbbc8d33 180 lcd.drawSprite(25,8,25,32,(int *)Avenger0);
davidwst421 0:fd8eda608206 181 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 182 wait(0.5);
davidwst421 6:a0f3dbbc8d33 183 lcd.clear();
davidwst421 6:a0f3dbbc8d33 184 lcd.printString("Eternity Stone",0,0);
davidwst421 8:97576c8761a8 185 lcd.printString("Start story",9,4);
davidwst421 6:a0f3dbbc8d33 186 lcd.drawSprite(25,8,25,32,(int *)Avenger1);
davidwst421 6:a0f3dbbc8d33 187 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 188 wait(0.5);
davidwst421 0:fd8eda608206 189 }
davidwst421 0:fd8eda608206 190 }
davidwst421 0:fd8eda608206 191
davidwst421 7:193c0fd7afdd 192 void introduction() {
davidwst421 7:193c0fd7afdd 193 lcd.clear();
davidwst421 8:97576c8761a8 194 lcd.printString("Five year",15,0);
davidwst421 7:193c0fd7afdd 195 lcd.refresh();
davidwst421 7:193c0fd7afdd 196 wait(1.0);
davidwst421 7:193c0fd7afdd 197 lcd.printString("Since Thanos",6,2);
davidwst421 8:97576c8761a8 198 lcd.printString("destroyed half",0,3);
davidwst421 7:193c0fd7afdd 199 lcd.printString("of all life",9,4);
davidwst421 7:193c0fd7afdd 200 lcd.printString("on Earth",18,5);
davidwst421 7:193c0fd7afdd 201 lcd.refresh();
davidwst421 9:f88f3f50bbee 202 wait(2.0);
davidwst421 8:97576c8761a8 203 lcd.printString("(Press start)",3,1);
davidwst421 7:193c0fd7afdd 204 wait(1.0);
davidwst421 7:193c0fd7afdd 205 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 206 lcd.refresh();
davidwst421 7:193c0fd7afdd 207 wait(0.5);
davidwst421 7:193c0fd7afdd 208 }
davidwst421 7:193c0fd7afdd 209 lcd.clear();
davidwst421 7:193c0fd7afdd 210 lcd.printString("You are a",12,0);
davidwst421 7:193c0fd7afdd 211 lcd.printString("member of",15,1);
davidwst421 7:193c0fd7afdd 212 lcd.printString("Avengers and",6,2);
davidwst421 7:193c0fd7afdd 213 lcd.printString("you need to",9,3);
davidwst421 7:193c0fd7afdd 214 lcd.printString("time travel in",0,4);
davidwst421 7:193c0fd7afdd 215 lcd.printString("Quantum realm",3,5);
davidwst421 7:193c0fd7afdd 216 lcd.refresh();
davidwst421 7:193c0fd7afdd 217 wait(3.0);
davidwst421 7:193c0fd7afdd 218 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 219 lcd.refresh();
davidwst421 7:193c0fd7afdd 220 wait(0.5);
davidwst421 7:193c0fd7afdd 221 }
davidwst421 7:193c0fd7afdd 222 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 7:193c0fd7afdd 223 lcd.clear();
davidwst421 7:193c0fd7afdd 224 lcd.printString("Use your",12,0);
davidwst421 7:193c0fd7afdd 225 lcd.printString("joystick to",15,1);
davidwst421 7:193c0fd7afdd 226 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 227 lcd.printString("to the right",6,3);
davidwst421 7:193c0fd7afdd 228 lcd.printString("Wormhole",6,4);
davidwst421 7:193c0fd7afdd 229 lcd.drawSprite(0,40,8,84,(int *)intro0);
davidwst421 7:193c0fd7afdd 230 lcd.refresh();
davidwst421 7:193c0fd7afdd 231 wait(0.5);
davidwst421 7:193c0fd7afdd 232 lcd.clear();
davidwst421 7:193c0fd7afdd 233 lcd.printString("Use your",12,0);
davidwst421 7:193c0fd7afdd 234 lcd.printString("joystick to",15,1);
davidwst421 7:193c0fd7afdd 235 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 236 lcd.printString("to the right",6,3);
davidwst421 7:193c0fd7afdd 237 lcd.printString("Wormhole",6,4);
davidwst421 7:193c0fd7afdd 238 lcd.drawSprite(0,40,8,84,(int *)intro1);
davidwst421 7:193c0fd7afdd 239 lcd.refresh();
davidwst421 7:193c0fd7afdd 240 wait(0.5);
davidwst421 7:193c0fd7afdd 241 lcd.clear();
davidwst421 9:f88f3f50bbee 242 lcd.printString("Use your",18,0);
davidwst421 9:f88f3f50bbee 243 lcd.printString("joystick to",9,1);
davidwst421 7:193c0fd7afdd 244 lcd.printString("send yourself",3,2);
davidwst421 7:193c0fd7afdd 245 lcd.printString("to the right",6,3);
davidwst421 9:f88f3f50bbee 246 lcd.printString("Wormhole",18,4);
davidwst421 7:193c0fd7afdd 247 lcd.drawSprite(0,40,8,84,(int *)intro2);
davidwst421 7:193c0fd7afdd 248 lcd.refresh();
davidwst421 7:193c0fd7afdd 249 wait(0.5);
davidwst421 7:193c0fd7afdd 250 }
davidwst421 9:f88f3f50bbee 251 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 9:f88f3f50bbee 252 lcd.clear();
davidwst421 9:f88f3f50bbee 253 lcd.printString("try not to",12,0);
davidwst421 9:f88f3f50bbee 254 lcd.printString("interrupt",15,1);
davidwst421 9:f88f3f50bbee 255 lcd.printString("the time",0,2);
davidwst421 9:f88f3f50bbee 256 lcd.printString("line but",0,3);
davidwst421 9:f88f3f50bbee 257 lcd.printString("pass thro.",12,4);
davidwst421 9:f88f3f50bbee 258 lcd.printString("the gap",21,5);
davidwst421 9:f88f3f50bbee 259 lcd.drawSprite(54,16,12,16,(int *)intro3);
davidwst421 9:f88f3f50bbee 260 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 261 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 262 lcd.refresh();
davidwst421 9:f88f3f50bbee 263 wait(0.5);
davidwst421 9:f88f3f50bbee 264 lcd.clear();
davidwst421 9:f88f3f50bbee 265 lcd.printString("try not to",12,0);
davidwst421 9:f88f3f50bbee 266 lcd.printString("interrupt",15,1);
davidwst421 9:f88f3f50bbee 267 lcd.printString("the time",0,2);
davidwst421 9:f88f3f50bbee 268 lcd.printString("line but",0,3);
davidwst421 9:f88f3f50bbee 269 lcd.printString("pass thro.",12,4);
davidwst421 9:f88f3f50bbee 270 lcd.printString("the gap",21,5);
davidwst421 9:f88f3f50bbee 271 lcd.drawSprite(60,16,12,16,(int *)intro3);
davidwst421 9:f88f3f50bbee 272 lcd.drawRect(77,0,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 273 lcd.drawRect(77,30,2,18,FILL_BLACK);
davidwst421 9:f88f3f50bbee 274 lcd.refresh();
davidwst421 9:f88f3f50bbee 275 wait(0.5);
davidwst421 9:f88f3f50bbee 276 }
davidwst421 9:f88f3f50bbee 277 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 9:f88f3f50bbee 278 lcd.clear();
davidwst421 9:f88f3f50bbee 279 lcd.printString("retrieve 6",12,0);
davidwst421 9:f88f3f50bbee 280 lcd.printString("stones and",12,1);
davidwst421 9:f88f3f50bbee 281 lcd.printString("win the game",6,2);
davidwst421 9:f88f3f50bbee 282 lcd.printString("God speed",15,3);
davidwst421 9:f88f3f50bbee 283 lcd.printString("Avengers!",15,4);
davidwst421 9:f88f3f50bbee 284 lcd.refresh();
davidwst421 9:f88f3f50bbee 285 pad.leds_on();
davidwst421 9:f88f3f50bbee 286 wait(0.5);
davidwst421 9:f88f3f50bbee 287 lcd.clear();
davidwst421 9:f88f3f50bbee 288 lcd.printString("retrieve 6",12,0);
davidwst421 9:f88f3f50bbee 289 lcd.printString("stones and",12,1);
davidwst421 9:f88f3f50bbee 290 lcd.printString("win the game",6,2);
davidwst421 9:f88f3f50bbee 291 lcd.printString("God speed",15,3);
davidwst421 9:f88f3f50bbee 292 lcd.printString("Avengers!",15,4);
davidwst421 9:f88f3f50bbee 293 lcd.refresh();
davidwst421 9:f88f3f50bbee 294 pad.leds_off();
davidwst421 9:f88f3f50bbee 295 wait(0.5);
davidwst421 9:f88f3f50bbee 296 }
davidwst421 7:193c0fd7afdd 297 }
davidwst421 7:193c0fd7afdd 298
davidwst421 0:fd8eda608206 299 void render() {
davidwst421 0:fd8eda608206 300
davidwst421 0:fd8eda608206 301 // clear screen, re-draw and refresh
davidwst421 0:fd8eda608206 302 lcd.clear();
davidwst421 0:fd8eda608206 303 eng.draw(lcd);
davidwst421 0:fd8eda608206 304 lcd.refresh();
davidwst421 2:00a3edbe39b0 305 }
davidwst421 2:00a3edbe39b0 306
davidwst421 2:00a3edbe39b0 307 void endgame() {
davidwst421 3:53f0365461c0 308 lcd.clear();
davidwst421 3:53f0365461c0 309 lcd.printString("Endgame",12,1);
davidwst421 2:00a3edbe39b0 310 lcd.refresh();
davidwst421 6:a0f3dbbc8d33 311 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 312 wait(0.63);
davidwst421 6:a0f3dbbc8d33 313 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 314 wait(0.06);
davidwst421 6:a0f3dbbc8d33 315 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 316 wait(0.63);
davidwst421 6:a0f3dbbc8d33 317 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 318 wait(0.06);
davidwst421 6:a0f3dbbc8d33 319 pad.tone(587.3,0.63);
davidwst421 6:a0f3dbbc8d33 320 wait(0.63);
davidwst421 6:a0f3dbbc8d33 321 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 322 wait(0.06);
davidwst421 6:a0f3dbbc8d33 323 pad.tone(698.5,0.42);
davidwst421 6:a0f3dbbc8d33 324 wait(0.42);
davidwst421 6:a0f3dbbc8d33 325 pad.tone(659.3,0.21);
davidwst421 6:a0f3dbbc8d33 326 wait(0.21);
davidwst421 6:a0f3dbbc8d33 327 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 328 wait(0.06);
davidwst421 6:a0f3dbbc8d33 329 pad.tone(659.3,0.42);
davidwst421 6:a0f3dbbc8d33 330 wait(0.42);
davidwst421 6:a0f3dbbc8d33 331 pad.tone(587.3,0.21);
davidwst421 6:a0f3dbbc8d33 332 wait(0.21);
davidwst421 6:a0f3dbbc8d33 333 pad.tone(0.0,0.06);
davidwst421 6:a0f3dbbc8d33 334 wait(0.06);
davidwst421 6:a0f3dbbc8d33 335 pad.tone(587.3,0.42);
davidwst421 6:a0f3dbbc8d33 336 wait(0.42);
davidwst421 6:a0f3dbbc8d33 337 pad.tone(554.4,0.21);
davidwst421 6:a0f3dbbc8d33 338 wait(0.21);
davidwst421 6:a0f3dbbc8d33 339 pad.tone(587.3,0.42);
davidwst421 6:a0f3dbbc8d33 340 wait(0.42);
davidwst421 8:97576c8761a8 341 while (pad.check_event(Gamepad::START_PRESSED) == false) {
davidwst421 8:97576c8761a8 342 lcd.printString("Endgame",12,1);
davidwst421 8:97576c8761a8 343 lcd.refresh();
davidwst421 8:97576c8761a8 344 }
davidwst421 8:97576c8761a8 345
davidwst421 7:193c0fd7afdd 346 }