Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Committer:
el17sm
Date:
Thu Apr 25 23:15:44 2019 +0000
Revision:
23:5a8f75e93508
Parent:
22:7abf4581bc9b
Child:
27:a1b41626f57c
Added Health;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17sm 10:1a3499f6b583 1 #ifndef PLAYER_H
el17sm 10:1a3499f6b583 2 #define PLAYER_H
el17sm 10:1a3499f6b583 3 #include "Entity.h"
el17sm 13:d04a6caba40d 4 #include "Bullets.h"
el17sm 13:d04a6caba40d 5
el17sm 13:d04a6caba40d 6 const int bullets_max = 20;
el17sm 10:1a3499f6b583 7
el17sm 22:7abf4581bc9b 8 class Player : public Entity
el17sm 22:7abf4581bc9b 9 {
el17sm 23:5a8f75e93508 10 private:
el17sm 23:5a8f75e93508 11
el17sm 23:5a8f75e93508 12 // Member Variables
el17sm 23:5a8f75e93508 13 struct SpriteDisplay {
el17sm 23:5a8f75e93508 14 int width;
el17sm 23:5a8f75e93508 15 int height;
el17sm 23:5a8f75e93508 16 int * sprite;
el17sm 23:5a8f75e93508 17 };
el17sm 23:5a8f75e93508 18 SpriteDisplay hearts;
el17sm 23:5a8f75e93508 19 int fire_rate_counter;
el17sm 23:5a8f75e93508 20 int fire_rate_delay;
el17sm 23:5a8f75e93508 21 int _bullet_speed;
el17sm 23:5a8f75e93508 22 const static int invulnerability_period = 50;
el17sm 23:5a8f75e93508 23 int invulnerability_counter;
el17sm 23:5a8f75e93508 24
el17sm 22:7abf4581bc9b 25 public:
el17sm 10:1a3499f6b583 26 // Constructors
el17sm 10:1a3499f6b583 27 Player(float, float);
el17sm 22:7abf4581bc9b 28
el17sm 10:1a3499f6b583 29 // Functions
el17sm 10:1a3499f6b583 30 virtual void move(float, float);
el17sm 12:a1c1991835ca 31 virtual int * get_frame();
el17sm 23:5a8f75e93508 32 virtual void take_damage(int);
el17sm 10:1a3499f6b583 33 void buttons(bool, bool, bool, bool);
el17sm 23:5a8f75e93508 34 void update_hearts();
el17sm 23:5a8f75e93508 35 int get_hearts_width();
el17sm 23:5a8f75e93508 36 int get_hearts_height();
el17sm 23:5a8f75e93508 37 int * get_hearts_sprite();
el17sm 22:7abf4581bc9b 38
el17sm 13:d04a6caba40d 39 // accessors
el17sm 22:7abf4581bc9b 40 int get_bullet_speed();
el17sm 22:7abf4581bc9b 41
el17sm 13:d04a6caba40d 42 // variables
el17sm 13:d04a6caba40d 43 Bullets *bullets_array[bullets_max];
el17sm 13:d04a6caba40d 44 bool valid_bullets[bullets_max];
el17sm 23:5a8f75e93508 45
el17sm 23:5a8f75e93508 46 };
el17sm 23:5a8f75e93508 47
el17sm 23:5a8f75e93508 48 // Sprite
el17sm 23:5a8f75e93508 49 const int sprite_heart[9][9] = {
el17sm 23:5a8f75e93508 50 {0,1,1,0,0,0,1,1,0,},
el17sm 23:5a8f75e93508 51 {1,1,1,1,0,1,1,1,1,},
el17sm 23:5a8f75e93508 52 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 53 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 54 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 55 {0,1,2,1,1,1,1,1,0,},
el17sm 23:5a8f75e93508 56 {0,0,1,1,1,1,1,0,0,},
el17sm 23:5a8f75e93508 57 {0,0,0,1,1,1,0,0,0,},
el17sm 23:5a8f75e93508 58 {0,0,0,0,1,0,0,0,0,}
el17sm 23:5a8f75e93508 59 };
el17sm 23:5a8f75e93508 60
el17sm 23:5a8f75e93508 61 const int sprite_transparent_player[12][6] = {
el17sm 23:5a8f75e93508 62 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 63 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 64 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 65 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 66 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 67 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 68 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 69 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 70 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 71 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 72 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 73 {0,0,0,0,0,0,}
el17sm 10:1a3499f6b583 74 };
el17sm 10:1a3499f6b583 75
el17sm 12:a1c1991835ca 76 const int sprite_player [4][4][12][6] = { // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
el17sm 22:7abf4581bc9b 77 {
el17sm 22:7abf4581bc9b 78 // Up
el17sm 12:a1c1991835ca 79 {
el17sm 12:a1c1991835ca 80 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 81 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 82 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 83 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 84 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 85 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 86 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 87 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 88 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 89 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 90 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 91 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 92 },
el17sm 12:a1c1991835ca 93 {
el17sm 12:a1c1991835ca 94 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 95 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 96 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 97 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 98 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 99 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 100 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 101 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 102 {0,0,1,1,0,1,},
el17sm 12:a1c1991835ca 103 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 104 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 105 {0,1,0,0,0,0,}
el17sm 12:a1c1991835ca 106 },
el17sm 12:a1c1991835ca 107 {
el17sm 12:a1c1991835ca 108 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 109 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 110 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 111 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 112 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 113 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 114 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 115 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 116 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 117 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 118 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 119 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 120 },
el17sm 12:a1c1991835ca 121 {
el17sm 12:a1c1991835ca 122 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 123 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 124 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 125 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 126 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 127 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 128 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 129 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 130 {1,0,1,1,0,0,},
el17sm 12:a1c1991835ca 131 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 132 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 133 {0,0,0,0,1,0,}
el17sm 12:a1c1991835ca 134 }
el17sm 12:a1c1991835ca 135 },
el17sm 22:7abf4581bc9b 136 {
el17sm 22:7abf4581bc9b 137 // Right
el17sm 12:a1c1991835ca 138 {
el17sm 12:a1c1991835ca 139 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 140 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 141 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 142 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 143 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 144 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 145 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 146 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 147 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 148 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 149 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 150 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 151 },
el17sm 12:a1c1991835ca 152 {
el17sm 12:a1c1991835ca 153 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 154 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 155 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 156 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 157 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 158 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 159 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 160 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 161 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 162 {0,0,1,0,1,0,},
el17sm 12:a1c1991835ca 163 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 164 {0,1,0,0,0,1,}
el17sm 12:a1c1991835ca 165 },
el17sm 12:a1c1991835ca 166 {
el17sm 12:a1c1991835ca 167 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 168 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 169 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 170 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 171 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 172 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 173 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 174 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 175 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 176 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 177 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 178 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 179 },
el17sm 12:a1c1991835ca 180 {
el17sm 12:a1c1991835ca 181 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 182 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 183 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 184 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 185 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 186 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 187 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 188 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 189 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 190 {0,0,1,0,1,0,},
el17sm 12:a1c1991835ca 191 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 192 {0,1,0,0,0,1,}
el17sm 12:a1c1991835ca 193 }
el17sm 12:a1c1991835ca 194 },
el17sm 12:a1c1991835ca 195 {
el17sm 12:a1c1991835ca 196 // Down
el17sm 12:a1c1991835ca 197 {
el17sm 12:a1c1991835ca 198 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 199 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 200 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 201 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 202 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 203 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 204 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 205 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 206 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 207 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 208 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 209 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 210 },
el17sm 12:a1c1991835ca 211 {
el17sm 12:a1c1991835ca 212 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 213 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 214 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 215 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 216 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 217 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 218 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 219 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 220 {0,0,1,1,0,1,},
el17sm 12:a1c1991835ca 221 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 222 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 223 {0,1,0,0,0,0,}
el17sm 12:a1c1991835ca 224 },
el17sm 12:a1c1991835ca 225 {
el17sm 12:a1c1991835ca 226 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 227 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 228 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 229 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 230 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 231 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 232 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 233 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 234 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 235 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 236 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 237 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 238 },
el17sm 12:a1c1991835ca 239 {
el17sm 12:a1c1991835ca 240 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 241 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 242 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 243 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 244 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 245 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 246 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 247 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 248 {1,0,1,1,0,0,},
el17sm 12:a1c1991835ca 249 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 250 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 251 {0,0,0,0,1,0,}
el17sm 12:a1c1991835ca 252 }
el17sm 12:a1c1991835ca 253 },
el17sm 22:7abf4581bc9b 254 {
el17sm 22:7abf4581bc9b 255 // Left
el17sm 12:a1c1991835ca 256 {
el17sm 12:a1c1991835ca 257 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 258 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 259 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 260 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 261 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 262 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 263 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 264 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 265 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 266 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 267 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 268 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 269 },
el17sm 12:a1c1991835ca 270 {
el17sm 12:a1c1991835ca 271 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 272 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 273 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 274 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 275 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 276 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 277 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 278 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 279 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 280 {0,1,0,1,0,0,},
el17sm 12:a1c1991835ca 281 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 282 {1,0,0,0,1,0,}
el17sm 12:a1c1991835ca 283 },
el17sm 12:a1c1991835ca 284 {
el17sm 12:a1c1991835ca 285 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 286 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 287 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 288 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 289 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 290 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 291 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 292 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 293 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 294 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 295 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 296 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 297 },
el17sm 12:a1c1991835ca 298 {
el17sm 12:a1c1991835ca 299 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 300 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 301 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 302 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 303 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 304 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 305 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 306 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 307 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 308 {0,1,0,1,0,0,},
el17sm 12:a1c1991835ca 309 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 310 {1,0,0,0,1,0,}
el17sm 12:a1c1991835ca 311 }
el17sm 12:a1c1991835ca 312 }
el17sm 12:a1c1991835ca 313 };
el17sm 12:a1c1991835ca 314
el17sm 10:1a3499f6b583 315 #endif