Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@9:f88f3f50bbee, 2019-05-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |