Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Spaceship/Spaceship.cpp

Committer:
evanso
Date:
2020-04-18
Revision:
7:0af4ced868f5
Parent:
6:12e8433382b3
Child:
9:1ddb8dc93e48

File content as of revision 7:0af4ced868f5:

#include "Spaceship.h"
 
const int k_spaceship_sprite_E[4][13] = {
    { 1,1,1,1,1,1,0,0,0,0,0,0,0 },
    { 0,1,1,1,1,1,1,1,1,0,0,0,0 },
    { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
    { 0,0,1,1,1,1,1,0,0,0,0,0,0 },
};

const int k_spaceship_sprite_W[4][13] = {
    { 0,0,0,0,0,0,0,1,1,1,1,1,1 },
    { 0,0,0,0,1,1,1,1,1,1,1,1,0 },
    { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
    { 0,0,0,0,0,0,1,1,1,1,1,0,0 },
};
 
Spaceship::Spaceship() {
    
}
 
Spaceship::~Spaceship() {
    
}
 
void Spaceship::init() {
    position_x_spaceship_ = 36;
    position_y_spaceship_ = 22;
    spaceship_sprite_direction_ = true;
}
 
void Spaceship::draw(N5110 &lcd) {
    off_screen_x_y_checker();
    // Draws spaceships at defined x and y positions with different sprite direction depending on joystick postion 
    if (spaceship_sprite_direction_){
        lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_E);
    }else if (!spaceship_sprite_direction_){
    lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_W);
    }
    // printf to find position of spaceship for making the off screen checkers
    //usb.printf("Spaceship Y postion = %d\n",position_y_spaceship_);
}

void Spaceship::clear_spaceship(N5110 &lcd){
    // Clears spaceship from LCD by drawing a white sprite
    lcd.drawRect(position_x_spaceship_, position_y_spaceship_, 13, 4, FILL_WHITE);
}

void Spaceship::off_screen_x_y_checker(){
    // checks y postion and alters y position 
    if (position_y_spaceship_ < 1) {
        position_y_spaceship_ = 1;
    }
    if (position_y_spaceship_ > 44) {
        position_y_spaceship_ = 44;
    }  
    
    if (position_x_spaceship_ > 52) {
        position_x_spaceship_ = 52;
    }
    if (position_x_spaceship_ < 22) {
        position_x_spaceship_ = 22;
    }
}    
// NEED TO REDUCE FUNTION LENGTH ONCE WORKING 
void Spaceship::movement(Gamepad &pad){
    Direction joystick_direction = pad.get_direction();
    // Changes x and y postion values depending on joystick input
    if(joystick_direction == N){
        position_y_spaceship_+= -1;
    }else if(joystick_direction == NE){
        position_x_spaceship_+= 1; 
        position_y_spaceship_+= -1; 
        spaceship_sprite_direction_ = true;
    }else if(joystick_direction == E){
        position_x_spaceship_+= 2;
        spaceship_sprite_direction_ = true; 
    }else if(joystick_direction == SE){
        position_x_spaceship_+= 1;
        position_y_spaceship_+= 1;   
        spaceship_sprite_direction_ = true;  
    }else if(joystick_direction == S){
        position_y_spaceship_+= 1;
    }else if(joystick_direction == SW){
        position_y_spaceship_+= 1;
        position_x_spaceship_-= 1;
        spaceship_sprite_direction_ = false; 
    }else if(joystick_direction == W){
        position_x_spaceship_-= 2;
        spaceship_sprite_direction_ = false; 
    }else if(joystick_direction == NW){
        position_x_spaceship_-= 1;
        position_y_spaceship_+= -1;
        spaceship_sprite_direction_ = false; 
    } 
}
int Spaceship::get_position_x_spaceship(){
    return position_x_spaceship_;
}