Skip to content

버그와 개선  #1

@ahnHeejune

Description

@ahnHeejune

코드 잘 봤습니다.

몇가지 오류와 개선할 점이 있는것 같아 적어봅니다.

우선 goRight 코드에 오류가 있네요. 아마 goLeft를 복사해서 사용하시다가 생긴 모양인데.

  1. boundaryArr[i] = getEachRightLoc(blockShape, i); //getEachLeftLoc(blockShape, i);

  2. 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 

이상입니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions