Barış Bilgin Şenol
/
Game_Logic
Saltuk 212
Tank/TankList.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 "TankList.h" |
Bilgin | 0:c7dd8e13fa95 | 2 | |
Bilgin | 0:c7dd8e13fa95 | 3 | TankList::TankList(){ |
Bilgin | 0:c7dd8e13fa95 | 4 | tankCount = 0; |
Bilgin | 0:c7dd8e13fa95 | 5 | head = 0; |
Bilgin | 0:c7dd8e13fa95 | 6 | } |
Bilgin | 0:c7dd8e13fa95 | 7 | |
Bilgin | 0:c7dd8e13fa95 | 8 | TankList::~TankList(){ |
Bilgin | 0:c7dd8e13fa95 | 9 | if (head != 0) |
Bilgin | 0:c7dd8e13fa95 | 10 | { |
Bilgin | 0:c7dd8e13fa95 | 11 | Tank* prev = head; |
Bilgin | 0:c7dd8e13fa95 | 12 | Tank* cur = head; |
Bilgin | 0:c7dd8e13fa95 | 13 | while (cur->getNext() != 0) |
Bilgin | 0:c7dd8e13fa95 | 14 | { |
Bilgin | 0:c7dd8e13fa95 | 15 | cur = cur->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 16 | delete prev; |
Bilgin | 0:c7dd8e13fa95 | 17 | prev = cur; |
Bilgin | 0:c7dd8e13fa95 | 18 | } |
Bilgin | 0:c7dd8e13fa95 | 19 | delete cur; |
Bilgin | 0:c7dd8e13fa95 | 20 | } |
Bilgin | 0:c7dd8e13fa95 | 21 | } |
Bilgin | 0:c7dd8e13fa95 | 22 | |
Bilgin | 0:c7dd8e13fa95 | 23 | void TankList::addTank(short pixel, short x, short y, short dir){ |
Bilgin | 0:c7dd8e13fa95 | 24 | //add to beginning of the list |
Bilgin | 0:c7dd8e13fa95 | 25 | if (head != 0) |
Bilgin | 0:c7dd8e13fa95 | 26 | { |
Bilgin | 0:c7dd8e13fa95 | 27 | Tank* newTank = new Tank(pixel, x, y, dir); |
Bilgin | 0:c7dd8e13fa95 | 28 | newTank->setNext(head); |
Bilgin | 0:c7dd8e13fa95 | 29 | head = newTank; |
Bilgin | 0:c7dd8e13fa95 | 30 | tankCount++; |
Bilgin | 0:c7dd8e13fa95 | 31 | } |
Bilgin | 0:c7dd8e13fa95 | 32 | // add as the head if the head is empty |
Bilgin | 0:c7dd8e13fa95 | 33 | else |
Bilgin | 0:c7dd8e13fa95 | 34 | { |
Bilgin | 0:c7dd8e13fa95 | 35 | head = new Tank(pixel, x, y, dir); |
Bilgin | 0:c7dd8e13fa95 | 36 | tankCount++; |
Bilgin | 0:c7dd8e13fa95 | 37 | } |
Bilgin | 0:c7dd8e13fa95 | 38 | } |
Bilgin | 0:c7dd8e13fa95 | 39 | |
Bilgin | 0:c7dd8e13fa95 | 40 | void TankList::removeCollisions(){ |
Bilgin | 0:c7dd8e13fa95 | 41 | Tank* cur = head->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 42 | Tank* prev = head; |
Bilgin | 0:c7dd8e13fa95 | 43 | Tank* temp; |
Bilgin | 0:c7dd8e13fa95 | 44 | |
Bilgin | 0:c7dd8e13fa95 | 45 | if(head != 0){ |
Bilgin | 0:c7dd8e13fa95 | 46 | //check excluding head |
Bilgin | 0:c7dd8e13fa95 | 47 | while(cur != 0){ |
Bilgin | 0:c7dd8e13fa95 | 48 | if(cur->willBeRemoved()){ |
Bilgin | 0:c7dd8e13fa95 | 49 | temp = cur->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 50 | delete cur; |
Bilgin | 0:c7dd8e13fa95 | 51 | cur = 0; |
Bilgin | 0:c7dd8e13fa95 | 52 | cur = temp; |
Bilgin | 0:c7dd8e13fa95 | 53 | prev->setNext(cur); |
Bilgin | 0:c7dd8e13fa95 | 54 | } |
Bilgin | 0:c7dd8e13fa95 | 55 | else{ |
Bilgin | 0:c7dd8e13fa95 | 56 | prev = cur; |
Bilgin | 0:c7dd8e13fa95 | 57 | cur = cur->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 58 | } |
Bilgin | 0:c7dd8e13fa95 | 59 | } |
Bilgin | 0:c7dd8e13fa95 | 60 | //check head |
Bilgin | 0:c7dd8e13fa95 | 61 | if(head->willBeRemoved()){ |
Bilgin | 0:c7dd8e13fa95 | 62 | temp = head->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 63 | delete head; |
Bilgin | 0:c7dd8e13fa95 | 64 | head = 0; |
Bilgin | 0:c7dd8e13fa95 | 65 | head = temp; |
Bilgin | 0:c7dd8e13fa95 | 66 | } |
Bilgin | 0:c7dd8e13fa95 | 67 | } |
Bilgin | 0:c7dd8e13fa95 | 68 | } |
Bilgin | 0:c7dd8e13fa95 | 69 | |
Bilgin | 0:c7dd8e13fa95 | 70 | void TankList::moveAll(BulletList* blist){ |
Bilgin | 0:c7dd8e13fa95 | 71 | Tank* cur = head; |
Bilgin | 0:c7dd8e13fa95 | 72 | Bullet* fired; |
Bilgin | 0:c7dd8e13fa95 | 73 | |
Bilgin | 0:c7dd8e13fa95 | 74 | while(cur != 0){ |
Bilgin | 0:c7dd8e13fa95 | 75 | fired = cur->move(); |
Bilgin | 0:c7dd8e13fa95 | 76 | if(fired != 0) |
Bilgin | 0:c7dd8e13fa95 | 77 | blist->addBullet(2, fired->x, fired->y, fired->dir); |
Bilgin | 0:c7dd8e13fa95 | 78 | |
Bilgin | 0:c7dd8e13fa95 | 79 | cur = cur->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 80 | } |
Bilgin | 0:c7dd8e13fa95 | 81 | } |
Bilgin | 0:c7dd8e13fa95 | 82 | |
Bilgin | 0:c7dd8e13fa95 | 83 | void TankList::checkallBTcollisions(Bullet* listhead){ |
Bilgin | 0:c7dd8e13fa95 | 84 | Tank* cur = head; |
Bilgin | 0:c7dd8e13fa95 | 85 | |
Bilgin | 0:c7dd8e13fa95 | 86 | while(cur != 0){ |
Bilgin | 0:c7dd8e13fa95 | 87 | cur->checkBTcollisions(listhead); |
Bilgin | 0:c7dd8e13fa95 | 88 | cur = cur->getNext(); |
Bilgin | 0:c7dd8e13fa95 | 89 | } |
Bilgin | 0:c7dd8e13fa95 | 90 | } |
Bilgin | 0:c7dd8e13fa95 | 91 | |
Bilgin | 0:c7dd8e13fa95 | 92 | Tank* TankList::getHead(){ |
Bilgin | 0:c7dd8e13fa95 | 93 | return head; |
Bilgin | 0:c7dd8e13fa95 | 94 | } |