Musallam Bseiso / Friendly
Committer:
musallambseiso
Date:
Mon Apr 03 12:39:35 2017 +0000
Revision:
6:378b5d29e9cf
Parent:
5:0cd7f779418a
Child:
7:ac97bd2f5b1a
Upgraded friendly movement from 4-directional (N, S, E, W) to 8-directional (N, S, E, W, NE, NW, SE, SW)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
musallambseiso 4:879c4cb8a7e4 1 #include "Friendly.h"
musallambseiso 4:879c4cb8a7e4 2
musallambseiso 4:879c4cb8a7e4 3 // Class for friendly ship (the one you control)
musallambseiso 4:879c4cb8a7e4 4
musallambseiso 4:879c4cb8a7e4 5 Friendly::Friendly()
musallambseiso 4:879c4cb8a7e4 6 {
musallambseiso 4:879c4cb8a7e4 7 }
musallambseiso 4:879c4cb8a7e4 8
musallambseiso 4:879c4cb8a7e4 9 Friendly::~Friendly()
musallambseiso 4:879c4cb8a7e4 10 {
musallambseiso 4:879c4cb8a7e4 11 }
musallambseiso 4:879c4cb8a7e4 12
musallambseiso 4:879c4cb8a7e4 13 void Friendly::init(int x,int height,int width) // initialization
musallambseiso 4:879c4cb8a7e4 14 {
musallambseiso 4:879c4cb8a7e4 15 _x = 2; // starting x position (fixed)
musallambseiso 4:879c4cb8a7e4 16 _y = HEIGHT/2 - height/2; // starting y position (centre)
musallambseiso 4:879c4cb8a7e4 17 }
musallambseiso 4:879c4cb8a7e4 18
musallambseiso 4:879c4cb8a7e4 19 void Friendly::draw(N5110 &lcd) // draws friendly ship in screen buffer
musallambseiso 4:879c4cb8a7e4 20 {
musallambseiso 5:0cd7f779418a 21 lcd.drawLine(_x,_y,_x,_y+6,1);
musallambseiso 5:0cd7f779418a 22 lcd.drawLine(_x+1,_y,_x+3,_y,1);
musallambseiso 5:0cd7f779418a 23 lcd.drawLine(_x+1,_y+6,_x+3,_y+6,1);
musallambseiso 5:0cd7f779418a 24 lcd.drawLine(_x+4,_y+1,_x+5,_y+1,1);
musallambseiso 5:0cd7f779418a 25 lcd.drawLine(_x+4,_y+5,_x+5,_y+5,1);
musallambseiso 5:0cd7f779418a 26 lcd.drawLine(_x+6,_y+2,_x+6,_y+4,1);
musallambseiso 4:879c4cb8a7e4 27 }
musallambseiso 4:879c4cb8a7e4 28
musallambseiso 4:879c4cb8a7e4 29 void Friendly::update(Direction d,float mag)
musallambseiso 4:879c4cb8a7e4 30 {
musallambseiso 5:0cd7f779418a 31 _speed = int(mag*4.0f);
musallambseiso 4:879c4cb8a7e4 32
musallambseiso 4:879c4cb8a7e4 33 // four-directional movement
musallambseiso 4:879c4cb8a7e4 34 if (d == N) {
musallambseiso 4:879c4cb8a7e4 35 _y-=_speed;
musallambseiso 4:879c4cb8a7e4 36 } else if (d == S) {
musallambseiso 4:879c4cb8a7e4 37 _y+=_speed;
musallambseiso 4:879c4cb8a7e4 38 } else if (d == W) {
musallambseiso 4:879c4cb8a7e4 39 _x-=_speed;
musallambseiso 4:879c4cb8a7e4 40 } else if (d == E) {
musallambseiso 4:879c4cb8a7e4 41 _x+=_speed;
musallambseiso 6:378b5d29e9cf 42 } else if (d == NW) {
musallambseiso 6:378b5d29e9cf 43 _y-=_speed;
musallambseiso 6:378b5d29e9cf 44 _x-=_speed;
musallambseiso 6:378b5d29e9cf 45 } else if (d == NE) {
musallambseiso 6:378b5d29e9cf 46 _y-=_speed;
musallambseiso 6:378b5d29e9cf 47 _x+=_speed;
musallambseiso 6:378b5d29e9cf 48 } else if (d == SW) {
musallambseiso 6:378b5d29e9cf 49 _y+=_speed;
musallambseiso 6:378b5d29e9cf 50 _x-=_speed;
musallambseiso 6:378b5d29e9cf 51 } else if (d == SE) {
musallambseiso 6:378b5d29e9cf 52 _y+=_speed;
musallambseiso 6:378b5d29e9cf 53 _x+=_speed;
musallambseiso 4:879c4cb8a7e4 54 }
musallambseiso 4:879c4cb8a7e4 55
musallambseiso 4:879c4cb8a7e4 56 // position check so the ship doesn't go out of bounds
musallambseiso 4:879c4cb8a7e4 57 if (_y < 1) {
musallambseiso 4:879c4cb8a7e4 58 _y = 1;
musallambseiso 4:879c4cb8a7e4 59 }
musallambseiso 4:879c4cb8a7e4 60
musallambseiso 4:879c4cb8a7e4 61 if (_y > 41) {
musallambseiso 4:879c4cb8a7e4 62 _y = 41;
musallambseiso 4:879c4cb8a7e4 63 }
musallambseiso 4:879c4cb8a7e4 64
musallambseiso 4:879c4cb8a7e4 65 if (_x < 1) {
musallambseiso 4:879c4cb8a7e4 66 _x = 1;
musallambseiso 4:879c4cb8a7e4 67 }
musallambseiso 4:879c4cb8a7e4 68
musallambseiso 5:0cd7f779418a 69 if (_x > 78) {
musallambseiso 5:0cd7f779418a 70 _x = 78;
musallambseiso 4:879c4cb8a7e4 71 }
musallambseiso 4:879c4cb8a7e4 72 }
musallambseiso 4:879c4cb8a7e4 73
musallambseiso 4:879c4cb8a7e4 74 Vector2D Friendly::get_pos() {
musallambseiso 4:879c4cb8a7e4 75 Vector2D p = {_x,_y};
musallambseiso 4:879c4cb8a7e4 76 return p;
musallambseiso 4:879c4cb8a7e4 77 }