imspecialone   4년 전

안녕하세요. goto문이 코딩에 있어서 일종의 금기(..)에 가깝다는 것은 많이 들었는데,

도저히 goto말고는 흐름 처리를 어떻게 해야 할지 감이 오지 않아 다른분들은 어떻게 접근하셨는지 궁금해 질문합니다

우선 제가 접근한 방식은 아래와 같습니다

1. nextY와 nextX 좌표를 계산해, 다음 board의 색을 미리 살펴봅니다

2.다음 board가 파란색일 경우, 방향을 반대로 전환하고 isBlue 트리거를 true로 설정한 후 goto문을 통해 처음으로 돌아갑니다

3.다시 nextY와 nextX를 계산하고, 이번에도 파란색일 경우 isBlue가 true로 설정되어 있으므로 그냥 넘어갑니다

짧은 시간 내에 떠올리자니 저런식으로 접근하는 법 밖에 찾지 못했는데, 다른 방법으로 푸신 분 계신다면 조언을 부탁드리겠습니다! 감사합니다

seico75   4년 전

전체 소스가 없어서 확인은 못하겠지만.. 아래와 같이 하면 어떨까요?

        int nextY, nextX;
	int nowD = unitArray[i].dir;
	nextY = nowY + dy[nowD];
	nextX = nowX + dx[nowD];

	if (board[nextY][nextX] == 2) { //파란색
		nowD = unitArray[i].dir = change_dir(nowD);
		nextY = nowY + dy[nowD];
		nextX = nowX + dx[nowD];
	}

	//이동 체크
	if (board[nextY][nextX] == 0) { //흰색
		stack_white(nowY, nowX, nextY, nextX);

	}

	else if (board[nextY][nextX] == 1) {//빨간색
		stack_red(nowY, nowX, nextY, nextX);
	}

	//else if (board[nextY][nextX] == 2) { //파란색
	//
	//}

댓글을 작성하려면 로그인해야 합니다.