일단 구현하려는방식은 테트리스 블럭을 한번에 만드는 방식이아니라
정육면체를 하나 만든다음 그걸 위치값을 다르게줘서 움직이는 방식으로 했거든요
문제의 로직인데요 제가 하려는건 이게 하는 역할이 블럭이 (4개씩 나옵니다) 나오게 되면 그블럭들 중에서 하나라도 맵과 부딛히게 되면 전부 멈춰버리게 하려는 방식이거든요
근데 실행하고 확인해본결과 맵과 충돌하는순간
list iterator not incrementable
라고 에러가 나옵니다 왜 이런건가요?
void Bluck::MapColision()
{
for(BluckIter= BluckList.begin(); BluckIter != BluckList.end(); ++BluckIter)//현재블럭부터 마지막(움직이는블럭)블럭들중에서
{
if(BluckIter->m_vPos.y<=1)//특정 블럭위치가 1이되면(블럭은 회전하기때문에 어떤게 바닥에 먼저 닿을지를모르기때문에)
{
BluckIter->m_vPos.y=1;//그 블럭의 위치값은 1로 고정이되며
BluckIter->m_BluckState=BLUCK_STOP;//블럭은 움직일수 없는 상태가 된다
for(BluckIter = BluckList.begin(); BluckIter != BluckList.end(); ++BluckIter)//그 이후에 다른블럭들도 멈춰야하므로 처음부터 검사를다시해서
{
if(BluckIter->m_BluckState==BLUCK_MOVE)//움직이는 상태인 것들만 골라내서
{
BluckIter->m_BluckState=BLUCK_STOP;//그것들을 전부 멈추게한다
}
}
MakeBluck();//그뒤에 블럭을 새로 다시 만든다
}
}
}
댓글 0