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 MotionSensor
Diff: Entity/Player/Player.h
- Revision:
- 60:44ddfb791e2b
- Parent:
- 59:fd4669864b67
--- a/Entity/Player/Player.h Thu May 09 14:49:27 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,495 +0,0 @@
-#ifndef PLAYER_H
-#define PLAYER_H
-#include "Entity.h"
-#include "Bullets.h"
-#define INVULNERABILITY_PERIOD 50
-
-const int bullets_max = 20;
-/**Player Class
-*@author Steven Mahasin
-*@brief Creates a Player which inherits the Entity class, contains functions that accepts all user interractions (buttons, joystick, etc)
-*@date May 2019
-*/
-class Player : public Entity
-{
-private:
-
- // Member Variables
- /**
- * @brief a counter that increments to give a delay to the fire rate of player
- */
- int _fire_rate_counter;
- /**
- * @brief a delay between each shot
- */
- int _fire_rate_delay;
- /**
- * @brief the speed of the bullets created by this player
- */
- int _bullet_speed;
- /**
- * @brief a counter that increments, allowing player to be invulnerable to a certain period defined
- */
- int _invulnerability_counter;
-
- // Private Functions
- /**
- * @brief movement of the player
- * @param mapped_x - joystick x
- * @param mapped_y - joystick y
- * @param map - the 2d map array that dictates where there are walls or empty space
- * @param doorways - an array that dictates which side of the wall has a doorway
- */
- void move_player(float mapped_x, float mapped_y, char * map, bool * doorways);
- /**
- * @brief movement of the bullets shot by this player
- */
- void move_bullets();
- /**
- * @brief to increment the _frame protected variable, for animation of player
- * @param mapped_x - joystick x
- * @param mapped_y - joystick y
- */
- void increment_frames(float mapped_x, float mapped_y);
- /**
- * @brief getting the needed frame of animation of player
- * @return char pointer array to the corresponding player frame
- */
- char * get_frame();
- /**
- * @brief draws the player onto the screen
- * @param lcd - the screen the player is drawn onto
- */
- void draw_player(N5110 &lcd);
-
-public:
- /** Constructor
- * @brief creates a player at positions pos_x and pos_y
- * @param pos_x - initialise _position.x
- * @param pos_y - initialise _position.y
- */
- Player(float pos_x, float pos_y);
- /** Deconstructors */
- ~Player();
-
- // Accessors
- /**
- * @brief getting the player's bullet speed
- * @return _bullet_speed
- */
- int get_bullet_speed();
- /**
- * @brief getting the heart sprite's width
- * @return width of the heart sprite
- */
- int get_hearts_width();
- /**
- * @brief getting the heart sprite's height
- * @return height of the heart sprite
- */
- int get_hearts_height();
- /**
- * @brief getting the heart sprite char array
- * @return char pointer array to the heart sprite
- */
- char * get_hearts_sprite();
-
- // Functions
- /**
- * @brief function calls both movement of player and movement of bullets
- * @param x_value - joystick x
- * @param y_value - joystick y
- * @param map - the 2d map array that dictates where there are walls or empty space
- * @param doorways - an array that dictates which side of the wall has a doorway
- */
- virtual void move(float x_value, float y_value, char * map, bool * doorways);
- /**
- * @brief reduce _hp by damage
- * @param damage - the amount of damage to be taken
- */
- virtual void take_damage(int damage);
- /**
- * @brief a virtual function of drawing the player onto the screen
- * @param lcd - the screen where the player is drawn on
- */
- virtual void draw(N5110 &lcd);
- /**
- * @brief a virtual function of drawing the bullets the player shot onto the screen if j is the correct y-position of the bullets
- * @param lcd - the screen where the bullets is drawn on
- * @param j - which y-position hitboxes are currently being printed
- */
- void draw_bullets(N5110 &lcd, int j);
- /**
- * @brief attempts to delete any bullets that goes out of bounds (out of screen or onto a wall)
- * @param map - the 2d map array that dictates where there are walls or empty space
- * @param doorawys - an array that dictates which side of the wall has a doorway
- * @return true if any bullets is successfully deleted
- */
- bool delete_out_of_bounds_bullets(char * map, bool * doorways);
- /**
- * @brief deletes any existing bullets
- */
- void delete_bullets();
- /**
- * @brief shoots bullets at the direction of the buttons
- * @param button_A - button down
- * @param button_B - button right
- * @param button_Y - button up
- * @param button_X - button left
- */
- void buttons(bool button_A, bool button_B, bool button_Y, bool button_X);
-
- // Variables
- /**
- * @brief a bullets pointer array that holds all the possible bullets the player can shoot
- */
- Bullets *bullets_array[bullets_max];
- /**
- * @brief a boolean array that dictates which bullets in the bullets array exist
- */
- bool valid_bullets[bullets_max];
-
-};
-
-// Sprite
-const char sprite_heart[9][9] = {
- {0,1,1,0,0,0,1,1,0,},
- {1,1,1,1,0,1,1,1,1,},
- {1,2,1,1,1,1,1,1,1,},
- {1,2,1,1,1,1,1,1,1,},
- {1,2,1,1,1,1,1,1,1,},
- {0,1,2,1,1,1,1,1,0,},
- {0,0,1,1,1,1,1,0,0,},
- {0,0,0,1,1,1,0,0,0,},
- {0,0,0,0,1,0,0,0,0,}
-};
-
-const char sprite_dying_player [5][12][12] = { // sprite_dying_player [Frame][Size_Y][Size_X]
- {
- {0,1,1,1,1,0,0,0,0,0,0,0,},
- {1,1,1,1,1,1,0,0,0,0,0,0,},
- {1,2,1,1,1,1,0,0,0,0,0,0,},
- {1,1,1,1,1,1,0,0,0,0,0,0,},
- {0,1,1,1,1,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- {0,0,0,1,0,0,0,0,0,0,0,0,},
- {0,0,0,1,0,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- },
- {
- {0,0,0,0,1,1,1,0,0,0,0,0,},
- {0,0,0,1,2,1,1,1,0,0,0,0,},
- {0,0,0,1,1,1,1,1,0,0,0,0,},
- {0,0,0,1,1,1,1,1,0,0,0,0,},
- {0,0,0,0,1,1,1,0,0,0,0,0,},
- {0,1,1,1,1,0,0,0,0,0,0,0,},
- {0,0,1,1,1,0,0,0,0,0,0,0,},
- {0,0,1,1,0,0,0,0,0,0,0,0,},
- {0,1,1,1,0,0,0,0,0,0,0,0,},
- {0,1,0,1,0,0,0,0,0,0,0,0,},
- {1,0,0,1,0,0,0,0,0,0,0,0,},
- {0,0,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,1,0,0,0,1,1,1,0,},
- {0,0,0,0,0,1,0,1,1,2,1,1,},
- {0,0,0,0,0,1,1,1,1,1,1,1,},
- {0,0,0,1,1,1,1,1,1,1,1,1,},
- {0,1,1,1,1,1,1,0,1,1,1,0,},
- {1,0,0,1,1,0,0,0,0,0,0,0,},
- {0,0,1,0,0,0,0,0,0,0,0,0,},
- {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,0,0,0,0,0,0,0,0,0,0,},
- {0,0,0,0,0,0,0,0,0,0,0,0,},
- {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,1,0,0,0,1,1,1,0,},
- {0,1,1,0,0,1,1,1,1,2,1,1,},
- {1,0,0,1,1,1,1,1,1,1,1,1,},
- {1,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,0,0,},
- {0,0,0,0,0,0,0,0,0,0,0,0,},
- {0,0,0,0,0,0,0,0,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,1,1,1,1,1,},
- {1,0,0,1,1,1,1,1,1,1,1,1,},
- {1,1,1,1,1,1,1,1,1,1,1,1,},
- }
-};
-
-
-const char sprite_transparent_player[12][6] = {
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,},
- {0,0,0,0,0,0,}
-};
-
-const char sprite_player [4][4][12][6] = { // Player [Face][SpriteAnimationFrame][Size_Y][Size_X]
- {
- // Up
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,1,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,1,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,0,0,0,1,0,}
- }
- },
- {
- // Right
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,2,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,0,0,0,},
- {0,0,1,0,0,0,},
- {0,0,1,1,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,2,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,0,1,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,0,1,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,2,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,0,0,0,},
- {0,0,1,0,0,0,},
- {0,0,1,1,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,1,1,1,2,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,0,1,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,0,1,}
- }
- },
- {
- // Down
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,2,1,},
- {1,1,2,2,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,1,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,2,1,},
- {1,1,2,2,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,2,1,},
- {1,1,2,2,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,1,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,1,0,0,1,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,2,1,},
- {1,1,2,2,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,1,1,1,1,0,},
- {1,0,1,1,0,1,},
- {1,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,1,0,0,1,0,},
- {0,0,0,0,1,0,}
- }
- },
- {
- // Left
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,0,1,0,0,},
- {0,0,0,1,0,0,},
- {0,0,1,1,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,1,0,1,0,0,},
- {0,1,0,0,1,0,},
- {1,0,0,0,1,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,0,1,0,0,},
- {0,0,0,1,0,0,},
- {0,0,1,1,0,0,}
- },
- {
- {0,1,1,1,1,0,},
- {1,1,1,1,1,1,},
- {1,2,1,1,1,1,},
- {1,1,1,1,1,1,},
- {0,1,1,1,1,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,0,1,1,0,0,},
- {0,1,0,1,0,0,},
- {0,1,0,0,1,0,},
- {1,0,0,0,1,0,}
- }
- }
-};
-
-#endif
\ No newline at end of file