지금까지 배운 행마식(move, take)은 칸을 활성화하는 것이 주 목적이었습니다.
하지만 때로는 칸을 활성화하기 전에, 그곳의 상태를 미리 확인만 하고 싶을 때가 있습니다. 예를 들어, "만약 (1, 0) 위치가 비어있다면, (2, 1)로 점프하라"와 같은 규칙입니다.
이때 조건식(Conditional Expression)을 사용합니다. 조건식은 기준 위치를 옮기거나(peek 제외) 칸을 활성화하지 않고, 단지 보드를 관찰한 뒤 ✅ true 또는 ❌ false만 반환합니다.
행마법이 꺾이는 경우, 행마법이 언제 어디로 꺾여야 할 지 판단해야 한다면 필수적으로 사용되어야 합니다. 4.1 Example: Bouncing-Bishop 에서 이 부분을 집중적으로 사용합니다.
observe vs peek (엿보기)두 식 모두 해당 칸이 비어있는지 확인합니다. 비어있으면 ✅ true, 기물이 있으면 ❌ false를 반환합니다.
observe(dx, dy) (관찰):
true/false를 반환합니다.peek(dx, dy) (이동하며 엿보기):
true를 반환한다면, '기준 위치'도 (dx, dy)만큼 이동합니다.false를 반환하면 '기준 위치'는 움직이지 않습니다.)enemy(dx, dy): (dx, dy) 위치에 적 기물이 있으면 true를 반환합니다.friendly(dx, dy): (dx, dy) 위치에 아군 기물이 있으면 true를 반환합니다.piece-on(piece, dx, dy): (dx, dy) 위치에 piece (예: 'rook') 기물이 있으면 true를 반환합니다.danger(dx, dy): (dx, dy) 위치가 현재 적에게 공격받고 있으면 true를 반환합니다.check: (위치와 상관없이) 현재 아군이 체크 상태이면 true를 반환합니다.이 식들은 Bouncing-Bishop 예시의 핵심입니다.
bound(dx, dy): (dx, dy) 위치가 보드 밖이면(어느 방향이든) true를 반환합니다.edge(dx, dy): (dx, dy) 위치가 보드의 변을 벗어나면 true를 반환합니다.corner(dx, dy): (dx, dy) 위치가 보드의 모서리를 벗어나면 true를 반환합니다.세부 경계 확인: