shinbian11   3년 전

소스코드가 길지만, 60~69번째 줄만 봐주세요. 제가 궁금한건 이 부분인데요, 

61,62번째 줄은 다음에 이동할 곳이 빈칸이면 move=true로 한다라는 의미이고, (조건1이라 가정)

64~66번째 줄은 다음에 이동할 곳의 물고기 사이즈가 아기상어 크기와 같으면 move=true로 해주고, (조건2이라 가정)

67~69번째 줄은 아기상어가 더 크면, eat=move=true로 해준다는 조건인데요.(조건3이라 가정)

조건1을 조건2와 조건 3 밑으로 두니까 무한루프가 돌던데, 왜 조건 1이 조건2,3보다 먼저 따져야 하는 조건인가요?

아기상어가 빈칸으로 이동하는 경우가 물고기를 먹으면서 이동하는 경우보다 우선순위가 높은건가요? 

seico75   3년 전

소스를 다 보지는 않았지만, "if 조건1, else if 조건2, else if 조건3"의 순서에서 조건3를 통과한 것의 의미는

"조건1도 아니고 조건2도 아니고 조건3인 경우"를 의미합니다.  조건2는 조건3과 상충되니 별 문제가 없겠지만

조건1아니면서 조건3인 것은 분명 의미있는 내용인 것 같습니다.

조건 3을 (v[nx][ny] != 0 && v[nx][ny]< current_size) 으로 하시고 첫번째로 옮기시면 원하시는데로 동작할 것으로 생각됩니다.

참고로 

if 조건1 else if 조건2 else if 조건3 과 같은 식은 우선순위를 의미하지 않습니다.

"조건1 이거나, 조건1은 아니고 조건2이거나 조건1/2가 아니고 조건3이거나" 와 같은 식으로 조건을 좁혀가는 것을 의미하고 그럴때 주로 씁니다.

if 조건1 ... return

if 조건2 ... return

if 조건3 ... return

이런 식이면 우선 순위로 볼 수 있겠죠.

shinbian11   3년 전

감사합니다. 제가 착각을 했었나 보네요..

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