Saltuk 212

Dependencies:   mbed KS0108

Committer:
Bilgin
Date:
Fri May 31 15:13:48 2019 +0000
Revision:
0:c7dd8e13fa95
212 Saltuk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bilgin 0:c7dd8e13fa95 1 #include "Tank.h"
Bilgin 0:c7dd8e13fa95 2
Bilgin 0:c7dd8e13fa95 3 /**
Bilgin 0:c7dd8e13fa95 4 constructor
Bilgin 0:c7dd8e13fa95 5 bool true means corresponding coordinates will be incremented every tick (false = decrement)
Bilgin 0:c7dd8e13fa95 6 */
Bilgin 0:c7dd8e13fa95 7 Tank::Tank(short pixel, short x, short y, short dir){
Bilgin 0:c7dd8e13fa95 8 next = 0;
Bilgin 0:c7dd8e13fa95 9 pxl = pixel;
Bilgin 0:c7dd8e13fa95 10 this->x = x;
Bilgin 0:c7dd8e13fa95 11 this->y = y;
Bilgin 0:c7dd8e13fa95 12 this->dir = dir;
Bilgin 0:c7dd8e13fa95 13 collided = false;
Bilgin 0:c7dd8e13fa95 14 }
Bilgin 0:c7dd8e13fa95 15
Bilgin 0:c7dd8e13fa95 16 Bullet* Tank::move(){
Bilgin 0:c7dd8e13fa95 17 Bullet* temp = 0;
Bilgin 0:c7dd8e13fa95 18 short a = 3;
Bilgin 0:c7dd8e13fa95 19 short i = rand() % 10;
Bilgin 0:c7dd8e13fa95 20 if(1 <= i && i <= 4){
Bilgin 0:c7dd8e13fa95 21 dir = i;
Bilgin 0:c7dd8e13fa95 22 }
Bilgin 0:c7dd8e13fa95 23 else if(i == 0 || ((5 <= i) && (i <= 8))){
Bilgin 0:c7dd8e13fa95 24 if(dir == 1)
Bilgin 0:c7dd8e13fa95 25 y = y - a;
Bilgin 0:c7dd8e13fa95 26 else if(dir == 2)
Bilgin 0:c7dd8e13fa95 27 x = x + a;
Bilgin 0:c7dd8e13fa95 28 if(dir == 3)
Bilgin 0:c7dd8e13fa95 29 y = y + a;
Bilgin 0:c7dd8e13fa95 30 else if(dir == 4)
Bilgin 0:c7dd8e13fa95 31 x = x - a;
Bilgin 0:c7dd8e13fa95 32 }
Bilgin 0:c7dd8e13fa95 33 else{
Bilgin 0:c7dd8e13fa95 34 temp = fire();
Bilgin 0:c7dd8e13fa95 35 }
Bilgin 0:c7dd8e13fa95 36
Bilgin 0:c7dd8e13fa95 37 if(x < 0)
Bilgin 0:c7dd8e13fa95 38 x = 0;
Bilgin 0:c7dd8e13fa95 39 else if(x > 120)
Bilgin 0:c7dd8e13fa95 40 x = 120;
Bilgin 0:c7dd8e13fa95 41 else if(y < 0)
Bilgin 0:c7dd8e13fa95 42 y = 0;
Bilgin 0:c7dd8e13fa95 43 else if(y > 56)
Bilgin 0:c7dd8e13fa95 44 y = 56;
Bilgin 0:c7dd8e13fa95 45
Bilgin 0:c7dd8e13fa95 46
Bilgin 0:c7dd8e13fa95 47 return temp;
Bilgin 0:c7dd8e13fa95 48 }
Bilgin 0:c7dd8e13fa95 49
Bilgin 0:c7dd8e13fa95 50 void Tank::changeDirection(short i){
Bilgin 0:c7dd8e13fa95 51 dir = i;
Bilgin 0:c7dd8e13fa95 52 }
Bilgin 0:c7dd8e13fa95 53
Bilgin 0:c7dd8e13fa95 54 Tank* Tank::getNext(){
Bilgin 0:c7dd8e13fa95 55 return next;
Bilgin 0:c7dd8e13fa95 56 }
Bilgin 0:c7dd8e13fa95 57
Bilgin 0:c7dd8e13fa95 58 void Tank::setNext(Tank* newNext)
Bilgin 0:c7dd8e13fa95 59 {
Bilgin 0:c7dd8e13fa95 60 next = newNext;
Bilgin 0:c7dd8e13fa95 61 }
Bilgin 0:c7dd8e13fa95 62
Bilgin 0:c7dd8e13fa95 63 bool Tank::willBeRemoved(){
Bilgin 0:c7dd8e13fa95 64 return collided;
Bilgin 0:c7dd8e13fa95 65 }
Bilgin 0:c7dd8e13fa95 66
Bilgin 0:c7dd8e13fa95 67 Bullet* Tank::fire(){
Bilgin 0:c7dd8e13fa95 68 Bullet* bullet;
Bilgin 0:c7dd8e13fa95 69 if(dir == 1){
Bilgin 0:c7dd8e13fa95 70 bullet = new Bullet(2, x+3, y-2, dir);
Bilgin 0:c7dd8e13fa95 71 }
Bilgin 0:c7dd8e13fa95 72 else if(dir == 2){
Bilgin 0:c7dd8e13fa95 73 bullet = new Bullet(2, x+8, y+3, dir);
Bilgin 0:c7dd8e13fa95 74 }
Bilgin 0:c7dd8e13fa95 75 else if(dir == 3){
Bilgin 0:c7dd8e13fa95 76 bullet = new Bullet(2, x+3, y+8, dir);
Bilgin 0:c7dd8e13fa95 77 }
Bilgin 0:c7dd8e13fa95 78 else if(dir == 4){
Bilgin 0:c7dd8e13fa95 79 bullet = new Bullet(2, x-2, y+3, dir);
Bilgin 0:c7dd8e13fa95 80 }
Bilgin 0:c7dd8e13fa95 81 return bullet;
Bilgin 0:c7dd8e13fa95 82 }
Bilgin 0:c7dd8e13fa95 83
Bilgin 0:c7dd8e13fa95 84 void Tank::getxy(short& xcor, short& ycor){
Bilgin 0:c7dd8e13fa95 85 xcor = x;
Bilgin 0:c7dd8e13fa95 86 ycor = y;
Bilgin 0:c7dd8e13fa95 87 }
Bilgin 0:c7dd8e13fa95 88
Bilgin 0:c7dd8e13fa95 89 void Tank::checkBTcollisions(Bullet* listhead){
Bilgin 0:c7dd8e13fa95 90 Bullet* comp = listhead;
Bilgin 0:c7dd8e13fa95 91 short xcomp, ycomp;
Bilgin 0:c7dd8e13fa95 92
Bilgin 0:c7dd8e13fa95 93 while(comp != 0){
Bilgin 0:c7dd8e13fa95 94 comp->getxy(xcomp, ycomp);
Bilgin 0:c7dd8e13fa95 95
Bilgin 0:c7dd8e13fa95 96 if((x - 1 <= xcomp && xcomp <= x + 7) && (y - 1 <= ycomp && ycomp <= y + 7)){
Bilgin 0:c7dd8e13fa95 97 collided = true;
Bilgin 0:c7dd8e13fa95 98 comp->setCollision();
Bilgin 0:c7dd8e13fa95 99 }
Bilgin 0:c7dd8e13fa95 100 comp = comp->getNext();
Bilgin 0:c7dd8e13fa95 101 }
Bilgin 0:c7dd8e13fa95 102 }
Bilgin 0:c7dd8e13fa95 103
Bilgin 0:c7dd8e13fa95 104 void Tank::setCollision(){
Bilgin 0:c7dd8e13fa95 105 collided = true;
Bilgin 0:c7dd8e13fa95 106 }
Bilgin 0:c7dd8e13fa95 107
Bilgin 0:c7dd8e13fa95 108 short Tank::getDir(){
Bilgin 0:c7dd8e13fa95 109 return dir;
Bilgin 0:c7dd8e13fa95 110 }