A rouge-like rpg, heavily inspired on the binding of isaac. Running on a FRDM-K64F Mbed board. C++.

Dependencies:   mbed MotionSensor

Committer:
el17sm
Date:
Thu May 09 14:56:46 2019 +0000
Revision:
61:901871a7c6ff
Parent:
58:c8d90bb7404a
Child:
59:fd4669864b67
Final Submission. I have read and agreed with Statement of Academic Integrity.

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 33:4f3948dcd2f7 5 #define INVULNERABILITY_PERIOD 50
el17sm 13:d04a6caba40d 6
el17sm 13:d04a6caba40d 7 const int bullets_max = 20;
el17sm 58:c8d90bb7404a 8 /**Player Class
el17sm 58:c8d90bb7404a 9 @author Steven Mahasin
el17sm 58:c8d90bb7404a 10 @brief Creates a Player which inherits the Entity class, contains functions that accepts all user interractions (buttons, joystick, etc)
el17sm 58:c8d90bb7404a 11 @date May 2019
el17sm 58:c8d90bb7404a 12 */
el17sm 22:7abf4581bc9b 13 class Player : public Entity
el17sm 22:7abf4581bc9b 14 {
el17sm 23:5a8f75e93508 15 private:
el17sm 23:5a8f75e93508 16
el17sm 23:5a8f75e93508 17 // Member Variables
el17sm 58:c8d90bb7404a 18 /**
el17sm 58:c8d90bb7404a 19 * @brief a counter that increments to give a delay to the fire rate of player
el17sm 58:c8d90bb7404a 20 */
el17sm 57:1c12361b6e3d 21 int _fire_rate_counter;
el17sm 58:c8d90bb7404a 22 /**
el17sm 58:c8d90bb7404a 23 * @brief a delay between each shot
el17sm 58:c8d90bb7404a 24 */
el17sm 57:1c12361b6e3d 25 int _fire_rate_delay;
el17sm 58:c8d90bb7404a 26 /**
el17sm 58:c8d90bb7404a 27 * @brief the speed of the bullets created by this player
el17sm 58:c8d90bb7404a 28 */
el17sm 23:5a8f75e93508 29 int _bullet_speed;
el17sm 58:c8d90bb7404a 30 /**
el17sm 58:c8d90bb7404a 31 * @brief a counter that increments, allowing player to be invulnerable to a certain period defined
el17sm 58:c8d90bb7404a 32 */
el17sm 57:1c12361b6e3d 33 int _invulnerability_counter;
el17sm 23:5a8f75e93508 34
el17sm 30:ec915d24d3e9 35 // Private Functions
el17sm 58:c8d90bb7404a 36 /**
el17sm 58:c8d90bb7404a 37 * @brief movement of the player
el17sm 58:c8d90bb7404a 38 * @param mapped_x @details joystick x
el17sm 58:c8d90bb7404a 39 * @param mapped_y @details joystick y
el17sm 58:c8d90bb7404a 40 * @param map @details the 2d map array that dictates where there are walls or empty space
el17sm 58:c8d90bb7404a 41 * @param doorways @details an array that dictates which side of the wall has a doorway
el17sm 58:c8d90bb7404a 42 */
el17sm 34:1d5b4da3935e 43 void move_player(float mapped_x, float mapped_y, char * map, bool * doorways);
el17sm 58:c8d90bb7404a 44 /**
el17sm 58:c8d90bb7404a 45 * @brief movement of the bullets shot by this player
el17sm 58:c8d90bb7404a 46 */
el17sm 30:ec915d24d3e9 47 void move_bullets();
el17sm 58:c8d90bb7404a 48 /**
el17sm 58:c8d90bb7404a 49 * @brief to increment the _frame protected variable, for animation of player
el17sm 58:c8d90bb7404a 50 * @param mapped_x @details joystick x
el17sm 58:c8d90bb7404a 51 * @param mapped_y @details joystick y
el17sm 58:c8d90bb7404a 52 */
el17sm 30:ec915d24d3e9 53 void increment_frames(float mapped_x, float mapped_y);
el17sm 58:c8d90bb7404a 54 /**
el17sm 58:c8d90bb7404a 55 * @brief getting the needed frame of animation of player
el17sm 58:c8d90bb7404a 56 * @return char pointer array to the corresponding player frame
el17sm 58:c8d90bb7404a 57 */
el17sm 33:4f3948dcd2f7 58 char * get_frame();
el17sm 58:c8d90bb7404a 59 /**
el17sm 58:c8d90bb7404a 60 * @brief draws the player onto the screen
el17sm 58:c8d90bb7404a 61 * @param lcd @details the screen the player is drawn onto
el17sm 58:c8d90bb7404a 62 */
el17sm 32:fe6359ef9916 63 void draw_player(N5110 &lcd);
el17sm 30:ec915d24d3e9 64
el17sm 22:7abf4581bc9b 65 public:
el17sm 58:c8d90bb7404a 66 /** Constructor
el17sm 58:c8d90bb7404a 67 * @brief creates a player at positions pos_x and pos_y
el17sm 58:c8d90bb7404a 68 * @param pos_x @details initialise _position.x
el17sm 58:c8d90bb7404a 69 * @param pos_y @details initialise _position.y
el17sm 58:c8d90bb7404a 70 */
el17sm 29:6b8411bb040a 71 Player(float pos_x, float pos_y);
el17sm 58:c8d90bb7404a 72 /** Deconstructors */
el17sm 27:a1b41626f57c 73 ~Player();
el17sm 22:7abf4581bc9b 74
el17sm 29:6b8411bb040a 75 // Accessors
el17sm 58:c8d90bb7404a 76 /**
el17sm 58:c8d90bb7404a 77 * @brief getting the player's bullet speed
el17sm 58:c8d90bb7404a 78 * @return _bullet_speed
el17sm 58:c8d90bb7404a 79 */
el17sm 29:6b8411bb040a 80 int get_bullet_speed();
el17sm 58:c8d90bb7404a 81 /**
el17sm 58:c8d90bb7404a 82 * @brief getting the heart sprite's width
el17sm 58:c8d90bb7404a 83 * @return width of the heart sprite
el17sm 58:c8d90bb7404a 84 */
el17sm 23:5a8f75e93508 85 int get_hearts_width();
el17sm 58:c8d90bb7404a 86 /**
el17sm 58:c8d90bb7404a 87 * @brief getting the heart sprite's height
el17sm 58:c8d90bb7404a 88 * @return height of the heart sprite
el17sm 58:c8d90bb7404a 89 */
el17sm 23:5a8f75e93508 90 int get_hearts_height();
el17sm 58:c8d90bb7404a 91 /**
el17sm 58:c8d90bb7404a 92 * @brief getting the heart sprite char array
el17sm 58:c8d90bb7404a 93 * @return char pointer array to the heart sprite
el17sm 58:c8d90bb7404a 94 */
el17sm 33:4f3948dcd2f7 95 char * get_hearts_sprite();
el17sm 29:6b8411bb040a 96
el17sm 29:6b8411bb040a 97 // Functions
el17sm 58:c8d90bb7404a 98 /**
el17sm 58:c8d90bb7404a 99 * @brief function calls both movement of player and movement of bullets
el17sm 58:c8d90bb7404a 100 * @param x_value @details joystick x
el17sm 58:c8d90bb7404a 101 * @param y_value @details joystick y
el17sm 58:c8d90bb7404a 102 * @param map @details the 2d map array that dictates where there are walls or empty space
el17sm 58:c8d90bb7404a 103 * @param doorways @details an array that dictates which side of the wall has a doorway
el17sm 58:c8d90bb7404a 104 */
el17sm 58:c8d90bb7404a 105 virtual void move(float x_value, float y_value, char * map, bool * doorways);
el17sm 58:c8d90bb7404a 106 /**
el17sm 58:c8d90bb7404a 107 * @brief reduce _hp by damage
el17sm 58:c8d90bb7404a 108 * @param damage @details the amount of damage to be taken
el17sm 58:c8d90bb7404a 109 */
el17sm 29:6b8411bb040a 110 virtual void take_damage(int damage);
el17sm 58:c8d90bb7404a 111 /**
el17sm 58:c8d90bb7404a 112 * @brief a virtual function of drawing the player onto the screen
el17sm 58:c8d90bb7404a 113 * @param lcd @details the screen where the player is drawn on
el17sm 58:c8d90bb7404a 114 */
el17sm 32:fe6359ef9916 115 virtual void draw(N5110 &lcd);
el17sm 58:c8d90bb7404a 116 /**
el17sm 58:c8d90bb7404a 117 * @brief a virtual function of drawing the bullets the player shot onto the screen if j is the correct y-position of the bullets
el17sm 58:c8d90bb7404a 118 * @param lcd @details the screen where the bullets is drawn on
el17sm 58:c8d90bb7404a 119 * @param j @details which y-position hitboxes are currently being printed
el17sm 58:c8d90bb7404a 120 */
el17sm 40:cbcbf6fc1421 121 void draw_bullets(N5110 &lcd, int j);
el17sm 58:c8d90bb7404a 122 /**
el17sm 58:c8d90bb7404a 123 * @brief attempts to delete any bullets that goes out of bounds (out of screen or onto a wall)
el17sm 58:c8d90bb7404a 124 * @param map @details the 2d map array that dictates where there are walls or empty space
el17sm 58:c8d90bb7404a 125 * @param doorawys @details an array that dictates which side of the wall has a doorway
el17sm 58:c8d90bb7404a 126 * @return true if any bullets is successfully deleted
el17sm 58:c8d90bb7404a 127 */
el17sm 50:2c5cb92a5361 128 bool delete_out_of_bounds_bullets(char * map, bool * doorways);
el17sm 58:c8d90bb7404a 129 /**
el17sm 58:c8d90bb7404a 130 * @brief deletes any existing bullets
el17sm 58:c8d90bb7404a 131 */
el17sm 29:6b8411bb040a 132 void delete_bullets();
el17sm 58:c8d90bb7404a 133 /**
el17sm 58:c8d90bb7404a 134 * @brief shoots bullets at the direction of the buttons
el17sm 58:c8d90bb7404a 135 * @param button_A @details button down
el17sm 58:c8d90bb7404a 136 * @param button_B @details button right
el17sm 58:c8d90bb7404a 137 * @param button_Y @details button up
el17sm 58:c8d90bb7404a 138 * @param button_X @details button left
el17sm 58:c8d90bb7404a 139 */
el17sm 29:6b8411bb040a 140 void buttons(bool button_A, bool button_B, bool button_Y, bool button_X);
el17sm 22:7abf4581bc9b 141
el17sm 29:6b8411bb040a 142 // Variables
el17sm 58:c8d90bb7404a 143 /**
el17sm 58:c8d90bb7404a 144 * @brief a bullets pointer array that holds all the possible bullets the player can shoot
el17sm 58:c8d90bb7404a 145 */
el17sm 13:d04a6caba40d 146 Bullets *bullets_array[bullets_max];
el17sm 58:c8d90bb7404a 147 /**
el17sm 58:c8d90bb7404a 148 * @brief a boolean array that dictates which bullets in the bullets array exist
el17sm 58:c8d90bb7404a 149 */
el17sm 13:d04a6caba40d 150 bool valid_bullets[bullets_max];
el17sm 23:5a8f75e93508 151
el17sm 23:5a8f75e93508 152 };
el17sm 23:5a8f75e93508 153
el17sm 23:5a8f75e93508 154 // Sprite
el17sm 33:4f3948dcd2f7 155 const char sprite_heart[9][9] = {
el17sm 23:5a8f75e93508 156 {0,1,1,0,0,0,1,1,0,},
el17sm 23:5a8f75e93508 157 {1,1,1,1,0,1,1,1,1,},
el17sm 23:5a8f75e93508 158 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 159 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 160 {1,2,1,1,1,1,1,1,1,},
el17sm 23:5a8f75e93508 161 {0,1,2,1,1,1,1,1,0,},
el17sm 23:5a8f75e93508 162 {0,0,1,1,1,1,1,0,0,},
el17sm 23:5a8f75e93508 163 {0,0,0,1,1,1,0,0,0,},
el17sm 23:5a8f75e93508 164 {0,0,0,0,1,0,0,0,0,}
el17sm 23:5a8f75e93508 165 };
el17sm 23:5a8f75e93508 166
el17sm 33:4f3948dcd2f7 167 const char sprite_dying_player [5][12][12] = { // sprite_dying_player [Frame][Size_Y][Size_X]
el17sm 27:a1b41626f57c 168 {
el17sm 27:a1b41626f57c 169 {0,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 170 {1,1,1,1,1,1,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 171 {1,2,1,1,1,1,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 172 {1,1,1,1,1,1,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 173 {0,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 174 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 175 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 176 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 177 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 178 {0,0,0,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 179 {0,0,0,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 180 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 181 },
el17sm 27:a1b41626f57c 182 {
el17sm 27:a1b41626f57c 183 {0,0,0,0,1,1,1,0,0,0,0,0,},
el17sm 27:a1b41626f57c 184 {0,0,0,1,2,1,1,1,0,0,0,0,},
el17sm 27:a1b41626f57c 185 {0,0,0,1,1,1,1,1,0,0,0,0,},
el17sm 27:a1b41626f57c 186 {0,0,0,1,1,1,1,1,0,0,0,0,},
el17sm 27:a1b41626f57c 187 {0,0,0,0,1,1,1,0,0,0,0,0,},
el17sm 27:a1b41626f57c 188 {0,1,1,1,1,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 189 {0,0,1,1,1,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 190 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 191 {0,1,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 192 {0,1,0,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 193 {1,0,0,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 194 {0,0,1,1,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 195 },
el17sm 27:a1b41626f57c 196 {
el17sm 27:a1b41626f57c 197 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 198 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 199 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 200 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 201 {0,0,0,0,1,0,0,0,1,1,1,0,},
el17sm 27:a1b41626f57c 202 {0,0,0,0,0,1,0,1,1,2,1,1,},
el17sm 27:a1b41626f57c 203 {0,0,0,0,0,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 204 {0,0,0,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 205 {0,1,1,1,1,1,1,0,1,1,1,0,},
el17sm 27:a1b41626f57c 206 {1,0,0,1,1,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 207 {0,0,1,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 208 {0,1,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 209 },
el17sm 27:a1b41626f57c 210 {
el17sm 27:a1b41626f57c 211 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 212 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 213 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 214 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 215 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 216 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 217 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 218 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 219 {1,0,0,0,1,0,0,0,1,1,1,0,},
el17sm 27:a1b41626f57c 220 {0,1,1,0,0,1,1,1,1,2,1,1,},
el17sm 27:a1b41626f57c 221 {1,0,0,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 222 {1,1,1,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 223 },
el17sm 27:a1b41626f57c 224 {
el17sm 27:a1b41626f57c 225 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 226 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 227 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 228 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 229 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 230 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 231 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 232 {0,0,0,0,0,0,0,0,0,0,0,0,},
el17sm 27:a1b41626f57c 233 {0,0,0,0,0,0,0,0,1,1,1,0,},
el17sm 27:a1b41626f57c 234 {0,0,0,0,0,0,0,1,1,1,1,1,},
el17sm 27:a1b41626f57c 235 {1,0,0,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 236 {1,1,1,1,1,1,1,1,1,1,1,1,},
el17sm 27:a1b41626f57c 237 }
el17sm 27:a1b41626f57c 238 };
el17sm 27:a1b41626f57c 239
el17sm 27:a1b41626f57c 240
el17sm 33:4f3948dcd2f7 241 const char sprite_transparent_player[12][6] = {
el17sm 23:5a8f75e93508 242 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 243 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 244 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 245 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 246 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 247 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 248 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 249 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 250 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 251 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 252 {0,0,0,0,0,0,},
el17sm 23:5a8f75e93508 253 {0,0,0,0,0,0,}
el17sm 10:1a3499f6b583 254 };
el17sm 10:1a3499f6b583 255
el17sm 33:4f3948dcd2f7 256 const char sprite_player [4][4][12][6] = { // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
el17sm 22:7abf4581bc9b 257 {
el17sm 22:7abf4581bc9b 258 // Up
el17sm 12:a1c1991835ca 259 {
el17sm 12:a1c1991835ca 260 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 261 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 262 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 263 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 264 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 265 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 266 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 267 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 268 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 269 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 270 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 271 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 272 },
el17sm 12:a1c1991835ca 273 {
el17sm 12:a1c1991835ca 274 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 275 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 276 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 277 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 278 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 279 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 280 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 281 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 282 {0,0,1,1,0,1,},
el17sm 12:a1c1991835ca 283 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 284 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 285 {0,1,0,0,0,0,}
el17sm 12:a1c1991835ca 286 },
el17sm 12:a1c1991835ca 287 {
el17sm 12:a1c1991835ca 288 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 289 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 290 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 291 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 292 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 293 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 294 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 295 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 296 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 297 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 298 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 299 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 300 },
el17sm 12:a1c1991835ca 301 {
el17sm 12:a1c1991835ca 302 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 303 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 304 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 305 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 306 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 307 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 308 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 309 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 310 {1,0,1,1,0,0,},
el17sm 12:a1c1991835ca 311 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 312 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 313 {0,0,0,0,1,0,}
el17sm 12:a1c1991835ca 314 }
el17sm 12:a1c1991835ca 315 },
el17sm 22:7abf4581bc9b 316 {
el17sm 22:7abf4581bc9b 317 // Right
el17sm 12:a1c1991835ca 318 {
el17sm 12:a1c1991835ca 319 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 320 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 321 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 322 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 323 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 324 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 325 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 326 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 327 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 328 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 329 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 330 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 331 },
el17sm 12:a1c1991835ca 332 {
el17sm 12:a1c1991835ca 333 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 334 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 335 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 336 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 337 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 338 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 339 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 340 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 341 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 342 {0,0,1,0,1,0,},
el17sm 12:a1c1991835ca 343 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 344 {0,1,0,0,0,1,}
el17sm 12:a1c1991835ca 345 },
el17sm 12:a1c1991835ca 346 {
el17sm 12:a1c1991835ca 347 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 348 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 349 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 350 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 351 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 352 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 353 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 354 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 355 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 356 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 357 {0,0,1,0,0,0,},
el17sm 12:a1c1991835ca 358 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 359 },
el17sm 12:a1c1991835ca 360 {
el17sm 12:a1c1991835ca 361 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 362 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 363 {1,1,1,1,2,1,},
el17sm 12:a1c1991835ca 364 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 365 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 366 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 367 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 368 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 369 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 370 {0,0,1,0,1,0,},
el17sm 12:a1c1991835ca 371 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 372 {0,1,0,0,0,1,}
el17sm 12:a1c1991835ca 373 }
el17sm 12:a1c1991835ca 374 },
el17sm 12:a1c1991835ca 375 {
el17sm 12:a1c1991835ca 376 // Down
el17sm 12:a1c1991835ca 377 {
el17sm 12:a1c1991835ca 378 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 379 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 380 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 381 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 382 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 383 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 384 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 385 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 386 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 387 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 388 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 389 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 390 },
el17sm 12:a1c1991835ca 391 {
el17sm 12:a1c1991835ca 392 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 393 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 394 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 395 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 396 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 397 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 398 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 399 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 400 {0,0,1,1,0,1,},
el17sm 12:a1c1991835ca 401 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 402 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 403 {0,1,0,0,0,0,}
el17sm 12:a1c1991835ca 404 },
el17sm 12:a1c1991835ca 405 {
el17sm 12:a1c1991835ca 406 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 407 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 408 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 409 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 410 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 411 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 412 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 413 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 414 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 415 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 416 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 417 {0,1,0,0,1,0,}
el17sm 12:a1c1991835ca 418 },
el17sm 12:a1c1991835ca 419 {
el17sm 12:a1c1991835ca 420 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 421 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 422 {1,2,1,1,2,1,},
el17sm 12:a1c1991835ca 423 {1,1,2,2,1,1,},
el17sm 12:a1c1991835ca 424 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 425 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 426 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 427 {1,0,1,1,0,1,},
el17sm 12:a1c1991835ca 428 {1,0,1,1,0,0,},
el17sm 12:a1c1991835ca 429 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 430 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 431 {0,0,0,0,1,0,}
el17sm 12:a1c1991835ca 432 }
el17sm 12:a1c1991835ca 433 },
el17sm 22:7abf4581bc9b 434 {
el17sm 22:7abf4581bc9b 435 // Left
el17sm 12:a1c1991835ca 436 {
el17sm 12:a1c1991835ca 437 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 438 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 439 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 440 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 441 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 442 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 443 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 444 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 445 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 446 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 447 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 448 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 449 },
el17sm 12:a1c1991835ca 450 {
el17sm 12:a1c1991835ca 451 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 452 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 453 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 454 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 455 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 456 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 457 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 458 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 459 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 460 {0,1,0,1,0,0,},
el17sm 12:a1c1991835ca 461 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 462 {1,0,0,0,1,0,}
el17sm 12:a1c1991835ca 463 },
el17sm 12:a1c1991835ca 464 {
el17sm 12:a1c1991835ca 465 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 466 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 467 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 468 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 469 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 470 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 471 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 472 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 473 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 474 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 475 {0,0,0,1,0,0,},
el17sm 12:a1c1991835ca 476 {0,0,1,1,0,0,}
el17sm 12:a1c1991835ca 477 },
el17sm 12:a1c1991835ca 478 {
el17sm 12:a1c1991835ca 479 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 480 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 481 {1,2,1,1,1,1,},
el17sm 12:a1c1991835ca 482 {1,1,1,1,1,1,},
el17sm 12:a1c1991835ca 483 {0,1,1,1,1,0,},
el17sm 12:a1c1991835ca 484 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 485 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 486 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 487 {0,0,1,1,0,0,},
el17sm 12:a1c1991835ca 488 {0,1,0,1,0,0,},
el17sm 12:a1c1991835ca 489 {0,1,0,0,1,0,},
el17sm 12:a1c1991835ca 490 {1,0,0,0,1,0,}
el17sm 12:a1c1991835ca 491 }
el17sm 12:a1c1991835ca 492 }
el17sm 12:a1c1991835ca 493 };
el17sm 12:a1c1991835ca 494
el17sm 10:1a3499f6b583 495 #endif