bool canGoRotate() {
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k < USERBLOCK_SIZE; k++) {
if (userBlock[i][k] == 1 && i+blockX<0)
return false;
if (userBlock[i][k] == 1 && i + blockX > GRID_WIDTH-1)
return false;
if (userBlock[i][k] == 1 && gameGridData[blockY + USERBLOCK_SIZE-k-1][blockX + i] == 1)
return false;
}
}
return true;
}
회전할수 있는조건을 회전할 곳에 gameGridData를 확인하는 것과 , 왼쪽,오른쪽 끝을 확인하게 했고요.
void rotate() {
int bufferBlock[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, };
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k <USERBLOCK_SIZE; k++) {
bufferBlock[i][k] = userBlock[k][USERBLOCK_SIZE - i-1];
}
}
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k < USERBLOCK_SIZE; k++) {
userBlock[i][k] = bufferBlock[i][k];
}
}
}
회전 함수는 위와 같이 구성했어요.