ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18ajst

Dependencies:   mbed

Committer:
Albutt
Date:
Sun May 17 12:34:15 2020 +0000
Revision:
2:c25ec0da7636
Child:
3:fcc9cf213a61
Moving Character Basic

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 _level = 0; // start score from zero
Albutt 2:c25ec0da7636 21 }
Albutt 2:c25ec0da7636 22
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 2:c25ec0da7636 33 if (_dir == 0) {
Albutt 2:c25ec0da7636 34 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 35 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 36 }
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 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 41 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 42 }
Albutt 2:c25ec0da7636 43 sprite_data[4] = 0;
Albutt 2:c25ec0da7636 44 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 45 } else if (_dir == 2) {
Albutt 2:c25ec0da7636 46 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 47 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 48 }
Albutt 2:c25ec0da7636 49 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 50 sprite_data[24] = 0;
Albutt 2:c25ec0da7636 51 } else if (_dir == 3) {
Albutt 2:c25ec0da7636 52 for(int i = 0; i < 25; i++){
Albutt 2:c25ec0da7636 53 sprite_data[i] = 1;
Albutt 2:c25ec0da7636 54 }
Albutt 2:c25ec0da7636 55 sprite_data[0] = 0;
Albutt 2:c25ec0da7636 56 sprite_data[20] = 0;
Albutt 2:c25ec0da7636 57 }
Albutt 2:c25ec0da7636 58 // Instantiate the Bitmap
Albutt 2:c25ec0da7636 59 Bitmap sprite(sprite_data, 5, 5);
Albutt 2:c25ec0da7636 60
Albutt 2:c25ec0da7636 61 // Rendered at X and Y
Albutt 2:c25ec0da7636 62 sprite.render(lcd, _x, _y);
Albutt 2:c25ec0da7636 63 }
Albutt 2:c25ec0da7636 64
Albutt 2:c25ec0da7636 65 void Character::update(Direction d,float mag)
Albutt 2:c25ec0da7636 66 {
Albutt 2:c25ec0da7636 67 _speed = int(mag*2.0f); //scale of speed
Albutt 2:c25ec0da7636 68
Albutt 2:c25ec0da7636 69 //printf statements with char to convert
Albutt 2:c25ec0da7636 70 pcc.printf("speed = %d \n", _speed);
Albutt 2:c25ec0da7636 71
Albutt 2:c25ec0da7636 72 // update x and y value depending on direction of movement
Albutt 2:c25ec0da7636 73 // Set direction and speed according to north south directions
Albutt 2:c25ec0da7636 74 if (d == N) {
Albutt 2:c25ec0da7636 75 _y-=_speed;
Albutt 2:c25ec0da7636 76 _dir = 0;
Albutt 2:c25ec0da7636 77 } else if (d == S) {
Albutt 2:c25ec0da7636 78 _y+=_speed;
Albutt 2:c25ec0da7636 79 _dir = 2;
Albutt 2:c25ec0da7636 80 } else if (d == E) {
Albutt 2:c25ec0da7636 81 _x+=_speed;
Albutt 2:c25ec0da7636 82 _dir = 1;
Albutt 2:c25ec0da7636 83 } else if (d == W) {
Albutt 2:c25ec0da7636 84 _x-=_speed;
Albutt 2:c25ec0da7636 85 _dir = 3;
Albutt 2:c25ec0da7636 86 }
Albutt 2:c25ec0da7636 87 //testing _x and _y
Albutt 2:c25ec0da7636 88 pcc.printf("x = %d \n", _x);
Albutt 2:c25ec0da7636 89 pcc.printf("y = %d \n", _y);
Albutt 2:c25ec0da7636 90
Albutt 2:c25ec0da7636 91 // check the x and y position] to ensure that the paddle doesn't go off screen
Albutt 2:c25ec0da7636 92 if (_x < 1) {
Albutt 2:c25ec0da7636 93 _x = 1;
Albutt 2:c25ec0da7636 94 }
Albutt 2:c25ec0da7636 95 if (_y < 1) {
Albutt 2:c25ec0da7636 96 _y = 1;
Albutt 2:c25ec0da7636 97 }
Albutt 2:c25ec0da7636 98 if (_x > 79){
Albutt 2:c25ec0da7636 99 _x = 79;
Albutt 2:c25ec0da7636 100 }
Albutt 2:c25ec0da7636 101 if (_y > 43){
Albutt 2:c25ec0da7636 102 _y = 43;
Albutt 2:c25ec0da7636 103 }
Albutt 2:c25ec0da7636 104 }
Albutt 2:c25ec0da7636 105 void Character::level_up()
Albutt 2:c25ec0da7636 106 { //Mutator function for leveling up
Albutt 2:c25ec0da7636 107 _level++;
Albutt 2:c25ec0da7636 108 }
Albutt 2:c25ec0da7636 109 int Character::get_level()
Albutt 2:c25ec0da7636 110 { //Accessor function for level
Albutt 2:c25ec0da7636 111 return _level;
Albutt 2:c25ec0da7636 112 }