Barış Bilgin Şenol
/
Game_Logic
Saltuk 212
Tank/Tank.cpp@0:c7dd8e13fa95, 2019-05-31 (annotated)
- Committer:
- Bilgin
- Date:
- Fri May 31 15:13:48 2019 +0000
- Revision:
- 0:c7dd8e13fa95
212 Saltuk
Who changed what in which revision?
User | Revision | Line number | New 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 | } |