Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Wed Apr 15 11:11:00 2020 +0000
Revision:
5:acd809cc824c
Parent:
4:0df2b85e47f1
Child:
6:12e8433382b3
Improved spaceship movement to all directions and added a different sprite for different directions. Stoped the spaceship from going off the screen in the y-direction.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 3:dee187b8b30c 1 #include "Spaceship.h"
evanso 5:acd809cc824c 2
evanso 5:acd809cc824c 3 //Serial usb(USBTX, USBRX);
evanso 3:dee187b8b30c 4
evanso 5:acd809cc824c 5 const int k_spaceship_sprite_E[4][13] = {
evanso 3:dee187b8b30c 6 { 1,1,1,1,1,1,0,0,0,0,0,0,0 },
evanso 3:dee187b8b30c 7 { 0,1,1,1,1,1,1,1,1,0,0,0,0 },
evanso 3:dee187b8b30c 8 { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
evanso 3:dee187b8b30c 9 { 0,0,1,1,1,1,1,0,0,0,0,0,0 },
evanso 3:dee187b8b30c 10 };
evanso 5:acd809cc824c 11
evanso 5:acd809cc824c 12 const int k_spaceship_sprite_W[4][13] = {
evanso 5:acd809cc824c 13 { 0,0,0,0,0,0,0,1,1,1,1,1,1 },
evanso 5:acd809cc824c 14 { 0,0,0,0,1,1,1,1,1,1,1,1,0 },
evanso 5:acd809cc824c 15 { 1,1,1,1,1,1,1,1,1,1,1,1,1 },
evanso 5:acd809cc824c 16 { 0,0,0,0,0,0,1,1,1,1,1,0,0 },
evanso 5:acd809cc824c 17 };
evanso 3:dee187b8b30c 18
evanso 3:dee187b8b30c 19 Spaceship::Spaceship() {
evanso 3:dee187b8b30c 20
evanso 3:dee187b8b30c 21 }
evanso 3:dee187b8b30c 22
evanso 3:dee187b8b30c 23 Spaceship::~Spaceship() {
evanso 3:dee187b8b30c 24
evanso 3:dee187b8b30c 25 }
evanso 3:dee187b8b30c 26
evanso 3:dee187b8b30c 27 void Spaceship::init() {
evanso 5:acd809cc824c 28 position_x_spaceship_ = 36;
evanso 5:acd809cc824c 29 position_y_spaceship_ = 22;
evanso 5:acd809cc824c 30 spaceship_sprite_direction_ = true;
evanso 3:dee187b8b30c 31 }
evanso 3:dee187b8b30c 32
evanso 3:dee187b8b30c 33 void Spaceship::draw(N5110 &lcd) {
evanso 5:acd809cc824c 34 // Draws spaceships at defined x and y positions with different sprite direction depending on joystick postion
evanso 5:acd809cc824c 35 if (spaceship_sprite_direction_){
evanso 5:acd809cc824c 36 lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_E);
evanso 5:acd809cc824c 37 }else if (!spaceship_sprite_direction_){
evanso 5:acd809cc824c 38 lcd.drawSprite(position_x_spaceship_, position_y_spaceship_, 4, 13, (int*)k_spaceship_sprite_W);
evanso 5:acd809cc824c 39 }
evanso 5:acd809cc824c 40 // printf to find position of spaceship at bottom of screen
evanso 5:acd809cc824c 41 //usb.printf("Spaceship Y postion = %d\n",position_y_spaceship_);
evanso 4:0df2b85e47f1 42 }
evanso 4:0df2b85e47f1 43
evanso 4:0df2b85e47f1 44 void Spaceship::clear_spaceship(N5110 &lcd){
evanso 4:0df2b85e47f1 45 // Clears spaceship from LCD by drawing a white sprite
evanso 4:0df2b85e47f1 46 lcd.drawRect(position_x_spaceship_, position_y_spaceship_, 13, 4, FILL_WHITE);
evanso 3:dee187b8b30c 47 }
evanso 3:dee187b8b30c 48
evanso 5:acd809cc824c 49 // NEED TO REDUCE FUNTION LENGTH ONCE WORKING
evanso 4:0df2b85e47f1 50 void Spaceship::movement(Gamepad &pad){
evanso 4:0df2b85e47f1 51 Direction joystick_direction = pad.get_direction();
evanso 4:0df2b85e47f1 52 // Changes x and y postion values depending on joystick input
evanso 4:0df2b85e47f1 53 if(joystick_direction == N){
evanso 4:0df2b85e47f1 54 position_y_spaceship_+= -1;
evanso 5:acd809cc824c 55 }else if(joystick_direction == NE){
evanso 5:acd809cc824c 56 position_x_spaceship_+= 2;
evanso 5:acd809cc824c 57 position_y_spaceship_+= -1;
evanso 5:acd809cc824c 58 spaceship_sprite_direction_ = true;
evanso 4:0df2b85e47f1 59 }else if(joystick_direction == E){
evanso 4:0df2b85e47f1 60 position_x_spaceship_+= 2;
evanso 5:acd809cc824c 61 spaceship_sprite_direction_ = true;
evanso 5:acd809cc824c 62 }else if(joystick_direction == SE){
evanso 5:acd809cc824c 63 position_x_spaceship_+= 2;
evanso 5:acd809cc824c 64 position_y_spaceship_+= 1;
evanso 5:acd809cc824c 65 spaceship_sprite_direction_ = true;
evanso 5:acd809cc824c 66 }else if(joystick_direction == S){
evanso 5:acd809cc824c 67 position_y_spaceship_+= 1;
evanso 5:acd809cc824c 68 }else if(joystick_direction == SW){
evanso 5:acd809cc824c 69 position_y_spaceship_+= 1;
evanso 5:acd809cc824c 70 position_x_spaceship_-= 2;
evanso 5:acd809cc824c 71 spaceship_sprite_direction_ = false;
evanso 4:0df2b85e47f1 72 }else if(joystick_direction == W){
evanso 4:0df2b85e47f1 73 position_x_spaceship_-= 2;
evanso 5:acd809cc824c 74 spaceship_sprite_direction_ = false;
evanso 5:acd809cc824c 75 }else if(joystick_direction == NW){
evanso 5:acd809cc824c 76 position_x_spaceship_-= 2;
evanso 5:acd809cc824c 77 position_y_spaceship_+= -1;
evanso 5:acd809cc824c 78 spaceship_sprite_direction_ = false;
evanso 5:acd809cc824c 79 }
evanso 5:acd809cc824c 80
evanso 5:acd809cc824c 81 // Checks y position of spaceship and stops it from going of screen
evanso 5:acd809cc824c 82 if (position_y_spaceship_ < 1) {
evanso 5:acd809cc824c 83 position_y_spaceship_ = 1;
evanso 5:acd809cc824c 84 }
evanso 5:acd809cc824c 85 if (position_y_spaceship_ > 44) {
evanso 5:acd809cc824c 86 position_y_spaceship_ = 44;
evanso 5:acd809cc824c 87 }
evanso 4:0df2b85e47f1 88 }
evanso 4:0df2b85e47f1 89