Example #1
0
void Escapist::makeStep(Field *mainField, Mouse *virtualMouse)
{
	if (!getEndOfGame())
	{
		findBorder(mainField, mainField->getField(), _currPosX, _currPosY);

		currentWave = waves[waves.size() - 1];//get destination border
		for (unsigned int i = 0; i < currentWave.size(); ++i)
		{
			if (currentWave[i].line == 0 || currentWave[i].col == 0 || currentWave[i].line == 8 || currentWave[i].col == 8)
			{
				destination.line = currentWave[i].line;
				destination.col = currentWave[i].col;
				break;
			}
		}

		paveTheWay();

		changeCoodrinates(mainField);

		//#pragma region log
		//		for (unsigned int i = 0; i < waves.size(); ++i)
		//		{
		//			currentWave = waves[i];
		//			for (unsigned int j = 0; j < currentWave.size(); ++j)
		//			{
		//				std::cout << currentWave[j].line << ' ' << currentWave[j].col << "; ";
		//			}
		//			std::cout << '\n';
		//		}
		//
		//		std::cout << "destination border: ";
		//		std::cout << destination.line << ' ' << destination.col << '\n';
		//
		//		std::cout << "\nPath: ";
		//		for (unsigned int i = 0; i < path.size(); ++i)
		//		{
		//			std::cout << path[i].line << ' ' << path[i].col << "; ";
		//		}
		//#pragma endregion

		currentWave.clear();
		nextWave.clear();
		waves.clear();
		path.clear();
	}
	mainField->setHit(false);
}
    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
		bool lFlag, rFlag;
		int lBorder = findBorder(intervals, lFlag, newInterval.start);
		int rBorder = findBorder(intervals, rFlag, newInterval.end);

		if (lFlag && rFlag) {
			intervals[rBorder].start = intervals[lBorder].start;
			intervals.erase(intervals.begin()+lBorder, intervals.begin()+rBorder);
		} else if (!lFlag && rFlag) {
			intervals[rBorder].start = newInterval.start;
			intervals.erase(intervals.begin()+lBorder, intervals.begin()+rBorder);
		} else if (lFlag && !rFlag) {
			intervals[lBorder].end = newInterval.end;
			intervals.erase(intervals.begin()+lBorder+1, intervals.begin()+rBorder);
		} else {
			intervals.erase(intervals.begin()+lBorder, intervals.begin()+rBorder);
			intervals.insert(intervals.begin()+lBorder, newInterval);
		}

		return intervals;
    }