コード例 #1
0
ファイル: game.c プロジェクト: evenlis/tdt4258-ex3
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);
  }
}
コード例 #2
0
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);
	}
}