Steven Mahasin / Mbed 2 deprecated DreamDungeon

Dependencies:   mbed MotionSensor

Committer:
el17sm
Date:
Thu May 09 08:18:36 2019 +0000
Revision:
55:fc618f82d1d0
Parent:
54:03ddad11d202
Child:
58:c8d90bb7404a
Bullets collision fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17sm 32:fe6359ef9916 1 #ifndef SNAKE_H
el17sm 32:fe6359ef9916 2 #define SNAKE_H
el17sm 32:fe6359ef9916 3 #include "Entity.h"
el17sm 32:fe6359ef9916 4
el17sm 32:fe6359ef9916 5 class Snake : public Entity
el17sm 32:fe6359ef9916 6 {
el17sm 32:fe6359ef9916 7
el17sm 32:fe6359ef9916 8 public:
el17sm 32:fe6359ef9916 9 // Constructor
el17sm 32:fe6359ef9916 10 Snake(float, float);
el17sm 32:fe6359ef9916 11
el17sm 32:fe6359ef9916 12 // Functions
el17sm 34:1d5b4da3935e 13 virtual void move(float, float, char * map, bool * doorways);
el17sm 32:fe6359ef9916 14 virtual void take_damage(int);
el17sm 32:fe6359ef9916 15 virtual void draw(N5110 &lcd);
el17sm 32:fe6359ef9916 16
el17sm 32:fe6359ef9916 17 private:
el17sm 32:fe6359ef9916 18 // Member Function
el17sm 32:fe6359ef9916 19 void update_prev_face();
el17sm 33:4f3948dcd2f7 20 char * get_frame();
el17sm 54:03ddad11d202 21 void update_face(float diff_x, float diff_y);
el17sm 54:03ddad11d202 22 void move_snake();
el17sm 54:03ddad11d202 23 void increment_frame();
el17sm 32:fe6359ef9916 24
el17sm 32:fe6359ef9916 25 // Member Mutator
el17sm 32:fe6359ef9916 26 void update_hitbox(int, int, int, int, int, int, int);
el17sm 32:fe6359ef9916 27
el17sm 32:fe6359ef9916 28 // Member Variable
el17sm 32:fe6359ef9916 29 int _velocity_index;
el17sm 32:fe6359ef9916 30 int _prev_face;
el17sm 32:fe6359ef9916 31
el17sm 32:fe6359ef9916 32 };
el17sm 32:fe6359ef9916 33
el17sm 55:fc618f82d1d0 34 const float snake_velocity_pattern[6] = {0, 0.15, 0.25, 0.5, 0.1, -0.1};
el17sm 32:fe6359ef9916 35
el17sm 33:4f3948dcd2f7 36 const char sprite_snake_x[2][4][7][12] = { // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
el17sm 32:fe6359ef9916 37 {
el17sm 32:fe6359ef9916 38 // Right
el17sm 32:fe6359ef9916 39 {
el17sm 32:fe6359ef9916 40 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 41 {0,0,0,0,0,0,0,1,1,1,2,1,},
el17sm 32:fe6359ef9916 42 {0,0,0,0,0,0,0,1,1,1,1,1,},
el17sm 32:fe6359ef9916 43 {0,0,0,0,0,0,0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 44 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 45 {0,0,1,1,1,1,0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 46 {1,1,1,0,1,1,1,1,1,1,0,0,},
el17sm 32:fe6359ef9916 47 },
el17sm 32:fe6359ef9916 48 {
el17sm 32:fe6359ef9916 49 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 50 {0,0,0,0,0,0,0,1,1,1,2,1,},
el17sm 32:fe6359ef9916 51 {0,0,0,0,0,0,0,1,1,1,1,1,},
el17sm 32:fe6359ef9916 52 {0,0,0,0,0,0,0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 53 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 54 {0,1,1,1,1,0,1,1,1,1,1,0,},
el17sm 32:fe6359ef9916 55 {1,0,0,1,1,1,1,1,1,1,0,0,},
el17sm 32:fe6359ef9916 56 },
el17sm 32:fe6359ef9916 57 {
el17sm 32:fe6359ef9916 58 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 59 {0,0,0,0,0,0,0,1,1,1,2,1,},
el17sm 32:fe6359ef9916 60 {0,0,0,0,0,0,0,1,1,1,1,1,},
el17sm 32:fe6359ef9916 61 {0,0,0,0,0,0,0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 62 {1,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 63 {0,1,0,0,1,1,1,1,1,1,1,0,},
el17sm 32:fe6359ef9916 64 {0,0,1,1,1,0,1,1,1,1,0,0,},
el17sm 32:fe6359ef9916 65 },
el17sm 32:fe6359ef9916 66 {
el17sm 32:fe6359ef9916 67 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 68 {0,0,0,0,0,0,0,1,1,1,2,1,},
el17sm 32:fe6359ef9916 69 {0,0,0,0,0,0,0,1,1,1,1,1,},
el17sm 32:fe6359ef9916 70 {0,0,0,0,0,0,0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 71 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 72 {1,1,0,1,1,1,1,1,1,1,1,0,},
el17sm 32:fe6359ef9916 73 {0,0,1,1,0,1,1,1,1,1,0,0,},
el17sm 32:fe6359ef9916 74 }
el17sm 32:fe6359ef9916 75 },
el17sm 32:fe6359ef9916 76 {
el17sm 32:fe6359ef9916 77 // Left
el17sm 32:fe6359ef9916 78 {
el17sm 32:fe6359ef9916 79 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 80 {1,2,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 81 {1,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 82 {0,0,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 83 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 84 {0,1,1,1,1,0,1,1,1,1,0,0,},
el17sm 32:fe6359ef9916 85 {0,0,1,1,1,1,1,1,0,1,1,1,},
el17sm 32:fe6359ef9916 86 },
el17sm 32:fe6359ef9916 87 {
el17sm 32:fe6359ef9916 88 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 89 {1,2,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 90 {1,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 91 {0,0,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 92 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 93 {0,1,1,1,1,1,0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 94 {0,0,1,1,1,1,1,1,1,0,0,1,},
el17sm 32:fe6359ef9916 95 },
el17sm 32:fe6359ef9916 96 {
el17sm 32:fe6359ef9916 97 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 98 {1,2,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 99 {1,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 100 {0,0,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 101 {0,1,1,1,0,0,0,0,0,0,0,1,},
el17sm 32:fe6359ef9916 102 {0,1,1,1,1,1,1,1,0,0,1,0,},
el17sm 32:fe6359ef9916 103 {0,0,1,1,1,1,0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 104 },
el17sm 32:fe6359ef9916 105 {
el17sm 32:fe6359ef9916 106 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 107 {1,2,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 108 {1,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 109 {0,0,1,1,1,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 110 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 32:fe6359ef9916 111 {0,1,1,1,1,1,1,1,1,0,1,1,},
el17sm 32:fe6359ef9916 112 {0,0,1,1,1,1,1,0,1,1,0,0,},
el17sm 32:fe6359ef9916 113 }
el17sm 32:fe6359ef9916 114 }
el17sm 32:fe6359ef9916 115 };
el17sm 32:fe6359ef9916 116
el17sm 33:4f3948dcd2f7 117 const char sprite_snake_y[2][6][12][6] = { // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
el17sm 32:fe6359ef9916 118 {
el17sm 32:fe6359ef9916 119 // Up
el17sm 32:fe6359ef9916 120 {
el17sm 32:fe6359ef9916 121 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 122 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 123 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 124 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 125 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 126 {0,1,1,1,0,0,},
el17sm 32:fe6359ef9916 127 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 128 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 129 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 130 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 131 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 132 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 133 },
el17sm 32:fe6359ef9916 134 {
el17sm 32:fe6359ef9916 135 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 136 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 137 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 138 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 139 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 140 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 141 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 142 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 143 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 144 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 145 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 146 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 147 },
el17sm 32:fe6359ef9916 148 {
el17sm 32:fe6359ef9916 149 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 150 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 151 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 152 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 153 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 154 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 155 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 156 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 157 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 158 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 159 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 160 {0,0,0,1,0,0,},
el17sm 32:fe6359ef9916 161 },
el17sm 32:fe6359ef9916 162 {
el17sm 32:fe6359ef9916 163 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 164 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 165 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 166 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 167 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 168 {0,0,1,1,1,0,},
el17sm 32:fe6359ef9916 169 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 170 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 171 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 172 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 173 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 174 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 175 },
el17sm 32:fe6359ef9916 176 {
el17sm 32:fe6359ef9916 177 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 178 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 179 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 180 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 181 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 182 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 183 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 184 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 185 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 186 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 187 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 188 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 189 },
el17sm 32:fe6359ef9916 190 {
el17sm 32:fe6359ef9916 191 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 192 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 193 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 194 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 195 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 196 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 197 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 198 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 199 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 200 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 201 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 202 {0,0,1,0,0,0,},
el17sm 32:fe6359ef9916 203 }
el17sm 32:fe6359ef9916 204 },
el17sm 32:fe6359ef9916 205 {
el17sm 32:fe6359ef9916 206 // Down
el17sm 32:fe6359ef9916 207 {
el17sm 32:fe6359ef9916 208 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 209 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 210 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 211 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 212 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 213 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 214 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 215 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 216 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 217 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 218 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 219 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 220 },
el17sm 32:fe6359ef9916 221 {
el17sm 32:fe6359ef9916 222 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 223 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 224 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 225 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 226 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 227 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 228 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 229 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 230 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 231 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 232 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 233 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 234 },
el17sm 32:fe6359ef9916 235 {
el17sm 32:fe6359ef9916 236 {0,0,1,0,0,0,},
el17sm 32:fe6359ef9916 237 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 238 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 239 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 240 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 241 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 242 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 243 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 244 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 245 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 246 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 247 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 248 },
el17sm 32:fe6359ef9916 249 {
el17sm 32:fe6359ef9916 250 {0,1,0,0,0,0,},
el17sm 32:fe6359ef9916 251 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 252 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 253 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 254 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 255 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 256 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 257 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 258 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 259 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 260 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 261 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 262 },
el17sm 32:fe6359ef9916 263 {
el17sm 32:fe6359ef9916 264 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 265 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 266 {0,0,0,1,1,0,},
el17sm 32:fe6359ef9916 267 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 268 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 269 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 270 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 271 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 272 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 273 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 274 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 275 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 276 },
el17sm 32:fe6359ef9916 277 {
el17sm 32:fe6359ef9916 278 {0,0,0,1,0,0,},
el17sm 32:fe6359ef9916 279 {0,0,0,0,1,0,},
el17sm 32:fe6359ef9916 280 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 281 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 282 {0,1,1,0,0,0,},
el17sm 32:fe6359ef9916 283 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 284 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 285 {1,1,1,1,1,1,},
el17sm 32:fe6359ef9916 286 {1,2,1,1,2,1,},
el17sm 32:fe6359ef9916 287 {0,1,1,1,1,0,},
el17sm 32:fe6359ef9916 288 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 289 {0,0,1,1,0,0,},
el17sm 32:fe6359ef9916 290 }
el17sm 32:fe6359ef9916 291 }
el17sm 32:fe6359ef9916 292 };
el17sm 32:fe6359ef9916 293
el17sm 32:fe6359ef9916 294 #endif