ELEC2645 (2016/17) / Mbed 2 deprecated 2645_Project_el15as

Dependencies:   mbed

Committer:
el15as
Date:
Sun Apr 30 22:51:35 2017 +0000
Revision:
5:158e2951654b
Parent:
4:1f7f32f3e017
Child:
7:b54323241435
Added a switch and a door.; Programmed first three levels.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el15as 4:1f7f32f3e017 1 #include "Player.h"
el15as 4:1f7f32f3e017 2
el15as 4:1f7f32f3e017 3 Player::Player()
el15as 4:1f7f32f3e017 4 {
el15as 4:1f7f32f3e017 5
el15as 4:1f7f32f3e017 6 }
el15as 4:1f7f32f3e017 7
el15as 4:1f7f32f3e017 8 Player::~Player()
el15as 4:1f7f32f3e017 9 {
el15as 4:1f7f32f3e017 10
el15as 4:1f7f32f3e017 11 }
el15as 4:1f7f32f3e017 12
el15as 4:1f7f32f3e017 13 void Player::init(intVector2D XY)
el15as 4:1f7f32f3e017 14 {
el15as 4:1f7f32f3e017 15 _x = XY.x;
el15as 4:1f7f32f3e017 16 _y = XY.y;
el15as 4:1f7f32f3e017 17
el15as 4:1f7f32f3e017 18 _isDead = false;
el15as 4:1f7f32f3e017 19
el15as 4:1f7f32f3e017 20 Vector2D velocity = {0.0f, 0.0f};
el15as 4:1f7f32f3e017 21 _velocity = velocity;
el15as 4:1f7f32f3e017 22
el15as 4:1f7f32f3e017 23 intVector2D points[8] = {
el15as 4:1f7f32f3e017 24 {0,0}, {2,0}, // top
el15as 4:1f7f32f3e017 25 {0,2}, {2,2}, // bottom
el15as 4:1f7f32f3e017 26 {0,0}, {0,2}, // left
el15as 4:1f7f32f3e017 27 {2,0}, {2,2}, // right
el15as 4:1f7f32f3e017 28 };
el15as 4:1f7f32f3e017 29
el15as 4:1f7f32f3e017 30 for (int i = 0; i < 8; i++) {
el15as 4:1f7f32f3e017 31 collisionPoint[i] = points[i];
el15as 4:1f7f32f3e017 32 };
el15as 5:158e2951654b 33
el15as 5:158e2951654b 34 _isJumping = true;
el15as 4:1f7f32f3e017 35 }
el15as 4:1f7f32f3e017 36
el15as 4:1f7f32f3e017 37 void Player::draw(N5110 &lcd)
el15as 4:1f7f32f3e017 38 {
el15as 4:1f7f32f3e017 39 // draw the player
el15as 4:1f7f32f3e017 40 lcd.drawRect(_x, _y, 3, 3, FILL_TRANSPARENT);
el15as 4:1f7f32f3e017 41 }
el15as 4:1f7f32f3e017 42
el15as 5:158e2951654b 43 void Player::update(float jx, Serial &pc, int lvl, bool theSwitch)
el15as 4:1f7f32f3e017 44 {
el15as 4:1f7f32f3e017 45 if (jx < 0) {
el15as 4:1f7f32f3e017 46 _velocity.x = int(jx*3.2f); // to make up for mechanical imbalance
el15as 4:1f7f32f3e017 47 } else {
el15as 4:1f7f32f3e017 48 _velocity.x = int(jx*3.0f);
el15as 4:1f7f32f3e017 49 }
el15as 4:1f7f32f3e017 50
el15as 4:1f7f32f3e017 51 // Jump if not already jumping and the jump key was pressed
el15as 4:1f7f32f3e017 52 if (_didReleaseJumpKey && !_isJumping && _didPressJump)
el15as 4:1f7f32f3e017 53 {
el15as 5:158e2951654b 54 apply_jump(lvl, theSwitch);
el15as 4:1f7f32f3e017 55 }
el15as 4:1f7f32f3e017 56
el15as 4:1f7f32f3e017 57 // Jump key released
el15as 5:158e2951654b 58 if (!_didPressJump) {
el15as 4:1f7f32f3e017 59 _didReleaseJumpKey = true;
el15as 5:158e2951654b 60 }
el15as 5:158e2951654b 61 apply_gravity(lvl, theSwitch);
el15as 4:1f7f32f3e017 62
el15as 5:158e2951654b 63 // Assume player is in the air to prevent jumping
el15as 5:158e2951654b 64 // If that's not true it will be set to false in collsion detection
el15as 5:158e2951654b 65 _isJumping = true;
el15as 5:158e2951654b 66
el15as 5:158e2951654b 67 //if (_velocity.y > 6) _velocity.y = 6; // Terminal velocity
el15as 4:1f7f32f3e017 68 }
el15as 4:1f7f32f3e017 69
el15as 4:1f7f32f3e017 70 intVector2D Player::get_pos() {
el15as 4:1f7f32f3e017 71 intVector2D p = {_x, _y};
el15as 4:1f7f32f3e017 72 return p;
el15as 4:1f7f32f3e017 73 }
el15as 4:1f7f32f3e017 74
el15as 4:1f7f32f3e017 75 void Player::set_pos(intVector2D p) {
el15as 4:1f7f32f3e017 76 _x = p.x;
el15as 4:1f7f32f3e017 77 _y = p.y;
el15as 4:1f7f32f3e017 78 }
el15as 4:1f7f32f3e017 79
el15as 4:1f7f32f3e017 80 Vector2D Player::get_velocity() {
el15as 4:1f7f32f3e017 81 Vector2D velocity = {_velocity.x, _velocity.y};
el15as 4:1f7f32f3e017 82 return velocity;
el15as 4:1f7f32f3e017 83 }
el15as 4:1f7f32f3e017 84
el15as 4:1f7f32f3e017 85 void Player::set_velocity(Vector2D v) {
el15as 4:1f7f32f3e017 86 _velocity = v;
el15as 4:1f7f32f3e017 87 }
el15as 4:1f7f32f3e017 88
el15as 4:1f7f32f3e017 89 void Player::reset_velocity()
el15as 4:1f7f32f3e017 90 {
el15as 4:1f7f32f3e017 91 _velocity.x = 0;
el15as 4:1f7f32f3e017 92 _velocity.y = 0;
el15as 4:1f7f32f3e017 93 }
el15as 4:1f7f32f3e017 94
el15as 5:158e2951654b 95 void Player::apply_gravity(int lvl, bool theSwitch)
el15as 5:158e2951654b 96 {
el15as 5:158e2951654b 97 // Opening the door on level 2 inverts gravity
el15as 5:158e2951654b 98 if ((lvl == 2 || lvl == 3) && theSwitch == true) {
el15as 5:158e2951654b 99 _velocity.y -= GRAVITY;
el15as 5:158e2951654b 100 }
el15as 5:158e2951654b 101 else {
el15as 5:158e2951654b 102 _velocity.y += GRAVITY;
el15as 5:158e2951654b 103 }
el15as 5:158e2951654b 104 }
el15as 5:158e2951654b 105
el15as 5:158e2951654b 106 void Player::apply_jump(int lvl, bool theSwitch)
el15as 5:158e2951654b 107 {
el15as 5:158e2951654b 108 _isJumping = true;
el15as 5:158e2951654b 109 _didReleaseJumpKey = false;
el15as 5:158e2951654b 110
el15as 5:158e2951654b 111 // Opening the door on level 2 inverts gravity
el15as 5:158e2951654b 112 if ((lvl == 2 || lvl == 3) && theSwitch == true) {
el15as 5:158e2951654b 113 _velocity.y = -JUMPSPEED;
el15as 5:158e2951654b 114 }
el15as 5:158e2951654b 115 else {
el15as 5:158e2951654b 116 _velocity.y = JUMPSPEED;
el15as 5:158e2951654b 117 }
el15as 5:158e2951654b 118 }