Albert Tan-Mulligan / Mbed 2 deprecated ELEC2645_Project_el18ajst

Dependencies:   mbed

Committer:
Albutt
Date:
Tue May 26 23:07:51 2020 +0000
Revision:
17:c81c09625d92
Parent:
14:2d7e41f46879
Testing Documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Albutt 2:c25ec0da7636 1 #include "Character.h"
Albutt 2:c25ec0da7636 2 #include <Bitmap.h>
Albutt 17:c81c09625d92 3
Albutt 2:c25ec0da7636 4 Serial pcc(USBTX, USBRX);
Albutt 13:217c6102ffc0 5 // Contrcutor and Deconstructor are empty
Albutt 2:c25ec0da7636 6 Character::Character()
Albutt 2:c25ec0da7636 7 {
Albutt 2:c25ec0da7636 8
Albutt 2:c25ec0da7636 9 }
Albutt 2:c25ec0da7636 10
Albutt 2:c25ec0da7636 11 Character::~Character()
Albutt 2:c25ec0da7636 12 {
Albutt 2:c25ec0da7636 13
Albutt 2:c25ec0da7636 14 }
Albutt 13:217c6102ffc0 15 //Initlializer that sets x and y coordinates
Albutt 2:c25ec0da7636 16 void Character::init(int x,int y)
Albutt 2:c25ec0da7636 17 {
Albutt 2:c25ec0da7636 18 _x = x; // initial x
Albutt 2:c25ec0da7636 19 _y = y; // initial y
Albutt 2:c25ec0da7636 20 _speed = 1; // default speed
Albutt 2:c25ec0da7636 21 }
Albutt 13:217c6102ffc0 22 //draws and renders sprite, accounting for direction
Albutt 2:c25ec0da7636 23 void Character::draw(N5110 &lcd)
Albutt 2:c25ec0da7636 24 { //sprite is facing left
Albutt 2:c25ec0da7636 25 static int sprite_data[] = {
Albutt 2:c25ec0da7636 26 0,1,1,1,1,
Albutt 2:c25ec0da7636 27 1,1,1,1,1,
Albutt 2:c25ec0da7636 28 1,1,1,1,1,
Albutt 2:c25ec0da7636 29 1,1,1,1,1,
Albutt 2:c25ec0da7636 30 0,1,1,1,1
Albutt 2:c25ec0da7636 31 };
Albutt 2:c25ec0da7636 32 //turning the sprite
Albutt 4:b16b6078a432 33 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 34 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 35 }
Albutt 4:b16b6078a432 36 if (_dir == 0) {
Albutt 2:c25ec0da7636 37 sprite_data[0] = 0;
Albutt 2:c25ec0da7636 38 sprite_data[4] = 0;
Albutt 2:c25ec0da7636 39 } else if (_dir == 1) {
Albutt 2:c25ec0da7636 40 sprite_data[4] = 0;
Albutt 2:c25ec0da7636 41 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 42 } else if (_dir == 2) {
Albutt 2:c25ec0da7636 43 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 44 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 45 } else if (_dir == 3) {
Albutt 2:c25ec0da7636 46 sprite_data[0] = 0;
Albutt 2:c25ec0da7636 47 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 48 }
Albutt 13:217c6102ffc0 49 //Intantiate Bitmap
Albutt 2:c25ec0da7636 50 Bitmap sprite(sprite_data, 5, 5);
Albutt 2:c25ec0da7636 51
Albutt 13:217c6102ffc0 52 //Render Bitmap at x & y
Albutt 2:c25ec0da7636 53 sprite.render(lcd, _x, _y);
Albutt 2:c25ec0da7636 54 }
Albutt 13:217c6102ffc0 55 //Update direction and movement of Character
Albutt 12:c557b6c9b17a 56 void Character::update(Direction d)
Albutt 2:c25ec0da7636 57 {
Albutt 4:b16b6078a432 58 _speed = 1; //scale of speed
Albutt 3:fcc9cf213a61 59 //pcc.printf("speed = %d \n", _speed);
Albutt 2:c25ec0da7636 60 // update x and y value depending on direction of movement
Albutt 2:c25ec0da7636 61 // Set direction and speed according to north south directions
Albutt 2:c25ec0da7636 62 if (d == N) {
Albutt 2:c25ec0da7636 63 _y-=_speed;
Albutt 2:c25ec0da7636 64 _dir = 0;
Albutt 2:c25ec0da7636 65 } else if (d == S) {
Albutt 2:c25ec0da7636 66 _y+=_speed;
Albutt 2:c25ec0da7636 67 _dir = 2;
Albutt 2:c25ec0da7636 68 } else if (d == E) {
Albutt 2:c25ec0da7636 69 _x+=_speed;
Albutt 2:c25ec0da7636 70 _dir = 1;
Albutt 2:c25ec0da7636 71 } else if (d == W) {
Albutt 2:c25ec0da7636 72 _x-=_speed;
Albutt 2:c25ec0da7636 73 _dir = 3;
Albutt 2:c25ec0da7636 74 }
Albutt 2:c25ec0da7636 75 //testing _x and _y
Albutt 3:fcc9cf213a61 76 //pcc.printf("x = %d \n", _x);
Albutt 3:fcc9cf213a61 77 //pcc.printf("y = %d \n", _y);
Albutt 12:c557b6c9b17a 78 if (_x < 1) { _x = 1; }// check the x and y position] to ensure that the paddle doesn't go off screen
Albutt 12:c557b6c9b17a 79 if (_y < 1) { _y = 1; }
Albutt 12:c557b6c9b17a 80 if (_x > 79){ _x = 79; }
Albutt 12:c557b6c9b17a 81 if (_y > 43){ _y = 43; }
Albutt 2:c25ec0da7636 82 }
Albutt 14:2d7e41f46879 83 //Accessor Functions
Albutt 4:b16b6078a432 84 int Character::get_x()
Albutt 4:b16b6078a432 85 {
Albutt 4:b16b6078a432 86 return _x;
Albutt 4:b16b6078a432 87
Albutt 4:b16b6078a432 88 }
Albutt 4:b16b6078a432 89 int Character::get_y()
Albutt 4:b16b6078a432 90 {
Albutt 4:b16b6078a432 91 return _y;
Albutt 4:b16b6078a432 92
Albutt 4:b16b6078a432 93 }
Albutt 4:b16b6078a432 94 int Character::get_direction(){
Albutt 4:b16b6078a432 95 return _dir;
Albutt 4:b16b6078a432 96 }
Albutt 13:217c6102ffc0 97 //Resets Character to original position and direction
Albutt 10:71ced616a64f 98 void Character::reset(){
Albutt 10:71ced616a64f 99 _x = 40;
Albutt 10:71ced616a64f 100 _y = 22;
Albutt 10:71ced616a64f 101 _dir = 0;
Albutt 10:71ced616a64f 102 }