void rotate() {
int tempBlock[USERBLOCK_SIZE][USERBLOCK_SIZE] = { 0, };
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k < USERBLOCK_SIZE; k++) {
tempBlock[k][USERBLOCK_SIZE - i - 1] = userBlock[i][k];
}
}
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k < USERBLOCK_SIZE; k++) {
userBlock[i][k] = tempBlock[i][k];
}
}
}
그리고 회전이 너무 빨리 되므로 next함수에
if (keyboardInput == 'w' && controlCheck > 0.1) {
rotate();
controlCheck = 0.0f;
}
를 넣어주면 적당한 속도로 돌아갑니다
그리고 이 상태라면 블록을 x축의 맨 끝 부분에 놓고 돌리면 배열 밖으로 나가므로
bool canRotate() {
for (int i = 0; i < USERBLOCK_SIZE; i++) {
for (int k = 0; k < USERBLOCK_SIZE; k++) {
if (userBlock[i][k] == 1 && USERBLOCK_SIZE - i - 1 + blockX <= 0) return false;
if (userBlock[i][k] == 1 && USERBLOCK_SIZE - i - 1 + blockX >= GRID_WIDTH) return false;
}
}
return true;
}
이런 함수를 만들고 next함수의 rotate부분을
if (keyboardInput == 'w' && canRotate() && controlCheck > 0.1) {
rotate();
controlCheck = 0.0f;
}
로 바꿔줍니다