코드 잘 봤습니다.
몇가지 오류와 개선할 점이 있는것 같아 적어봅니다.
우선 goRight 코드에 오류가 있네요. 아마 goLeft를 복사해서 사용하시다가 생긴 모양인데.
-
boundaryArr[i] = getEachRightLoc(blockShape, i); //getEachLeftLoc(blockShape, i);
-
if((curLoc->X) + rightW < MAP_SIZE_W){ // 벽에 안닿음
if(!((boundaryArr[0] != -1 && map[curLoc->Y][curLoc->X + boundaryArr[0] +1] != EMPTY) // 4개를 따로 검사
||(boundaryArr[1] != -1 && map[curLoc->Y +1][curLoc->X + boundaryArr[1] +1] != EMPTY)
||(boundaryArr[2] != -1 && map[curLoc->Y +2][curLoc->X + boundaryArr[2] +1] != EMPTY)
||(boundaryArr[3] != -1 && map[curLoc->Y +3][curLoc->X + boundaryArr[3] +1] != EMPTY))){
removeShape(map, blockShape,curLoc);
(curLoc->X)++;
}
이렇게 해야 될꺼 같구요.
또한 setBlock 함수에서 srand 를 매번 부르는것은 좀 이상합니다.
프로그램 시작이나 게임 시작에서 한번만 부르면 된다고 생각이 듧니다
// srand((unsigned int)(time(NULL)));
그리고, 다음 코드는 case 문 쓸 필요 없이
copyBlock(blockShape, shape[rand() % 7]);
하면 될꺼 같네요.
그리고 아마 Blinking해서 map에 현재 움직이는 shape 을 포함했다 뺏다 하신것 같은데 그것도 움직임가 Sleep 순서를 조절하시면 자연스럽게 따로 처리 가능합니다.
그리고, 실행파일에는 문제가 없는데, 여기 올라온 코드에는 checkLine 두번하는 부분은 이해가 안되구요.
checkLine(map, curLoc, &score); //
checkLine(map, curLoc, &score); //why 2 times only ?
checkLine 함수안에서도 다음과 같이 바꿔야하는 것 같네요.
//for(h=MAP_SIZE_H ; h >= (curLoc.Y -1); h--){ // check from bottom
for(h=MAP_SIZE_H-1 ; h >= (curLoc.Y -1); h--){ // check from bottom
이상입니다.
코드 잘 봤습니다.
몇가지 오류와 개선할 점이 있는것 같아 적어봅니다.
우선 goRight 코드에 오류가 있네요. 아마 goLeft를 복사해서 사용하시다가 생긴 모양인데.
boundaryArr[i] = getEachRightLoc(blockShape, i); //getEachLeftLoc(blockShape, i);
if((curLoc->X) + rightW < MAP_SIZE_W){ // 벽에 안닿음
if(!((boundaryArr[0] != -1 && map[curLoc->Y][curLoc->X + boundaryArr[0] +1] != EMPTY) // 4개를 따로 검사
||(boundaryArr[1] != -1 && map[curLoc->Y +1][curLoc->X + boundaryArr[1] +1] != EMPTY)
||(boundaryArr[2] != -1 && map[curLoc->Y +2][curLoc->X + boundaryArr[2] +1] != EMPTY)
||(boundaryArr[3] != -1 && map[curLoc->Y +3][curLoc->X + boundaryArr[3] +1] != EMPTY))){
}
이렇게 해야 될꺼 같구요.
또한 setBlock 함수에서 srand 를 매번 부르는것은 좀 이상합니다.
프로그램 시작이나 게임 시작에서 한번만 부르면 된다고 생각이 듧니다
// srand((unsigned int)(time(NULL)));
그리고, 다음 코드는 case 문 쓸 필요 없이
copyBlock(blockShape, shape[rand() % 7]);
하면 될꺼 같네요.
그리고 아마 Blinking해서 map에 현재 움직이는 shape 을 포함했다 뺏다 하신것 같은데 그것도 움직임가 Sleep 순서를 조절하시면 자연스럽게 따로 처리 가능합니다.
그리고, 실행파일에는 문제가 없는데, 여기 올라온 코드에는 checkLine 두번하는 부분은 이해가 안되구요.
checkLine 함수안에서도 다음과 같이 바꿔야하는 것 같네요.
이상입니다.