From 7f79b2e216617ff74ebd41ac02663b20ef3d0904 Mon Sep 17 00:00:00 2001 From: tom Date: Sat, 21 Nov 2015 12:30:13 -0600 Subject: began adding collision *added a location class for ease *much refractoring needed to fully implement it* --- src/Character.cpp | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 4 deletions(-) (limited to 'src/Character.cpp') diff --git a/src/Character.cpp b/src/Character.cpp index 7f12035..fd482a9 100644 --- a/src/Character.cpp +++ b/src/Character.cpp @@ -6,18 +6,20 @@ Character::Character(char nSymbol, int nColor, int nRow, int nCol) row = nRow; col = nCol; color = nColor; + l.x = row; + l.y = col; } -void Character::move(int nRow, int nCol) +void Character::move(Location L) { - row = nRow; - col = nCol; + l.x = L.x; + l.y = L.y; } void Character::draw(WINDOW * w) { wattron(w,COLOR_PAIR(color)); - mvwaddch(w,row,col,symbol); + mvwaddch(w,l.x,l.y,symbol); } int Character::getRow() @@ -34,3 +36,63 @@ char Character::getSymbol() { return symbol; } + +bool Character::action(vector occupied) +{ + if(order == "wander") + { + Location L; + int r = rand()%15+1; + if(r==1) + { + L.x = l.x+1; + L.y = l.y; + } + else if(r==2) + { + L.x = l.x-1; + L.y = l.y; + } + else if(r==3) + { + L.x = l.x; L.y = l.y+1; + } + else if(r==4) + { + L.x = l.x; L.y = l.y-1; + } + else if(r==5) + { + L.x = l.x+1; L.y = l.y+1; + } + else if(r==6) + { + L.x = l.x-1; L.y = l.y-1; + } + else if(r==7) + { + L.x = l.x+1; L.y = l.y-1; + } + else if(r==8) + { L.x = l.x-1; L.y = l.y+1; + + } + else + return false; + + if(check(L,occupied)) + move(L); + else + return false; + + return true; + } +} + +bool Character::check(Location L, vector occupied) +{ + for(int i = 0; i < 10; i++) + if(l.x == occupied[i].x && l.y == occupied[i].y) + return true; + return true; +} -- cgit v1.2.3