Rex Raj / Mbed 2 deprecated el17rrrs

Dependencies:   mbed Gamepad N5110 mbed-rtos

Committer:
RexRoshan
Date:
Thu May 09 14:23:35 2019 +0000
Revision:
14:c7302ffe6eab
Parent:
5:016a7315b75d
Final Modification

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RexRoshan 0:99fa5a619081 1 #include "Spacecraft.h"
RexRoshan 0:99fa5a619081 2
RexRoshan 0:99fa5a619081 3 // nothing doing in the constructor and destructor
RexRoshan 0:99fa5a619081 4 Spacecraft::Spacecraft()
RexRoshan 0:99fa5a619081 5 {
RexRoshan 0:99fa5a619081 6
RexRoshan 0:99fa5a619081 7 }
RexRoshan 0:99fa5a619081 8
RexRoshan 0:99fa5a619081 9 Spacecraft::~Spacecraft()
RexRoshan 0:99fa5a619081 10 {
RexRoshan 0:99fa5a619081 11
RexRoshan 0:99fa5a619081 12 }
RexRoshan 0:99fa5a619081 13
RexRoshan 5:016a7315b75d 14 // sprite of the player spacecraft
RexRoshan 0:99fa5a619081 15 int H_spacecraft [11][11] = {
RexRoshan 0:99fa5a619081 16
RexRoshan 0:99fa5a619081 17 { 0,0,1,0,0,1,0,0,0,0,0 },
RexRoshan 0:99fa5a619081 18 { 0,1,1,1,1,1,1,0,0,0,0 },
RexRoshan 0:99fa5a619081 19 { 0,0,1,0,0,1,0,0,0,0,0 },
RexRoshan 0:99fa5a619081 20 { 0,0,0,1,0,0,1,0,0,0,0 },
RexRoshan 0:99fa5a619081 21 { 0,1,1,0,0,0,0,1,1,0,0 },
RexRoshan 0:99fa5a619081 22 { 1,1,1,1,1,1,1,1,1,1,1 },
RexRoshan 0:99fa5a619081 23 { 0,1,1,1,1,1,1,1,1,0,0 },
RexRoshan 0:99fa5a619081 24 { 0,0,0,1,1,1,1,0,0,0,0 },
RexRoshan 0:99fa5a619081 25 { 0,0,1,1,1,1,0,0,0,0,0 },
RexRoshan 0:99fa5a619081 26 { 0,1,1,1,1,1,1,0,0,0,0 },
RexRoshan 0:99fa5a619081 27 { 0,0,1,0,0,1,0,0,0,0,0 },
RexRoshan 0:99fa5a619081 28
RexRoshan 0:99fa5a619081 29
RexRoshan 2:b5c1bb7a39de 30 };
RexRoshan 0:99fa5a619081 31
RexRoshan 5:016a7315b75d 32 void Spacecraft::init(int x,int y) // initialise the x and y position
RexRoshan 0:99fa5a619081 33 {
RexRoshan 2:b5c1bb7a39de 34 _x = x; // default x position
RexRoshan 2:b5c1bb7a39de 35 _y = y; // default y position
RexRoshan 0:99fa5a619081 36 _speed = 1; // default speed
RexRoshan 0:99fa5a619081 37 _health = 0; // start health from zero
RexRoshan 0:99fa5a619081 38
RexRoshan 0:99fa5a619081 39 }
RexRoshan 0:99fa5a619081 40
RexRoshan 0:99fa5a619081 41 void Spacecraft::character(N5110 &lcd)
RexRoshan 0:99fa5a619081 42 {
RexRoshan 2:b5c1bb7a39de 43 // draw the player's spacecraft in screen buffer.
RexRoshan 0:99fa5a619081 44 lcd.drawSprite(_x,_y,11,11,(int *)H_spacecraft);
RexRoshan 0:99fa5a619081 45 }
RexRoshan 0:99fa5a619081 46
RexRoshan 0:99fa5a619081 47
RexRoshan 0:99fa5a619081 48 void Spacecraft::update(Direction d,float mag)
RexRoshan 0:99fa5a619081 49 {
RexRoshan 0:99fa5a619081 50 _speed = int(mag*5.0f); // scale is arbitrary, could be changed in future
RexRoshan 0:99fa5a619081 51
RexRoshan 5:016a7315b75d 52 // update x and y value depending on the direction of the movement
RexRoshan 0:99fa5a619081 53 // North is decrement as origin is at the top-left so decreasing moves up
RexRoshan 5:016a7315b75d 54 // East is increment and West is decrement
RexRoshan 0:99fa5a619081 55 if (d == N) {
RexRoshan 0:99fa5a619081 56 _y-=_speed;
RexRoshan 0:99fa5a619081 57 } else if (d == S) {
RexRoshan 0:99fa5a619081 58 _y+=_speed;
RexRoshan 0:99fa5a619081 59 } else if (d == E) {
RexRoshan 0:99fa5a619081 60 _x+=_speed;
RexRoshan 0:99fa5a619081 61 } else if (d == W) {
RexRoshan 0:99fa5a619081 62 _x-=_speed;
RexRoshan 0:99fa5a619081 63 } else if (d == NE) {
RexRoshan 0:99fa5a619081 64 _y-=_speed;
RexRoshan 0:99fa5a619081 65 _x+=_speed;
RexRoshan 0:99fa5a619081 66 } else if (d == SE) {
RexRoshan 0:99fa5a619081 67 _y+=_speed;
RexRoshan 0:99fa5a619081 68 _x+=_speed;
RexRoshan 0:99fa5a619081 69 } else if (d == NW) {
RexRoshan 0:99fa5a619081 70 _y-=_speed;
RexRoshan 0:99fa5a619081 71 _x-=_speed;
RexRoshan 0:99fa5a619081 72 } else if (d == SW) {
RexRoshan 0:99fa5a619081 73 _y+=_speed;
RexRoshan 0:99fa5a619081 74 _x-=_speed;
RexRoshan 0:99fa5a619081 75 }
RexRoshan 0:99fa5a619081 76 // check the y origin to ensure that the spacecraft doesn't go off screen
RexRoshan 0:99fa5a619081 77 if (_y < 1) {
RexRoshan 0:99fa5a619081 78 _y = 1;
RexRoshan 0:99fa5a619081 79 }
RexRoshan 0:99fa5a619081 80 if (_x < 1) {
RexRoshan 0:99fa5a619081 81 _x = 1;
RexRoshan 0:99fa5a619081 82 }
RexRoshan 0:99fa5a619081 83 if (_y > HEIGHT - 12) {
RexRoshan 0:99fa5a619081 84 _y = HEIGHT - 12;
RexRoshan 0:99fa5a619081 85 }
RexRoshan 0:99fa5a619081 86 if (_x > WIDTH - 13) {
RexRoshan 0:99fa5a619081 87 _x = WIDTH - 13;
RexRoshan 0:99fa5a619081 88 }
RexRoshan 0:99fa5a619081 89 }
RexRoshan 0:99fa5a619081 90
RexRoshan 5:016a7315b75d 91 void Spacecraft::update_move() // moves south when the spacecraft dies
RexRoshan 0:99fa5a619081 92 {
RexRoshan 0:99fa5a619081 93 _increment = 5.0;
RexRoshan 0:99fa5a619081 94
RexRoshan 0:99fa5a619081 95 _y+=_increment;
RexRoshan 0:99fa5a619081 96 }
RexRoshan 0:99fa5a619081 97
RexRoshan 0:99fa5a619081 98 void Spacecraft::add_health()
RexRoshan 0:99fa5a619081 99 {
RexRoshan 5:016a7315b75d 100 _health++; // Adds health
RexRoshan 0:99fa5a619081 101 }
RexRoshan 0:99fa5a619081 102 int Spacecraft::get_health()
RexRoshan 0:99fa5a619081 103 {
RexRoshan 5:016a7315b75d 104 return _health; // Gets the value of health
RexRoshan 0:99fa5a619081 105 }
RexRoshan 0:99fa5a619081 106
RexRoshan 5:016a7315b75d 107 Vector2D Spacecraft::get_pos()
RexRoshan 5:016a7315b75d 108 {
RexRoshan 5:016a7315b75d 109 // Gets the position of the spacecraft
RexRoshan 0:99fa5a619081 110 Vector2D p = {_x,_y};
RexRoshan 0:99fa5a619081 111 return p;
RexRoshan 0:99fa5a619081 112 }