void calculateEnemyMove(Entity* enemy){ if((abs(enemy->position.x - player.position.x) == 1 && enemy->position.y - player.position.y == 0) || (abs(enemy->position.y - player.position.y) == 1 && enemy->position.x - player.position.x == 0)){ attackPlayer(enemy); return; } Position playerPos = player.position; Position enemyPos = enemy->position; int enemyX = enemyPos.x; int enemyY = enemyPos.y; // int best = 1000000000; Position up = (Position){enemyX, enemyY-1}; Position right = (Position){enemyX+1, enemyY}; Position down = (Position){enemyX, enemyY+1}; Position left = (Position){enemyX-1, enemyY}; if(isFreeSpace(up) && hamiltonDistance(up, playerPos) < hamiltonDistance(enemyPos, playerPos)){ unchanged[enemyY*MAP_WIDTH + enemyX] = FALSE; unchanged[(enemyY-1) * MAP_WIDTH + enemyX] = FALSE; moveEnemy(enemy, EVENT_MOVE_UP); }else if(isFreeSpace(right) && hamiltonDistance(right, playerPos) < hamiltonDistance(enemyPos, playerPos)){ unchanged[enemyY*MAP_WIDTH + enemyX + 1] = FALSE; unchanged[enemyY*MAP_WIDTH + enemyX] = FALSE; moveEnemy(enemy, EVENT_MOVE_RIGHT); }else if(isFreeSpace(down) && hamiltonDistance(down, playerPos) < hamiltonDistance(enemyPos, playerPos)){ unchanged[(enemyY+1)*MAP_WIDTH + enemyX] = FALSE; unchanged[enemyY*MAP_WIDTH + enemyX] = FALSE; moveEnemy(enemy, EVENT_MOVE_DOWN); }else if(isFreeSpace(left) && hamiltonDistance(left, playerPos) < hamiltonDistance(enemyPos, playerPos)){ unchanged[enemyY*MAP_WIDTH + enemyX-1] = FALSE; unchanged[enemyY*MAP_WIDTH + enemyX] = FALSE; moveEnemy(enemy, EVENT_MOVE_LEFT); } }
void ShowAtVenue::AddSeats(int numOfTickets, const Contact& customer) throw (NoMoreRoomException) {//Curently work in very meh way, you probably won't seat with your buddies if (isFreeSpace(numOfTickets)) { for (int i = 0; i < m_venue.getNumOfRows(); i++) { for (int j = 0; j < m_venue.getNumOfSeatsPerRow(); j++) { if (!m_seatArr[i][j]) //Free Seat :) { m_seatArr[i][j] = new Contact(customer); m_numOfPeople++; if (--numOfTickets == 0) return; } } } } else { throw NoMoreRoomException(&customer); } }