Asteroid
Dependencies: 4DGL-uLCD-SE PinDetect mbed
main.cpp@0:73375f76583c, 2017-11-14 (annotated)
- Committer:
- Philipjp
- Date:
- Tue Nov 14 18:03:31 2017 +0000
- Revision:
- 0:73375f76583c
Asteroid
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Philipjp | 0:73375f76583c | 1 | #include "mbed.h" |
Philipjp | 0:73375f76583c | 2 | #include "MMA8452.h" |
Philipjp | 0:73375f76583c | 3 | #include "uLCD_4DGL.h" |
Philipjp | 0:73375f76583c | 4 | #include "PinDetect.h" |
Philipjp | 0:73375f76583c | 5 | #include "Speaker.h" |
Philipjp | 0:73375f76583c | 6 | |
Philipjp | 0:73375f76583c | 7 | |
Philipjp | 0:73375f76583c | 8 | #define ASTEROID_HEIGHT 12 |
Philipjp | 0:73375f76583c | 9 | #define ASTEROID_WIDTH 15 |
Philipjp | 0:73375f76583c | 10 | #define SPRITE_MAX 15 |
Philipjp | 0:73375f76583c | 11 | #define EARTH_WIDTH 10 |
Philipjp | 0:73375f76583c | 12 | #define EARTH_HEIGHT 10 |
Philipjp | 0:73375f76583c | 13 | #define EXPLOSION1_WIDTH 20 |
Philipjp | 0:73375f76583c | 14 | |
Philipjp | 0:73375f76583c | 15 | #define SCREEN_MAX 125 |
Philipjp | 0:73375f76583c | 16 | #define SCREEN_MIN 1 |
Philipjp | 0:73375f76583c | 17 | #define NUM_ASTEROIDS 4 |
Philipjp | 0:73375f76583c | 18 | |
Philipjp | 0:73375f76583c | 19 | #define Q 0x808000 //OLIVE |
Philipjp | 0:73375f76583c | 20 | #define I 0x008000 //GREEN |
Philipjp | 0:73375f76583c | 21 | #define S 0xC0C0C0 //SILVER |
Philipjp | 0:73375f76583c | 22 | #define C 0x17202A //UFO GLASS |
Philipjp | 0:73375f76583c | 23 | #define D 0x797D7F //DARK GREY |
Philipjp | 0:73375f76583c | 24 | #define L 0x00FF00 //LIME |
Philipjp | 0:73375f76583c | 25 | #define P 0xFF00FF //PINK |
Philipjp | 0:73375f76583c | 26 | #define R 0xF1C40F //YELLOW |
Philipjp | 0:73375f76583c | 27 | #define O 0xF39C12 //ORANGE |
Philipjp | 0:73375f76583c | 28 | #define G 0xAAB7B8 //GREY |
Philipjp | 0:73375f76583c | 29 | #define _ 0x000000 //BLACK |
Philipjp | 0:73375f76583c | 30 | #define X 0xFFFFFF //WHITE |
Philipjp | 0:73375f76583c | 31 | #define B 0x0000FF //BLUE |
Philipjp | 0:73375f76583c | 32 | #define r 0xFF0000 //RED |
Philipjp | 0:73375f76583c | 33 | |
Philipjp | 0:73375f76583c | 34 | int asteroid_sprite_1[ASTEROID_HEIGHT * ASTEROID_WIDTH] = { |
Philipjp | 0:73375f76583c | 35 | _,_,_,_,X,X,X,X,X,X,X,X,_,_,_, |
Philipjp | 0:73375f76583c | 36 | _,_,_,X,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 37 | _,_,X,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 38 | _,X,_,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 39 | X,X,X,X,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 40 | _,_,_,X,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 41 | _,_,X,_,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 42 | _,X,_,_,_,_,_,X,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 43 | X,_,_,_,_,_,X,X,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 44 | _,X,_,_,_,X,_,X,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 45 | _,_,X,_,X,_,_,X,_,_,_,X,_,_,_, |
Philipjp | 0:73375f76583c | 46 | _,_,_,X,_,_,_,X,X,X,X,_,_,_,_ |
Philipjp | 0:73375f76583c | 47 | }; |
Philipjp | 0:73375f76583c | 48 | |
Philipjp | 0:73375f76583c | 49 | int asteroid_sprite_2[ASTEROID_HEIGHT * ASTEROID_WIDTH] = { |
Philipjp | 0:73375f76583c | 50 | _,_,_,_,X,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 51 | _,_,_,X,_,X,_,_,_,_,_,X,_,X,_, |
Philipjp | 0:73375f76583c | 52 | _,_,X,_,_,_,X,_,_,_,X,_,_,_,X, |
Philipjp | 0:73375f76583c | 53 | _,X,_,_,_,_,_,X,_,X,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 54 | X,_,_,_,_,_,_,_,X,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 55 | X,_,_,_,_,_,_,_,_,_,_,X,_,_,_, |
Philipjp | 0:73375f76583c | 56 | X,_,_,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 57 | X,_,_,_,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 58 | X,_,_,_,_,_,_,_,_,_,_,_,_,_,X, |
Philipjp | 0:73375f76583c | 59 | _,X,_,_,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 60 | _,_,X,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 61 | _,_,_,X,X,X,X,X,X,X,X,X,_,_,_ |
Philipjp | 0:73375f76583c | 62 | }; |
Philipjp | 0:73375f76583c | 63 | |
Philipjp | 0:73375f76583c | 64 | int asteroid_sprite_3[ASTEROID_HEIGHT * ASTEROID_WIDTH] = { |
Philipjp | 0:73375f76583c | 65 | _,_,_,_,X,X,X,X,X,X,X,_,_,_,_, |
Philipjp | 0:73375f76583c | 66 | _,_,_,X,_,_,_,_,_,_,_,X,X,_,_, |
Philipjp | 0:73375f76583c | 67 | _,_,X,_,_,_,_,_,_,_,_,_,_,X,X, |
Philipjp | 0:73375f76583c | 68 | _,_,_,X,_,_,_,_,_,_,_,_,X,X,_, |
Philipjp | 0:73375f76583c | 69 | X,X,X,X,_,_,_,_,_,_,X,X,_,_,_, |
Philipjp | 0:73375f76583c | 70 | X,_,_,_,_,_,_,_,X,X,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 71 | X,_,_,_,_,_,_,_,_,_,X,X,_,_,_, |
Philipjp | 0:73375f76583c | 72 | X,_,_,_,_,_,_,_,_,_,_,_,X,X,_, |
Philipjp | 0:73375f76583c | 73 | X,_,_,_,_,_,_,_,X,_,_,_,_,_,X, |
Philipjp | 0:73375f76583c | 74 | _,X,_,_,_,_,X,X,_,X,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 75 | _,_,X,_,X,X,_,_,_,_,X,_,X,_,_, |
Philipjp | 0:73375f76583c | 76 | _,_,_,X,_,_,_,_,_,_,_,X,_,_,_ |
Philipjp | 0:73375f76583c | 77 | }; |
Philipjp | 0:73375f76583c | 78 | |
Philipjp | 0:73375f76583c | 79 | int asteroid_sprite_4[ASTEROID_HEIGHT * ASTEROID_WIDTH] = { |
Philipjp | 0:73375f76583c | 80 | _,_,_,_,X,X,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 81 | _,_,_,X,_,_,X,X,_,_,X,X,_,X,_, |
Philipjp | 0:73375f76583c | 82 | _,_,X,_,_,_,_,_,X,X,_,_,_,_,X, |
Philipjp | 0:73375f76583c | 83 | _,X,_,_,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 84 | _,_,X,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 85 | _,_,_,X,_,_,_,_,_,_,_,X,_,_,_, |
Philipjp | 0:73375f76583c | 86 | _,_,X,_,_,_,_,_,_,_,_,_,X,_,_, |
Philipjp | 0:73375f76583c | 87 | _,X,_,_,_,_,_,_,_,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 88 | X,_,_,_,_,_,X,_,_,_,_,_,_,_,X, |
Philipjp | 0:73375f76583c | 89 | _,X,_,_,_,X,_,X,X,_,_,_,_,X,_, |
Philipjp | 0:73375f76583c | 90 | _,_,X,_,X,_,_,_,_,X,X,_,X,_,_, |
Philipjp | 0:73375f76583c | 91 | _,_,_,X,_,_,_,_,_,_,_,X,_,_,_ |
Philipjp | 0:73375f76583c | 92 | }; |
Philipjp | 0:73375f76583c | 93 | |
Philipjp | 0:73375f76583c | 94 | int spaceship_explode[EARTH_WIDTH *EARTH_HEIGHT] = { |
Philipjp | 0:73375f76583c | 95 | _,_,r,r,r,r,r,r,_,_, |
Philipjp | 0:73375f76583c | 96 | _,r,r,r,r,r,r,r,r,_, |
Philipjp | 0:73375f76583c | 97 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 98 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 99 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 100 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 101 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 102 | r,r,r,r,r,r,r,r,r,r, |
Philipjp | 0:73375f76583c | 103 | _,r,r,r,r,r,r,r,r,_, |
Philipjp | 0:73375f76583c | 104 | _,_,r,r,r,r,r,r,_,_, |
Philipjp | 0:73375f76583c | 105 | }; |
Philipjp | 0:73375f76583c | 106 | |
Philipjp | 0:73375f76583c | 107 | int spaceship_earth1[EARTH_WIDTH *EARTH_HEIGHT] = { |
Philipjp | 0:73375f76583c | 108 | _,_,S,S,S,S,S,S,_,_, |
Philipjp | 0:73375f76583c | 109 | _,S,I,I,I,I,I,I,S,_, |
Philipjp | 0:73375f76583c | 110 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 111 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 112 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 113 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 114 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 115 | S,I,I,I,I,I,I,I,I,S, |
Philipjp | 0:73375f76583c | 116 | S,I,I,I,I,I,I,I,S,_, |
Philipjp | 0:73375f76583c | 117 | _,S,S,S,S,S,S,S,_,_, |
Philipjp | 0:73375f76583c | 118 | }; |
Philipjp | 0:73375f76583c | 119 | |
Philipjp | 0:73375f76583c | 120 | |
Philipjp | 0:73375f76583c | 121 | int earth_update[EARTH_WIDTH *EARTH_HEIGHT] = { |
Philipjp | 0:73375f76583c | 122 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 123 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 124 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 125 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 126 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 127 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 128 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 129 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 130 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 131 | _,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 132 | }; |
Philipjp | 0:73375f76583c | 133 | |
Philipjp | 0:73375f76583c | 134 | int asteroid_update[ASTEROID_HEIGHT * ASTEROID_WIDTH] = { |
Philipjp | 0:73375f76583c | 135 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 136 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 137 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 138 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 139 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 140 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 141 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 142 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 143 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 144 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 145 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
Philipjp | 0:73375f76583c | 146 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_ |
Philipjp | 0:73375f76583c | 147 | }; |
Philipjp | 0:73375f76583c | 148 | |
Philipjp | 0:73375f76583c | 149 | uLCD_4DGL uLCD(p28, p27, p29); |
Philipjp | 0:73375f76583c | 150 | Serial pc(USBTX,USBRX); |
Philipjp | 0:73375f76583c | 151 | |
Philipjp | 0:73375f76583c | 152 | class ScreenObject |
Philipjp | 0:73375f76583c | 153 | { |
Philipjp | 0:73375f76583c | 154 | protected: |
Philipjp | 0:73375f76583c | 155 | int x_pos, y_pos; |
Philipjp | 0:73375f76583c | 156 | public: |
Philipjp | 0:73375f76583c | 157 | ScreenObject():x_pos(0),y_pos(0) {} |
Philipjp | 0:73375f76583c | 158 | ScreenObject(int x, int y):x_pos(x),y_pos(y) {} |
Philipjp | 0:73375f76583c | 159 | virtual void draw()=0; |
Philipjp | 0:73375f76583c | 160 | virtual void update()=0; |
Philipjp | 0:73375f76583c | 161 | double getX() { |
Philipjp | 0:73375f76583c | 162 | return x_pos; |
Philipjp | 0:73375f76583c | 163 | } |
Philipjp | 0:73375f76583c | 164 | double getY() { |
Philipjp | 0:73375f76583c | 165 | return y_pos; |
Philipjp | 0:73375f76583c | 166 | } |
Philipjp | 0:73375f76583c | 167 | void setX(int x){ |
Philipjp | 0:73375f76583c | 168 | x_pos=x; |
Philipjp | 0:73375f76583c | 169 | } |
Philipjp | 0:73375f76583c | 170 | void setY(int y){ |
Philipjp | 0:73375f76583c | 171 | y_pos=y; |
Philipjp | 0:73375f76583c | 172 | } |
Philipjp | 0:73375f76583c | 173 | }; |
Philipjp | 0:73375f76583c | 174 | class SpaceShipEarth: public ScreenObject |
Philipjp | 0:73375f76583c | 175 | { |
Philipjp | 0:73375f76583c | 176 | public: |
Philipjp | 0:73375f76583c | 177 | SpaceShipEarth() { |
Philipjp | 0:73375f76583c | 178 | x_pos=63; |
Philipjp | 0:73375f76583c | 179 | y_pos=63; |
Philipjp | 0:73375f76583c | 180 | |
Philipjp | 0:73375f76583c | 181 | } |
Philipjp | 0:73375f76583c | 182 | void setX(double x) { |
Philipjp | 0:73375f76583c | 183 | x_pos=x; |
Philipjp | 0:73375f76583c | 184 | } |
Philipjp | 0:73375f76583c | 185 | void setY(double y) { |
Philipjp | 0:73375f76583c | 186 | y_pos=y; |
Philipjp | 0:73375f76583c | 187 | } |
Philipjp | 0:73375f76583c | 188 | |
Philipjp | 0:73375f76583c | 189 | void draw() { |
Philipjp | 0:73375f76583c | 190 | uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,spaceship_earth1); |
Philipjp | 0:73375f76583c | 191 | } |
Philipjp | 0:73375f76583c | 192 | void update() { |
Philipjp | 0:73375f76583c | 193 | |
Philipjp | 0:73375f76583c | 194 | uLCD.BLIT(x_pos, y_pos, EARTH_WIDTH, EARTH_HEIGHT,earth_update); |
Philipjp | 0:73375f76583c | 195 | } |
Philipjp | 0:73375f76583c | 196 | |
Philipjp | 0:73375f76583c | 197 | }; |
Philipjp | 0:73375f76583c | 198 | class AbstractAsteroid: public ScreenObject |
Philipjp | 0:73375f76583c | 199 | { |
Philipjp | 0:73375f76583c | 200 | protected: |
Philipjp | 0:73375f76583c | 201 | int deltaX, deltaY; |
Philipjp | 0:73375f76583c | 202 | }; |
Philipjp | 0:73375f76583c | 203 | class ConcreteAsteroid1: public AbstractAsteroid |
Philipjp | 0:73375f76583c | 204 | { |
Philipjp | 0:73375f76583c | 205 | public: |
Philipjp | 0:73375f76583c | 206 | ConcreteAsteroid1() { |
Philipjp | 0:73375f76583c | 207 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 208 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 209 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 210 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 211 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 212 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 213 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 214 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 215 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 216 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 217 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 218 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 219 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 220 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 221 | } else { |
Philipjp | 0:73375f76583c | 222 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 223 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 224 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 225 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 226 | } |
Philipjp | 0:73375f76583c | 227 | } |
Philipjp | 0:73375f76583c | 228 | |
Philipjp | 0:73375f76583c | 229 | void draw() { |
Philipjp | 0:73375f76583c | 230 | uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_1); |
Philipjp | 0:73375f76583c | 231 | } |
Philipjp | 0:73375f76583c | 232 | void update() { |
Philipjp | 0:73375f76583c | 233 | uLCD.filled_rectangle(x_pos+ASTEROID_WIDTH,y_pos+ASTEROID_HEIGHT,x_pos,y_pos,BLACK); |
Philipjp | 0:73375f76583c | 234 | x_pos=x_pos+deltaX; |
Philipjp | 0:73375f76583c | 235 | y_pos=y_pos+deltaY; |
Philipjp | 0:73375f76583c | 236 | if(x_pos>125 || y_pos>125 || x_pos<1 || y_pos<1) { |
Philipjp | 0:73375f76583c | 237 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 238 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 239 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 240 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 241 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 242 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 243 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 244 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 245 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 246 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 247 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 248 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 249 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 250 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 251 | } else { |
Philipjp | 0:73375f76583c | 252 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 253 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 254 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 255 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 256 | } |
Philipjp | 0:73375f76583c | 257 | } |
Philipjp | 0:73375f76583c | 258 | } |
Philipjp | 0:73375f76583c | 259 | }; |
Philipjp | 0:73375f76583c | 260 | class ConcreteAsteroid2: public AbstractAsteroid |
Philipjp | 0:73375f76583c | 261 | { |
Philipjp | 0:73375f76583c | 262 | public: |
Philipjp | 0:73375f76583c | 263 | ConcreteAsteroid2() { |
Philipjp | 0:73375f76583c | 264 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 265 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 266 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 267 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 268 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 269 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 270 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 271 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 272 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 273 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 274 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 275 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 276 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 277 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 278 | } else { |
Philipjp | 0:73375f76583c | 279 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 280 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 281 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 282 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 283 | } |
Philipjp | 0:73375f76583c | 284 | } |
Philipjp | 0:73375f76583c | 285 | |
Philipjp | 0:73375f76583c | 286 | void draw() { |
Philipjp | 0:73375f76583c | 287 | uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_2); |
Philipjp | 0:73375f76583c | 288 | } |
Philipjp | 0:73375f76583c | 289 | void update() { |
Philipjp | 0:73375f76583c | 290 | uLCD.filled_rectangle(x_pos+ASTEROID_WIDTH,y_pos+ASTEROID_HEIGHT,x_pos,y_pos,BLACK); |
Philipjp | 0:73375f76583c | 291 | x_pos=x_pos+deltaX; |
Philipjp | 0:73375f76583c | 292 | y_pos=y_pos+deltaY; |
Philipjp | 0:73375f76583c | 293 | if(x_pos>125 || y_pos>125 || x_pos<0 || y_pos<0) { |
Philipjp | 0:73375f76583c | 294 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 295 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 296 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 297 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 298 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 299 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 300 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 301 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 302 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 303 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 304 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 305 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 306 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 307 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 308 | } else { |
Philipjp | 0:73375f76583c | 309 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 310 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 311 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 312 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 313 | } |
Philipjp | 0:73375f76583c | 314 | } |
Philipjp | 0:73375f76583c | 315 | |
Philipjp | 0:73375f76583c | 316 | } |
Philipjp | 0:73375f76583c | 317 | }; |
Philipjp | 0:73375f76583c | 318 | |
Philipjp | 0:73375f76583c | 319 | class ConcreteAsteroid3: public AbstractAsteroid |
Philipjp | 0:73375f76583c | 320 | { |
Philipjp | 0:73375f76583c | 321 | public: |
Philipjp | 0:73375f76583c | 322 | ConcreteAsteroid3() { |
Philipjp | 0:73375f76583c | 323 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 324 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 325 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 326 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 327 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 328 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 329 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 330 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 331 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 332 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 333 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 334 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 335 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 336 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 337 | } else { |
Philipjp | 0:73375f76583c | 338 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 339 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 340 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 341 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 342 | } |
Philipjp | 0:73375f76583c | 343 | } |
Philipjp | 0:73375f76583c | 344 | |
Philipjp | 0:73375f76583c | 345 | void draw() { |
Philipjp | 0:73375f76583c | 346 | uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_3); |
Philipjp | 0:73375f76583c | 347 | } |
Philipjp | 0:73375f76583c | 348 | void update() { |
Philipjp | 0:73375f76583c | 349 | uLCD.filled_rectangle(x_pos+ASTEROID_WIDTH,y_pos+ASTEROID_HEIGHT,x_pos,y_pos,BLACK); |
Philipjp | 0:73375f76583c | 350 | x_pos=x_pos+deltaX; |
Philipjp | 0:73375f76583c | 351 | y_pos=y_pos+deltaY; |
Philipjp | 0:73375f76583c | 352 | if(x_pos>125 || y_pos>125 || x_pos<1 || y_pos<1) { |
Philipjp | 0:73375f76583c | 353 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 354 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 355 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 356 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 357 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 358 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 359 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 360 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 361 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 362 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 363 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 364 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 365 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 366 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 367 | } else { |
Philipjp | 0:73375f76583c | 368 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 369 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 370 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 371 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 372 | } |
Philipjp | 0:73375f76583c | 373 | } |
Philipjp | 0:73375f76583c | 374 | |
Philipjp | 0:73375f76583c | 375 | } |
Philipjp | 0:73375f76583c | 376 | }; |
Philipjp | 0:73375f76583c | 377 | |
Philipjp | 0:73375f76583c | 378 | class ConcreteAsteroid4: public AbstractAsteroid |
Philipjp | 0:73375f76583c | 379 | { |
Philipjp | 0:73375f76583c | 380 | public: |
Philipjp | 0:73375f76583c | 381 | ConcreteAsteroid4() { |
Philipjp | 0:73375f76583c | 382 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 383 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 384 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 385 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 386 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 387 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 388 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 389 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 390 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 391 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 392 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 393 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 394 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 395 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 396 | } else { |
Philipjp | 0:73375f76583c | 397 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 398 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 399 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 400 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 401 | } |
Philipjp | 0:73375f76583c | 402 | } |
Philipjp | 0:73375f76583c | 403 | |
Philipjp | 0:73375f76583c | 404 | void draw() { |
Philipjp | 0:73375f76583c | 405 | uLCD.BLIT(x_pos, y_pos, ASTEROID_WIDTH, ASTEROID_HEIGHT,asteroid_sprite_4); |
Philipjp | 0:73375f76583c | 406 | } |
Philipjp | 0:73375f76583c | 407 | void update() { |
Philipjp | 0:73375f76583c | 408 | uLCD.filled_rectangle(x_pos+ASTEROID_WIDTH,y_pos+ASTEROID_HEIGHT,x_pos,y_pos,BLACK); |
Philipjp | 0:73375f76583c | 409 | x_pos=x_pos+deltaX; |
Philipjp | 0:73375f76583c | 410 | y_pos=y_pos+deltaY; |
Philipjp | 0:73375f76583c | 411 | if(x_pos>125 || y_pos>125 || x_pos<1 || y_pos<1) { |
Philipjp | 0:73375f76583c | 412 | x_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 413 | y_pos=rand() % 126 + 1; |
Philipjp | 0:73375f76583c | 414 | deltaX=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 415 | deltaY=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 416 | int ranNum=rand() % 4 + 1; |
Philipjp | 0:73375f76583c | 417 | if (ranNum==1) { |
Philipjp | 0:73375f76583c | 418 | x_pos=0*x_pos; |
Philipjp | 0:73375f76583c | 419 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 420 | } else if(ranNum==2) { |
Philipjp | 0:73375f76583c | 421 | y_pos=0*y_pos; |
Philipjp | 0:73375f76583c | 422 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 423 | } else if (ranNum==3) { |
Philipjp | 0:73375f76583c | 424 | x_pos=x_pos*0; |
Philipjp | 0:73375f76583c | 425 | y_pos=y_pos*0; |
Philipjp | 0:73375f76583c | 426 | } else { |
Philipjp | 0:73375f76583c | 427 | x_pos=x_pos; |
Philipjp | 0:73375f76583c | 428 | y_pos=y_pos; |
Philipjp | 0:73375f76583c | 429 | deltaX=deltaX*-1; |
Philipjp | 0:73375f76583c | 430 | deltaY=deltaY*-1; |
Philipjp | 0:73375f76583c | 431 | } |
Philipjp | 0:73375f76583c | 432 | } |
Philipjp | 0:73375f76583c | 433 | |
Philipjp | 0:73375f76583c | 434 | } |
Philipjp | 0:73375f76583c | 435 | }; |
Philipjp | 0:73375f76583c | 436 | |
Philipjp | 0:73375f76583c | 437 | bool overlap(ScreenObject & objectA, ScreenObject & objectB) |
Philipjp | 0:73375f76583c | 438 | { |
Philipjp | 0:73375f76583c | 439 | int EarthX=objectA.getX(); |
Philipjp | 0:73375f76583c | 440 | int EarthY=objectA.getY(); |
Philipjp | 0:73375f76583c | 441 | |
Philipjp | 0:73375f76583c | 442 | int TXSB=EarthX-15; |
Philipjp | 0:73375f76583c | 443 | int TYSB=EarthY-12; |
Philipjp | 0:73375f76583c | 444 | int LXSB=EarthX+10; |
Philipjp | 0:73375f76583c | 445 | int LYSB=EarthY+10; |
Philipjp | 0:73375f76583c | 446 | int AstX=objectB.getX(); |
Philipjp | 0:73375f76583c | 447 | int AstY=objectB.getY(); |
Philipjp | 0:73375f76583c | 448 | |
Philipjp | 0:73375f76583c | 449 | if ((AstX>TXSB && AstX<LXSB) && (AstY>TYSB && AstY<LYSB)){ |
Philipjp | 0:73375f76583c | 450 | return true; |
Philipjp | 0:73375f76583c | 451 | } |
Philipjp | 0:73375f76583c | 452 | else{ |
Philipjp | 0:73375f76583c | 453 | return false; |
Philipjp | 0:73375f76583c | 454 | } |
Philipjp | 0:73375f76583c | 455 | } |
Philipjp | 0:73375f76583c | 456 | |
Philipjp | 0:73375f76583c | 457 | |
Philipjp | 0:73375f76583c | 458 | Speaker mySpeaker(p21); |
Philipjp | 0:73375f76583c | 459 | bool BombUsed=false; |
Philipjp | 0:73375f76583c | 460 | bool ExplodeAllAsteroids=false; |
Philipjp | 0:73375f76583c | 461 | //DigitalIn pb1(p16); |
Philipjp | 0:73375f76583c | 462 | |
Philipjp | 0:73375f76583c | 463 | PinDetect pb1(p16); |
Philipjp | 0:73375f76583c | 464 | void pb1_hit_callback (void) |
Philipjp | 0:73375f76583c | 465 | { |
Philipjp | 0:73375f76583c | 466 | if (!BombUsed ) |
Philipjp | 0:73375f76583c | 467 | { |
Philipjp | 0:73375f76583c | 468 | |
Philipjp | 0:73375f76583c | 469 | ExplodeAllAsteroids = true; |
Philipjp | 0:73375f76583c | 470 | BombUsed = true; |
Philipjp | 0:73375f76583c | 471 | |
Philipjp | 0:73375f76583c | 472 | } |
Philipjp | 0:73375f76583c | 473 | } |
Philipjp | 0:73375f76583c | 474 | |
Philipjp | 0:73375f76583c | 475 | |
Philipjp | 0:73375f76583c | 476 | int main() |
Philipjp | 0:73375f76583c | 477 | { |
Philipjp | 0:73375f76583c | 478 | uLCD.baudrate(300000); |
Philipjp | 0:73375f76583c | 479 | wait(0.2); |
Philipjp | 0:73375f76583c | 480 | srand(time(0)); |
Philipjp | 0:73375f76583c | 481 | |
Philipjp | 0:73375f76583c | 482 | ScreenObject * ActiveAsteroids[NUM_ASTEROIDS]; |
Philipjp | 0:73375f76583c | 483 | |
Philipjp | 0:73375f76583c | 484 | SpaceShipEarth ship; |
Philipjp | 0:73375f76583c | 485 | ConcreteAsteroid1 Ast1; |
Philipjp | 0:73375f76583c | 486 | ConcreteAsteroid2 Ast2; |
Philipjp | 0:73375f76583c | 487 | ConcreteAsteroid3 Ast3; |
Philipjp | 0:73375f76583c | 488 | ConcreteAsteroid4 Ast4; |
Philipjp | 0:73375f76583c | 489 | |
Philipjp | 0:73375f76583c | 490 | //ship draw |
Philipjp | 0:73375f76583c | 491 | ActiveAsteroids[0]=&Ast1; |
Philipjp | 0:73375f76583c | 492 | ActiveAsteroids[1]=&Ast2; |
Philipjp | 0:73375f76583c | 493 | ActiveAsteroids[2]=&Ast3; |
Philipjp | 0:73375f76583c | 494 | ActiveAsteroids[3]=&Ast4; |
Philipjp | 0:73375f76583c | 495 | |
Philipjp | 0:73375f76583c | 496 | |
Philipjp | 0:73375f76583c | 497 | |
Philipjp | 0:73375f76583c | 498 | double x=0,y=0,z=0; |
Philipjp | 0:73375f76583c | 499 | double factor=50; |
Philipjp | 0:73375f76583c | 500 | |
Philipjp | 0:73375f76583c | 501 | |
Philipjp | 0:73375f76583c | 502 | MMA8452 acc(p9, p10, 40000); |
Philipjp | 0:73375f76583c | 503 | acc.setBitDepth(MMA8452::BIT_DEPTH_12); |
Philipjp | 0:73375f76583c | 504 | acc.setDynamicRange(MMA8452::DYNAMIC_RANGE_4G); |
Philipjp | 0:73375f76583c | 505 | acc.setDataRate(MMA8452::RATE_100); |
Philipjp | 0:73375f76583c | 506 | set_time(0); |
Philipjp | 0:73375f76583c | 507 | time_t startTime; |
Philipjp | 0:73375f76583c | 508 | startTime = time(0); |
Philipjp | 0:73375f76583c | 509 | time_t timeElapsed; |
Philipjp | 0:73375f76583c | 510 | timeElapsed= time(0)-startTime; // timeBar; |
Philipjp | 0:73375f76583c | 511 | |
Philipjp | 0:73375f76583c | 512 | |
Philipjp | 0:73375f76583c | 513 | |
Philipjp | 0:73375f76583c | 514 | int x_pos=63; |
Philipjp | 0:73375f76583c | 515 | int y_pos=63; |
Philipjp | 0:73375f76583c | 516 | bool check=true; |
Philipjp | 0:73375f76583c | 517 | |
Philipjp | 0:73375f76583c | 518 | |
Philipjp | 0:73375f76583c | 519 | pb1.mode(PullUp); |
Philipjp | 0:73375f76583c | 520 | pb1.attach_asserted(&pb1_hit_callback); |
Philipjp | 0:73375f76583c | 521 | pb1.setSampleFrequency(); |
Philipjp | 0:73375f76583c | 522 | |
Philipjp | 0:73375f76583c | 523 | |
Philipjp | 0:73375f76583c | 524 | for (int i=0; i<NUM_ASTEROIDS; i++) { |
Philipjp | 0:73375f76583c | 525 | ActiveAsteroids[i]->draw(); |
Philipjp | 0:73375f76583c | 526 | } |
Philipjp | 0:73375f76583c | 527 | |
Philipjp | 0:73375f76583c | 528 | while (timeElapsed<3 && check) { |
Philipjp | 0:73375f76583c | 529 | timeElapsed= time(0)-startTime; |
Philipjp | 0:73375f76583c | 530 | uLCD.filled_rectangle(0,0,126,3,BLACK); |
Philipjp | 0:73375f76583c | 531 | uLCD.filled_rectangle(0,0,126-(126/29) * timeElapsed,3,BLUE); |
Philipjp | 0:73375f76583c | 532 | |
Philipjp | 0:73375f76583c | 533 | |
Philipjp | 0:73375f76583c | 534 | for (int i=0; i<NUM_ASTEROIDS; i++) { |
Philipjp | 0:73375f76583c | 535 | ActiveAsteroids[i]->update(); |
Philipjp | 0:73375f76583c | 536 | } |
Philipjp | 0:73375f76583c | 537 | ship.update(); |
Philipjp | 0:73375f76583c | 538 | |
Philipjp | 0:73375f76583c | 539 | |
Philipjp | 0:73375f76583c | 540 | |
Philipjp | 0:73375f76583c | 541 | if(!acc.isXYZReady()) { |
Philipjp | 0:73375f76583c | 542 | wait(0.01); |
Philipjp | 0:73375f76583c | 543 | } else { |
Philipjp | 0:73375f76583c | 544 | acc.readXYZGravity(&x,&y,&z); //notice this is passed by reference use pointers |
Philipjp | 0:73375f76583c | 545 | ship.setX(-x*factor+x_pos); |
Philipjp | 0:73375f76583c | 546 | ship.setY(-y*factor+y_pos); |
Philipjp | 0:73375f76583c | 547 | ship.draw(); |
Philipjp | 0:73375f76583c | 548 | } |
Philipjp | 0:73375f76583c | 549 | |
Philipjp | 0:73375f76583c | 550 | for (int i=0; i<NUM_ASTEROIDS; i++) { |
Philipjp | 0:73375f76583c | 551 | ActiveAsteroids[i]->draw(); |
Philipjp | 0:73375f76583c | 552 | if (overlap(ship,*ActiveAsteroids[i])){ |
Philipjp | 0:73375f76583c | 553 | uLCD.BLIT(ship.getX(),ship.getY(),EARTH_WIDTH,EARTH_HEIGHT,spaceship_explode); |
Philipjp | 0:73375f76583c | 554 | mySpeaker.PlayNote(160.0 + x*200, .4 + 0.2*y, 0.05); |
Philipjp | 0:73375f76583c | 555 | check=false; |
Philipjp | 0:73375f76583c | 556 | } |
Philipjp | 0:73375f76583c | 557 | } |
Philipjp | 0:73375f76583c | 558 | |
Philipjp | 0:73375f76583c | 559 | if (ExplodeAllAsteroids){ |
Philipjp | 0:73375f76583c | 560 | for (int i=0; i<NUM_ASTEROIDS; i++) { |
Philipjp | 0:73375f76583c | 561 | ActiveAsteroids[i]->update(); |
Philipjp | 0:73375f76583c | 562 | ActiveAsteroids[i]->setX(127); |
Philipjp | 0:73375f76583c | 563 | ActiveAsteroids[i]->setY(127); |
Philipjp | 0:73375f76583c | 564 | } |
Philipjp | 0:73375f76583c | 565 | mySpeaker.PlayNote(880, .750, 0.015); |
Philipjp | 0:73375f76583c | 566 | ExplodeAllAsteroids=false; |
Philipjp | 0:73375f76583c | 567 | } |
Philipjp | 0:73375f76583c | 568 | |
Philipjp | 0:73375f76583c | 569 | |
Philipjp | 0:73375f76583c | 570 | |
Philipjp | 0:73375f76583c | 571 | } |
Philipjp | 0:73375f76583c | 572 | if (!check){ |
Philipjp | 0:73375f76583c | 573 | uLCD.cls(); |
Philipjp | 0:73375f76583c | 574 | mySpeaker.PlayNote(658, .125, 0.015); |
Philipjp | 0:73375f76583c | 575 | mySpeaker.PlayNote(1320, .500, 0.015); |
Philipjp | 0:73375f76583c | 576 | mySpeaker.PlayNote(990, .250, 0.015); |
Philipjp | 0:73375f76583c | 577 | mySpeaker.PlayNote(1056, .250, 0.015); |
Philipjp | 0:73375f76583c | 578 | mySpeaker.PlayNote(1188, .250, 0.015); |
Philipjp | 0:73375f76583c | 579 | mySpeaker.PlayNote(1320, .125, 0.015); |
Philipjp | 0:73375f76583c | 580 | mySpeaker.PlayNote(1188, .125, 0.015); |
Philipjp | 0:73375f76583c | 581 | mySpeaker.PlayNote(1056, .250, 0.015); |
Philipjp | 0:73375f76583c | 582 | mySpeaker.PlayNote(990, .250, 0.015); |
Philipjp | 0:73375f76583c | 583 | mySpeaker.PlayNote(880, .500, 0.015); |
Philipjp | 0:73375f76583c | 584 | mySpeaker.PlayNote(880, .250, 0.015); |
Philipjp | 0:73375f76583c | 585 | mySpeaker.PlayNote(1056, .250, 0.015); |
Philipjp | 0:73375f76583c | 586 | mySpeaker.PlayNote(1320, .500, 0.015); |
Philipjp | 0:73375f76583c | 587 | mySpeaker.PlayNote(1188, .250, 0.015); |
Philipjp | 0:73375f76583c | 588 | mySpeaker.PlayNote(1056, .250, 0.015); |
Philipjp | 0:73375f76583c | 589 | mySpeaker.PlayNote(990, .750, 0.015); |
Philipjp | 0:73375f76583c | 590 | mySpeaker.PlayNote(1056, .250, 0.015); |
Philipjp | 0:73375f76583c | 591 | mySpeaker.PlayNote(1188, .5, 0.015); |
Philipjp | 0:73375f76583c | 592 | mySpeaker.PlayNote(1320, .500, 0.015); |
Philipjp | 0:73375f76583c | 593 | mySpeaker.PlayNote(1056, .500, 0.015); |
Philipjp | 0:73375f76583c | 594 | mySpeaker.PlayNote(880, .500, 0.015); |
Philipjp | 0:73375f76583c | 595 | mySpeaker.PlayNote(880, .750, 0.015); |
Philipjp | 0:73375f76583c | 596 | |
Philipjp | 0:73375f76583c | 597 | uLCD.locate(5,8); |
Philipjp | 0:73375f76583c | 598 | uLCD.printf("Game Over!"); |
Philipjp | 0:73375f76583c | 599 | } |
Philipjp | 0:73375f76583c | 600 | else{ |
Philipjp | 0:73375f76583c | 601 | uLCD.cls(); |
Philipjp | 0:73375f76583c | 602 | uLCD.locate(5,5); |
Philipjp | 0:73375f76583c | 603 | uLCD.printf("Congrat!\n"); |
Philipjp | 0:73375f76583c | 604 | uLCD.printf("YOU SAVE THE WORLD"); |
Philipjp | 0:73375f76583c | 605 | } |
Philipjp | 0:73375f76583c | 606 | } |