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 clear

slide

막힐 때까지 방향으로 여러 칸을 이동합니다.

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 clear

Conditional (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)남서
orthogonalN|S|E|W직선 방향
diagonalNE|NW|SE|SW대각선 방향
any모두 8모든 방향
forward백은 N, 흑은 S플레이어 기준 앞
backward백은 S, 흑은 N플레이어 기준 뒤