ChessLang 이동 패턴 완전 레퍼런스
이동 패턴
이동 패턴은 기물이 보드에서 어떻게 이동할 수 있는지 정의합니다.
기본 패턴
step
방향으로 고정된 수의 칸을 이동합니다.
chesslang
step(direction) # 1칸
step(direction, N) # N칸매개변수:
| 매개변수 | 타입 | 설명 |
|---|---|---|
| direction | 방향 | 이동 방향 |
| distance | 숫자 | 칸 수 (기본값: 1) |
예시:
chesslang
# 킹 이동
move: step(any)
# 폰 초기 더블 무브
move: step(forward, 2) where first_move and clearslide
막힐 때까지 방향으로 여러 칸을 이동합니다.
chesslang
slide(direction)예시:
chesslang
# 룩 이동
move: slide(orthogonal)
# 비숍 이동
move: slide(diagonal)
# 퀸 이동
move: slide(orthogonal) | slide(diagonal)leap
특정 오프셋으로 점프하며, 중간 기물을 무시합니다.
chesslang
leap(dx, dy)참고: 8가지 회전/반사가 모두 자동으로 포함됩니다.
예시:
chesslang
# 나이트 이동
move: leap(2, 1)
# 캐멀 (페어리 기물)
move: leap(3, 1)
# 제브라 (페어리 기물)
move: leap(3, 2)hop
기물을 뛰어넘어 반대편에 착지합니다.
chesslang
hop(direction)예시:
chesslang
# 캐논 스타일 이동 (뛰어넘어서 잡을 수 있음)
capture: hop(orthogonal)패턴 조합자
Or (|)
여러 패턴 중 선택합니다.
chesslang
pattern1 | pattern2예시:
chesslang
# 퀸 = 룩 + 비숍
move: slide(orthogonal) | slide(diagonal)Then (+)
순차적 이동 (특수 기물용).
chesslang
pattern1 + pattern2예시:
chesslang
# 그리폰: 대각선으로 이동 후 직선 이동
move: step(diagonal) + slide(orthogonal)Repeat (*)
패턴을 N번 반복합니다.
chesslang
pattern * N예시:
chesslang
# 정확히 3칸 이동
move: step(forward) * 3 where clearConditional (where)
패턴에 조건을 추가합니다.
chesslang
pattern where condition예시:
chesslang
# 폰 더블 무브는 첫 이동에서만
move: step(forward, 2) where first_move and clear방향 레퍼런스
| 방향 | 벡터 | 설명 |
|---|---|---|
N | (0, 1) | 북 (위) |
S | (0, -1) | 남 (아래) |
E | (1, 0) | 동 (오른쪽) |
W | (-1, 0) | 서 (왼쪽) |
NE | (1, 1) | 북동 |
NW | (-1, 1) | 북서 |
SE | (1, -1) | 남동 |
SW | (-1, -1) | 남서 |
orthogonal | N|S|E|W | 직선 방향 |
diagonal | NE|NW|SE|SW | 대각선 방향 |
any | 모두 8 | 모든 방향 |
forward | 백은 N, 흑은 S | 플레이어 기준 앞 |
backward | 백은 S, 흑은 N | 플레이어 기준 뒤 |