ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18ajst

Dependencies:   mbed

Committer:
Albutt
Date:
Sun May 24 21:20:40 2020 +0000
Revision:
10:71ced616a64f
Parent:
9:62fe47a1374f
Child:
12:c557b6c9b17a
Opening Animation and Dead Screen

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 2:c25ec0da7636 3 Serial pcc(USBTX, USBRX);
Albutt 2:c25ec0da7636 4 // nothing doing in the constructor and destructor
Albutt 2:c25ec0da7636 5 Character::Character()
Albutt 2:c25ec0da7636 6 {
Albutt 2:c25ec0da7636 7
Albutt 2:c25ec0da7636 8 }
Albutt 2:c25ec0da7636 9
Albutt 2:c25ec0da7636 10 Character::~Character()
Albutt 2:c25ec0da7636 11 {
Albutt 2:c25ec0da7636 12
Albutt 2:c25ec0da7636 13 }
Albutt 2:c25ec0da7636 14
Albutt 2:c25ec0da7636 15 void Character::init(int x,int y)
Albutt 2:c25ec0da7636 16 {
Albutt 2:c25ec0da7636 17 _x = x; // initial x
Albutt 2:c25ec0da7636 18 _y = y; // initial y
Albutt 2:c25ec0da7636 19 _speed = 1; // default speed
Albutt 2:c25ec0da7636 20 }
Albutt 2:c25ec0da7636 21
Albutt 2:c25ec0da7636 22 void Character::draw(N5110 &lcd)
Albutt 2:c25ec0da7636 23 { //sprite is facing left
Albutt 2:c25ec0da7636 24 static int sprite_data[] = {
Albutt 2:c25ec0da7636 25 0,1,1,1,1,
Albutt 2:c25ec0da7636 26 1,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 0,1,1,1,1
Albutt 2:c25ec0da7636 30 };
Albutt 2:c25ec0da7636 31 //turning the sprite
Albutt 4:b16b6078a432 32 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 33 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 34 }
Albutt 4:b16b6078a432 35 if (_dir == 0) {
Albutt 2:c25ec0da7636 36 sprite_data[0] = 0;
Albutt 2:c25ec0da7636 37 sprite_data[4] = 0;
Albutt 2:c25ec0da7636 38 } else if (_dir == 1) {
Albutt 2:c25ec0da7636 39 sprite_data[4] = 0;
Albutt 2:c25ec0da7636 40 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 41 } else if (_dir == 2) {
Albutt 2:c25ec0da7636 42 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 43 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 44 } else if (_dir == 3) {
Albutt 2:c25ec0da7636 45 sprite_data[0] = 0;
Albutt 2:c25ec0da7636 46 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 47 }
Albutt 2:c25ec0da7636 48 // Instantiate the Bitmap
Albutt 2:c25ec0da7636 49 Bitmap sprite(sprite_data, 5, 5);
Albutt 2:c25ec0da7636 50
Albutt 2:c25ec0da7636 51 // Rendered at X and Y
Albutt 2:c25ec0da7636 52 sprite.render(lcd, _x, _y);
Albutt 2:c25ec0da7636 53 }
Albutt 2:c25ec0da7636 54
Albutt 2:c25ec0da7636 55 void Character::update(Direction d,float mag)
Albutt 2:c25ec0da7636 56 {
Albutt 4:b16b6078a432 57 _speed = 1; //scale of speed
Albutt 2:c25ec0da7636 58
Albutt 3:fcc9cf213a61 59 //printf statements for speed
Albutt 3:fcc9cf213a61 60 //pcc.printf("speed = %d \n", _speed);
Albutt 2:c25ec0da7636 61
Albutt 2:c25ec0da7636 62 // update x and y value depending on direction of movement
Albutt 2:c25ec0da7636 63 // Set direction and speed according to north south directions
Albutt 2:c25ec0da7636 64 if (d == N) {
Albutt 2:c25ec0da7636 65 _y-=_speed;
Albutt 2:c25ec0da7636 66 _dir = 0;
Albutt 2:c25ec0da7636 67 } else if (d == S) {
Albutt 2:c25ec0da7636 68 _y+=_speed;
Albutt 2:c25ec0da7636 69 _dir = 2;
Albutt 2:c25ec0da7636 70 } else if (d == E) {
Albutt 2:c25ec0da7636 71 _x+=_speed;
Albutt 2:c25ec0da7636 72 _dir = 1;
Albutt 2:c25ec0da7636 73 } else if (d == W) {
Albutt 2:c25ec0da7636 74 _x-=_speed;
Albutt 2:c25ec0da7636 75 _dir = 3;
Albutt 2:c25ec0da7636 76 }
Albutt 2:c25ec0da7636 77 //testing _x and _y
Albutt 3:fcc9cf213a61 78 //pcc.printf("x = %d \n", _x);
Albutt 3:fcc9cf213a61 79 //pcc.printf("y = %d \n", _y);
Albutt 2:c25ec0da7636 80
Albutt 2:c25ec0da7636 81 // check the x and y position] to ensure that the paddle doesn't go off screen
Albutt 2:c25ec0da7636 82 if (_x < 1) {
Albutt 2:c25ec0da7636 83 _x = 1;
Albutt 2:c25ec0da7636 84 }
Albutt 2:c25ec0da7636 85 if (_y < 1) {
Albutt 2:c25ec0da7636 86 _y = 1;
Albutt 2:c25ec0da7636 87 }
Albutt 2:c25ec0da7636 88 if (_x > 79){
Albutt 2:c25ec0da7636 89 _x = 79;
Albutt 2:c25ec0da7636 90 }
Albutt 2:c25ec0da7636 91 if (_y > 43){
Albutt 2:c25ec0da7636 92 _y = 43;
Albutt 2:c25ec0da7636 93 }
Albutt 2:c25ec0da7636 94 }
Albutt 4:b16b6078a432 95 int Character::get_x()
Albutt 4:b16b6078a432 96 {
Albutt 4:b16b6078a432 97 return _x;
Albutt 4:b16b6078a432 98
Albutt 4:b16b6078a432 99 }
Albutt 4:b16b6078a432 100 int Character::get_y()
Albutt 4:b16b6078a432 101 {
Albutt 4:b16b6078a432 102 return _y;
Albutt 4:b16b6078a432 103
Albutt 4:b16b6078a432 104 }
Albutt 4:b16b6078a432 105 int Character::get_direction(){
Albutt 4:b16b6078a432 106 return _dir;
Albutt 4:b16b6078a432 107 }
Albutt 10:71ced616a64f 108 void Character::reset(){
Albutt 10:71ced616a64f 109 _x = 40;
Albutt 10:71ced616a64f 110 _y = 22;
Albutt 10:71ced616a64f 111 _dir = 0;
Albutt 10:71ced616a64f 112
Albutt 10:71ced616a64f 113 }