void ResetSpawnFlag() {
	static int spawnReadyTimer = 0;
	if (collisionFlag == true) {
		spawnReadyTimer++;
	}
	if (spawnReadyTimer >= 3) {
		spawnReadyTimer = 0;
		canSpawn = true;
		collisionFlag = false;
	}
}
테트리스는 위의 함수타이밍에서 완벽히 다 놓아서 전환하기 전에 Line이 완성되는지 아닌지 검사하면 된다.
이것도 기획과 관련된 부분이 있는데..
일단 생각한 건 모든 줄을 다 검사한다.
모든 줄을 검사했는데 한 줄이라도 완성했다면, 중력을 적용하고 Flag를 활용해 한 번 더 검사한다. (Loop나 재귀로 구현하면 됨)
그렇게 아래처럼 구현했는데 버그가 있었다.
// 추후 사용 블록 제거될 시 위의 블록들을 끌어내린다. 모양 그대로
void ApplyLineGravity(int startLine) {
	int width = grid[0].size();
	int height = grid.size();
	// vector<vector<int>> newgrid(height, vector<int>(width, 0));
	// std::swap(grid, newgrid);
	if (startLine < 0 || startLine >= height) {
		cerr << "startLine이 유효범위를 벗어났음.\\n";
		exit(EXIT_FAILURE);
	}
	
	for (int i = startLine; i >= 1; i--) {
		for (int j = 0; j < width; j++) {
			grid[i][j] = grid[i-1][j];
		}
	}
	for (int j = 0; j < width; j++) {
		grid[0][j] = 0;
	}
}
for (auto& clearedLine : clearedLines) { 
		ApplyLineGravity(clearedLine); 
}