간단한 체스 변형 수정을 위한 YAML 스타일 설정

레벨 1: Configure (설정)

레벨 1은 체스 변형을 만드는 가장 간단한 방법입니다. YAML 스타일 구문을 사용하여 프로그래밍 지식 없이도 표준 체스 규칙을 수정할 수 있습니다.

개요

레벨 1은 다음에 적합합니다:

  • 새로운 승리 또는 무승부 조건 추가
  • 보드 설정 수정
  • 보드에 존(zone) 정의
  • 기존 규칙 조정

기본 구조

모든 ChessLang 파일은 게임 정의로 시작합니다:

chesslang
game: "My Chess Variant"
extends: "Standard Chess"
속성필수설명
game변형의 이름
extends아니오상속할 기본 게임 (기본값: "Standard Chess")

보드 설정

보드 크기

chesslang
board:
  size: 8x8

더 크거나 작은 보드를 만들 수 있습니다:

chesslang
board:
  size: 10x8    # 10개 파일, 8개 랭크

존 (Zones)

존은 보드에서 이름이 지정된 영역을 정의합니다:

chesslang
board:
  zones:
    hill: [d4, d5, e4, e5]
    promotion_zone: [a8, b8, c8, d8, e8, f8, g8, h8]
    danger_zone: [d4-e5]    # 범위 표기법

존은 zone.zoneName을 사용하여 조건에서 참조할 수 있습니다.

기물 배치

표준 배치

기본적으로 "Standard Chess"를 확장하면 표준 기물 배치를 얻습니다. 이를 재정의할 수 있습니다:

chesslang
setup:
  White:
    King: [e1]
    Queen: [d1]
    Rook: [a1, h1]
    Bishop: [c1, f1]
    Knight: [b1, g1]
    Pawn: [a2, b2, c2, d2, e2, f2, g2, h2]
  Black:
    King: [e8]
    Queen: [d8]
    Rook: [a8, h8]
    Bishop: [c8, f8]
    Knight: [b8, g8]
    Pawn: [a7, b7, c7, d7, e7, f7, g7, h7]

수정된 배치

다른 시작 위치로 변형을 만들 수 있습니다:

chesslang
# Chess960 스타일 배치
setup:
  White:
    King: [d1]
    Queen: [e1]
    Rook: [a1, h1]
    Bishop: [b1, g1]
    Knight: [c1, f1]
    Pawn: [a2, b2, c2, d2, e2, f2, g2, h2]

추가 기물 배치

chesslang
setup:
  add:
    White:
      Amazon: [d3]    # 커스텀 기물 (정의되어 있어야 함)
    Black:
      Amazon: [d6]

승리 조건

조건 결합 규칙 (중요!)

⚠️ 핵심 개념: 여러 승리 조건은 OR로 결합됩니다.

즉, 추가된 조건 중 하나라도 만족하면 게임이 종료됩니다.

chesslang
victory:
  add:
    hill: King in zone.hill      # checkmate OR hill 중 하나 만족시 승리
    three_checks: checks >= 3    # checkmate OR hill OR three_checks

위 예제에서 기본 체크메이트 조건과 새로 추가된 hill, three_checks 조건 중 어느 하나라도 만족하면 승리합니다.

복합 조건 (AND 로직)

여러 조건을 모두 만족해야 하는 경우, 단일 조건 내에서 and를 사용합니다:

chesslang
victory:
  add:
    # 킹이 중앙에 있고 AND 상대 기물이 5개 이하일 때 승리
    domination: King in zone.hill and opponent.pieces <= 5

승리 조건 추가 (add)

기존 체크메이트를 유지하면서 새로운 승리 방법을 OR로 추가합니다:

chesslang
victory:
  add:
    hill: King in zone.hill      # 기존 조건 OR 이 조건
    racing: King on rank 8       # 기존 조건 OR 이 조건

승리 조건 교체 (replace)

특정 이름의 기존 조건을 새 조건으로 교체합니다 (OR 결합 유지):

chesslang
victory:
  replace:
    checkmate: King captured     # 기존 checkmate 조건을 king_captured로 교체

승리 조건 제거 (remove)

특정 조건을 완전히 제거합니다:

chesslang
victory:
  remove:
    - checkmate                  # 체크메이트 조건 제거
    - stalemate                  # 스테일메이트 조건 제거

조건 처리 순서

  1. remove - 기존 조건 제거
  2. replace - 기존 조건 교체
  3. add - 새 조건 추가 (OR 결합)

승리 조건 구문

조건설명예시
King in zone.X킹이 존 X에 도달King in zone.hill
King on rank N킹이 랭크 N에 도달King on rank 8
King on file X킹이 파일 X에 도달King on file e
King captured킹이 잡힘King captured
checks >= NN회 이상 체크checks >= 3
pieces <= N상대 기물 N개 이하opponent.pieces <= 5
A and BA와 B 모두 만족King in zone.hill and checks >= 2
A or BA 또는 B 만족King captured or pieces == 0

무승부 조건

조건 결합 규칙

⚠️ 핵심 개념: 승리 조건과 마찬가지로, 여러 무승부 조건은 OR로 결합됩니다.

추가된 조건 중 하나라도 만족하면 무승부로 종료됩니다.

무승부 조건 추가 (add)

기존 조건을 유지하면서 새 조건을 OR로 추가합니다:

chesslang
draw:
  add:
    bare_king: pieces == 1 and opponent.pieces == 1  # 양측 킹만 남으면 무승부

무승부 조건 교체 (replace)

특정 이름의 기존 조건을 교체합니다:

chesslang
draw:
  replace:
    repetition: position_count >= 5    # 3회 대신 5회 반복으로 변경

무승부 조건 제거 (remove)

특정 조건을 제거합니다:

chesslang
draw:
  remove:
    - stalemate       # 스테일메이트를 무승부가 아닌 패배로 처리할 때
    - fifty_moves     # 50수 규칙 제거

내장 무승부 조건

조건설명
stalemate합법적인 수가 없고, 체크 상태가 아님
repetition포지션이 3회 반복됨
fifty_moves잡기나 폰 이동 없이 50수
insufficient불충분한 기물

규칙 설정

캐슬링

chesslang
rules:
  castling: true     # 활성화 (기본값)
  castling: false    # 비활성화

앙파상

chesslang
rules:
  en_passant: true   # 활성화 (기본값)
  en_passant: false  # 비활성화

프로모션

chesslang
rules:
  promotion:
    pieces: [Queen, Rook, Bishop, Knight]  # 가능한 프로모션
    rank: 8                                 # 프로모션 랭크

체크 규칙

chesslang
rules:
  check:
    must_escape: true    # 체크에서 벗어나야 함 (기본값)
    can_ignore: false    # 체크를 무시할 수 있음

완전한 예제

King of the Hill

킹을 중앙으로 이동시켜 승리하는 변형입니다.

chesslang
game: "King of the Hill"
extends: "Standard Chess"

board:
  zones:
    hill: [d4, d5, e4, e5]

# 승리 조건: checkmate OR hill (OR 결합)
victory:
  add:
    hill: King in zone.hill

승리 조건 해석: 기본 체크메이트 조건이 유지되고, hill 조건이 OR로 추가됩니다. 즉, 체크메이트 또는 킹이 중앙에 도달하면 승리합니다.

Three-Check

3번 체크를 주면 승리하는 변형입니다.

chesslang
game: "Three-Check"
extends: "Standard Chess"

# 승리 조건: checkmate OR three_checks (OR 결합)
victory:
  add:
    three_checks: checks >= 3

승리 조건 해석: 체크메이트 또는 3회 이상 체크를 주면 승리합니다.

Racing Kings

킹을 먼저 8랭크에 도달시키면 승리하는 변형입니다.

chesslang
game: "Racing Kings"
extends: "Standard Chess"

board:
  size: 8x8

setup:
  White:
    King: [a1]
    Queen: [a2]
    Rook: [b1, b2]
    Bishop: [c1, c2]
    Knight: [d1, d2]
  Black:
    King: [h1]
    Queen: [h2]
    Rook: [g1, g2]
    Bishop: [f1, f2]
    Knight: [e1, e2]

# 승리 조건: checkmate를 racing으로 교체
# 결과: racing 조건만 적용 (체크메이트 제거됨)
victory:
  replace:
    checkmate: King on rank 8

rules:
  check:
    can_ignore: false
    cannot_give: true    # 체크를 줄 수 없음

승리 조건 해석: replace를 사용하여 기본 체크메이트 조건을 "킹이 8랭크 도달" 조건으로 교체했습니다.

Horde Chess

백이 폰 군대로, 흑이 일반 기물로 싸우는 비대칭 변형입니다.

chesslang
game: "Horde Chess"
extends: "Standard Chess"

setup:
  White:
    Pawn: [a1, b1, c1, d1, e1, f1, g1, h1,
           a2, b2, c2, d2, e2, f2, g2, h2,
           a3, b3, c3, d3, e3, f3, g3, h3,
           a4, b4, c4, d4, e4, f4, g4, h4,
           f5, g5]
  Black:
    King: [e8]
    Queen: [d8]
    Rook: [a8, h8]
    Bishop: [c8, f8]
    Knight: [b8, g8]
    Pawn: [a7, b7, c7, d7, e7, f7, g7, h7]

# 완전히 다른 승리 조건으로 교체
victory:
  remove:
    - checkmate            # 기본 체크메이트 제거
  add:
    white_wins: Black.King captured           # 백: 흑의 킹을 잡으면 승리
    black_wins: opponent.pieces == 0          # 흑: 모든 폰을 잡으면 승리

승리 조건 해석: 기본 체크메이트를 제거하고, 양측에 각각 다른 승리 조건을 추가했습니다.

복합 조건 예제

여러 조건을 AND로 결합한 예제입니다.

chesslang
game: "Domination Chess"
extends: "Standard Chess"

board:
  zones:
    center: [d4, d5, e4, e5]

# 복합 승리 조건: AND 로직 사용
victory:
  add:
    # 킹이 중앙에 있고 AND 상대 기물이 5개 이하
    domination: King in zone.center and opponent.pieces <= 5

승리 조건 해석: checkmate 또는 domination 조건 중 하나를 만족하면 승리합니다. domination 조건 자체는 두 조건(킹이 중앙 AND 상대 기물 5개 이하)을 모두 만족해야 합니다.

다음 단계