2주차 - 넷째날
오늘의 할일
오늘 만든 코드들 적용해서 블록 터트리고 내려오게 하기. .......... clear
0) 일치하지 않으면 되돌아가기 .......... clear
특수블럭 옵션 추가하기 .......... ....?
오늘 한 일
1) 두번째 클릭시, 상하좌우가 아니면 reset하는 부분 함수로 뺌
2) 기준블록과 방향으로 블록 가져오는 함수 수정
3) 기준블록과 지시한 방향의 숫자가 같은지 확인하는 함수 수정
4) 밑줄로 내려가는 함수 호출 조건 수정
5) 블록 움직였을 때, 움직인 블록 기준으로 주변 블록 매치 확인(3개만)
1) 두번째 클릭시, 상하좌우가 아니면 reset하는 부분 함수로 뺌
2) 기준블록과 방향으로 블록 가져오는 함수 수정
사실 이거 말고도 많은 부분을 함수로 빼서 불러오는 식으로 바꾸었다.
원래 DIRECTION 기준으로 주위 블록을 가져올 때, 주변에 없으면 그냥 기준블록을 반환하게 했는데..
뭔가 아닌 것 같아서 NULL로 반환하기로 바꾸었다.
그랬더니 두번째 블록을 클릭해서 선택하는 함수의 예외처리 쪽에서 오류가 발생,..
4방향 블록이 아닌걸 클릭하면 첫번째 블록 선택을 reset 해야하는데,,
4방향 블록 중 하나가 NULL이면 오류가 난다..
그래서 NULL일때, 그 클릭 조건을 대용할 RECT를 임의로 1픽셀짜리 구석탱이에 만들어주고 처리했다..
3) 기준블록과 지시한 방향의 숫자가 같은지 확인하는 함수 생성
블록을 바꾼 이후 일치하는지 검색해서 사라질때가 너무 오래걸렸다.
그래서 움직인 블록을 기준으로 검사하기 위해서 필요한 함수라 만듦..
4) 밑줄로 내려가는 함수 호출 조건 수정
이전에는 보드쪽에서 하나씩 검사하면서 내려줬는데,,
이젠 그냥 블록이 보드에 요청해서 검사하는 식으로 바꾸었다.
0) 일치하지 않으면 되돌아가기
< 블록에 추가된 변수 >
long selectedTime // 교체할때 선택된 시간
bool flagMoveBack //되돌아가야하는지
POINT lastGoalIndex // 교체되기 전 인덱스 임시저장용 변수
블록이 교체될 때, 블록에게 새로운 인덱스를 주기 전, 현재 인덱스를 저장하게 했다. 그리고 선택된 시간도..
그리고 보드쪽에서 주변에 일치하는게 있는지 검사를 한다.
교체한 후에 만약 일치하지 않으면, 블록한테 "야, 너 되돌아가야해!" 라고 플레그를 세운다.
블록은 일정 시간이 지난 후에, 자신의 플레그를 체크하고,
만약 돌아야하면 가장 최근 블록을 다시 현재의 인덱스로 바꾼다.
5) 블록 움직였을 때, 움직인 블록 기준으로 주변 블록 매치 확인(3개만)
주변 블록들이 멈춰있다면,, 검사해서 삭제하게 했다. 근데 이부분 뭔가 오류가 있는 듯. .ㅠㅠ
근데 영상에 보면.. ㅠㅠㅠㅠㅠ 막 블록이 겹치기도 하고.... 아오..ㅠ
내일의 할 일
3개 매치 조건 및 삭제 등등 확인.
아니 3개 매치라고해도./
1) 중간에 꼈을 때 가로
2) 중간에 꼈을 때 세로
3) 4) 가로 양쪽 끝
5) 6) 세로 양쪽 끝
6개 조건이야.........
아 이러니 버그가 안생기나..