오늘의 할 일
클릭하면 바로 삭제하는거 개선
프레임수 떨어지는 것 개선
매치검사 함수 개선
.........
열심히 했지만 한게 없다.. 울고 싶다...아 울까.
0) tempGoalIndex 생성
블록이 교체중에 일치하지않음에도 불구하고 위에서 신규블록을 생성하는... 그런 현상을 막기위해
임시로 움직이는 척! 하기위한 인덱스값을 주었다.
그런 의미에서 매치를 미리 해서, 매치하는게 주변에 있으면 true 반환, 그대로 goalIndex를 바꿔주고
그렇지 않으면 tempGoalIndex에 움직여야 할 곳의 좌표를 주고, 되돌아가야 한다는 bool을 설정했다.
1) 블록 이동 조건 수정
0번을 하기 위해서는 블록의 moveBlock()함수를 수정해야 했다.
해당 함수에 인자값으로 어느 인덱스로 이동해야하는지 지정하도록 수정했다.
그러면 일치검사에서 일치하지 않으면 moveBlock(tempIndex) 이런식으로 할 수 있다..
tempIndex위치에 가면, 돌아가야 한다는 bool을 다시 false로 바꿔주면,
현재위치와 index위치가 다르기에 알아서 돌아간다..
근데.. 움직였을 때, 가로세로 어느것 하나가 일치하는게 있으면 안돌아간다..
아 왜 진짜 왬ㄴㄹ옴ㄴㅇ로ㅕㅓㅣㅏㅏㅣ 이중if가 먹히지 않는거야 왜 ...
이거는 내일 다시 뜯어봐야 겠다 ㅠ.
코드 뜯어보다가 속터져 진짜..
임시인덱스로 움직이고 다시 검사하게 할까? 아닌데에..
2) 매치 함수 수정
일전에는 그냥 단순히 블록과 방향을 인자로 주면, 그 방향의 블록과 일치하는지를 검사했다.
그런데 1번블록의 값과 2번블록 주변이랑 비교를 해야하는데..
기존의 걸로 하면 그냥 1번블록 주변이랑 비교를 하더라..ㅠㅠ
그래서 2번블록을 기준으로 보는거지만, 1번블록의 블록종류로 봐야하기 때문에..
1번블록의 종류를 인자로 하나 더 받는 함수를 추가했다..
근데.. 이게 잘 안먹혀서 1번의 문제가 생기는 듯..
하.. 미치겠네..
눈앞이 깜깜스. ㅠ 왜 2번매치가 안먹히는지 이해가 안돼....
// 왼쪽 끝에 붙었을 때
if (isSameEachBlock(_blockType, _target1, RIGHT))
{
_target2 = getNearBlock(_target1, RIGHT);
if (isSameEachBlock(_blockType, _target2, RIGHT))
{
return isMatched = true;
}
}
//지정된 타입과, 해당블록의 방향에 있는 타입이 일치하는지
bool BlockBoard::isSameEachBlock(int _blockType, Block * _target1, DIRECTION _direction)
{
bool isSame = false;
if (!isSideNullBlock(_target1, _direction))
{
Block* _target2 = getNearBlock(_target1, _direction);
{
int num1 = _blockType;
int num2 = _target2->getNum();
if (num1 == num2)
{
isSame = true;
}
}
}
return isSame;
}
분명 이런식으로 비교하는 애들이 다 잘못되서... 낀애들 아닌 가생이에 붙는애들 함수가 다 이상한거 같은데..
낼 말짱한 정신으로 다시 봐야겠다..
아아 피곤해에..
기한 내에 끝낼 수 있을 까 ㅠ ㅠ
내일의 할 일:
챡! 들러붙는 거 수정하기
여유되면 매치 4개 5개 추가하기..
내일까지만 해보고.. 뭔가 영 답이 없다 싶으면 그냥 이미지 붙이는거 시작해야겠다..
'Project (C++) > 1 Month Project' 카테고리의 다른 글
3주차 - 셋째날 (0) | 2019.11.27 |
---|---|
3주차 - 둘째날 (0) | 2019.11.26 |
2주차 - 다섯째날 (0) | 2019.11.22 |
2주차 - 넷째날 (0) | 2019.11.21 |
2주차 - 셋째날 (0) | 2019.11.20 |