Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Spaceship/Spaceship.cpp
- Committer:
- evanso
- Date:
- 2020-04-22
- Revision:
- 10:aca793aa7abc
- Parent:
- 9:1ddb8dc93e48
- Child:
- 11:ab578a151f67
File content as of revision 10:aca793aa7abc:
#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;
}
}
void Spaceship::movement(Gamepad &pad){
Direction joystick_direction = pad.get_direction();
switch (joystick_direction) {
case N: set_spaceship_peram(-1, 0, false , false); break;
case NE: set_spaceship_peram(1, -1, true, true); break;
case E: set_spaceship_peram(1, 0, true, true); break;
case SE: set_spaceship_peram(1, 1, true, true); break;
case S: set_spaceship_peram(0, 1, false, false); break;
case SW: set_spaceship_peram(-1, 1, true, false); break;
case W: set_spaceship_peram(-1, 0, true, false); break;
case NW: set_spaceship_peram(-1, -1, true, false); break;
}
}
int Spaceship::get_position_x_spaceship(){
return position_x_spaceship_;
}
void Spaceship::set_spaceship_peram(int x_change,int y_change, bool sprite_change, bool sprite_param){
position_x_spaceship_ += x_change;
position_y_spaceship_ += y_change;
if (sprite_change) {
spaceship_sprite_direction_ = sprite_param;
}
}