오늘의 할일 :
일치하면 없어지고 새로 생성 ...... clear..?
4,5,6개짜리 특수블럭 추가하기 ..... continue;
[+]
블록 선택 조건 수정
이 내려오는 것을 처리하기 전에.. 블록선택하는 조건을 전반적으로 뜯어 고쳤다..
마치 새로 코드를 짠 기분. .ㅠㅠ
1) 블록 선택 조건문 변경
이전에는 처음 선택을 하면, 첫번째 선택을 했다는 bool 변수를 true로 변환하고,
그 true 조건 안에서 처리를 하려고 하는데...
계속 있던 문제가, 두번째 클릭을 먼 곳을 했을 때 그쪽 방향으로 바뀐다는 것..
그리고 클릭이 하나씩 안될때가 있었다..
아예 바꾼것은..
첫번째 클릭했다! 두번째 클릭이 필요하다!! 이 두가지의 bool 변수를 조건으로 줬다.
<슬라이딩 시>
슬라이딩하면 처음 클릭했을때의 좌표를 기준으로 방향을 가져와서, 그쪽의 렉트와 바꾼다.
바꾸고 나면 첫번째 클릭했다 true - 두번째 클릭 필요하다 false로 변경하고,
바꿈이 이뤄지고 나면 첫번째 클릭과 두번째 클릭 관련 변수를 false로 바꾸어 준다.
<클릭 시>
클릭으로 선택할 때는 마우스가 선택한 렉트에서 떨어지는 것을 염두하여,
만약 첫번째 클릭했는데 그 블록 안에서 마우스가 떨어지면
첫번째 클릭했다 true - 두번째 클릭 필요하다 true 로 해주고
두 조건일때 다른 블록을 선택 할 수 있게 했다.
2) 슬라이딩 블록 선택 방법 변경
블록을 선택하면 clickPoint에 마우스의 좌표가 저장된다.
그리고 움직이는 방향에 따라 상하좌우 방향이 결정되는데..
이 쉬워보이는게... 쉽게 안된다...
종이에다가 그림도 엄청 그려보고.. 결국 엑셀로 (문명의 이기를 잊고있었다) 특정 발생 조건을 찾아서..
DIRECTION BlockBoard::getDirection()
{
int distanceX = clickMouse.x - _ptMouse.x ;
int distanceY = clickMouse.y - _ptMouse.y;
int _standardDistance = 25;
//상
if (distanceX < BLOCK_SIZE && distanceY > _standardDistance) return UP;
//하
else if (distanceX < BLOCK_SIZE && distanceY < -_standardDistance) return DOWN;
//좌
else if (distanceY < BLOCK_SIZE && distanceX > _standardDistance) return LEFT;
//우
else if (distanceY < BLOCK_SIZE && distanceX < -_standardDistance) return RIGHT;
else return NONE_DIRECTION;
}
이렇게 예쁘고 깔끔한 코드가 탄생했다.. 흐흐
25픽셀만 마우스가 움직이면 블록 안에서 움직여도 가로세로 잘 판단해서 움직인다.. 흑흑
이거 너무 힘들었어.. 무려 3시간 넘게 걸렸다... ㅠ 이 몇줄 코드 뽑느라구 ㅠㅠ...
3) 가로 세로 일치 할 때 블록 삭제..
엊그제 가로세로 일치 조건문 줄였다고 좋아했는데..
쩔수없이 걍 하나로 합쳤다...
이건 뭐 내 맘대로 늘이고 줄이고 할 수 있으니까 상관은 없는데...
아직 내려오는 모션들이 이쁘지 않아서 손을 좀 더 봐야한다..
내일의 할 일
내려오는 모션 이쁘게 수정..
가끔 터지는 문제 해결해보자.. (y의 -1 을 추가하면 될지도..?
오전중에 저것들이 끝나면 ... 특수블럭 하자! 라고 하려고 했는데,, 오전은 cocos2d 때문에 시간이 없겠구나 .ㅠㅠ
이런.. 하루 스케쥴이 짧아졌다... 이거 여유가 없겠는데..?
'Project (C++) > 1 Month Project' 카테고리의 다른 글
2주차 - 셋째날 (0) | 2019.11.20 |
---|---|
2주차 - 둘째날 (0) | 2019.11.19 |
1주차 - 여섯째날 (0) | 2019.11.16 |
1주차 - 다섯째날 (0) | 2019.11.15 |
1주차 - 넷째날 (0) | 2019.11.14 |