윷놀이를 만들고 나니 다음에는 장기판을 꺼내 보고 싶었다. 함께 앉아서 하는 전통 놀이를 조금 더 이어가 보자는 생각이었다. 이번에는 윷을 던지는 대신 말 하나를 고르고, 어디에 둘지 생각하는 게임이다.
체스를 만든 뒤라 비교해 보고 싶은 부분도 있었다. 차는 룩처럼 움직이고 마는 나이트와 닮았지만, 겉모양이 비슷하다고 규칙까지 같은 건 아니었다. 이번에는 그 차이를 직접 눌러 볼 수 있는 장기판을 만들기로 했다.
이번에도 Sonnet을 썼다. 이름은 ‘장기 한 판’. 초와 한이 한 컴퓨터에서 번갈아 두고, 파일을 내려받으면 인터넷 연결 없이 브라우저에서 실행하는 방식으로 정했다.
판을 열고 아래쪽 왼편의 포를 눌렀다. 선택 표시는 생겼는데 갈 수 있는 칸에는 아무 표시도 나오지 않았다.
처음 안내는 ‘막혀 있거나 아군 기물·경계에 걸림’이었다. 틀린 말은 아니지만 화면에는 빈칸이 잔뜩 보인다. 이 설명만으로는 왜 포가 움직이지 않는지 알기 어려웠다. ‘포는 다른 기물 하나를 넘어야 움직입니다. 포를 넘거나 잡을 수는 없습니다’라는 설명으로 바꿨다.
장기의 포는 말을 잡을 때만 뛰는 게 아니다. 빈칸으로 갈 때도 다리가 되어 줄 기물이 필요하다. 시작 배치의 포가 바로 움직이지 못하는 것은 오류가 아니었다. PyChess의 장기 규칙 안내와 대조하며 포와 마, 궁성 안의 이동을 확인했다.
마를 한 번 옮기니 포가 갈 곳이 네 군데 생겼다
이번에는 B1의 마를 눌렀다. A3와 C3 두 곳에 이동 표시가 떴다. 그중 C3로 옮기고, 한의 병을 A7에서 A6으로 한 칸 전진시켰다. 다시 초 차례가 되어 B3의 포를 선택했다.
이번에는 달랐다. 조금 전 옮긴 마 너머로 D3, E3, F3, G3에 초록색 점이 생겼다. 마가 포의 다리가 된 것이다. 같은 포를 같은 자리에서 눌렀는데, 말 하나의 위치가 달라지자 갈 수 있는 곳이 네 군데 생겼다.
직접 눌러 보니 이 화면 하나가 긴 설명보다 나았다. 오른쪽 끝 H3에는 같은 편 포가 있어서 거기까지 갈 수는 없었다. 이동 가능한 빈칸은 점으로, 잡을 수 있는 상대 말은 붉은 고리로 구분했다. 나는 D3를 눌러 포를 옮겼다.
마도 체스의 나이트처럼 처리하면 안 됐다. 나이트는 중간의 말을 뛰어넘지만, 장기의 마는 첫 길목이 막히면 그쪽으로 갈 수 없다. 상은 확인해야 할 중간 길목이 두 개다. 도착 칸이 비었는지만 검사해서는 부족했다. 이 부분은 일부러 길목에 말을 둔 테스트로 따로 확인했다.
장군을 풀었더니 이번에는 빅장이 됐다
포가 움직이는 것을 본 뒤에는 장군 표시도 확인해 봤다. 양쪽 말을 번갈아 조작하면서 중앙의 졸을 전진시켰다. 중간에 한은 ‘한 수 쉼’을 사용했다. 초의 졸이 E8까지 올라가자 한의 왕이 있는 E9를 공격하게 됐다.
상단에 ‘한 차례 · 장군!’이 떴고 ‘한 수 쉼’ 버튼이 비활성화됐다. 그냥 상대에게 차례를 넘길 수 없고, 먼저 장군을 풀어야 한다는 뜻이다.
여기서 한의 왕으로 바로 앞의 졸을 잡아 봤다. 장군은 풀렸지만 화면에는 또 다른 안내가 떴다. ‘빅장! 마주 봄을 풀거나 빅장 수락.’ 중앙의 졸이 사라지면서 두 왕 사이에 아무 말도 남지 않은 것이다.
장군과 빅장을 같은 상태로 묶으면 이 흐름을 표현할 수 없었다. 이번 게임에서는 빅장을 받은 쪽이 두 왕의 마주 봄을 풀거나, ‘빅장 수락’을 눌러 무승부로 끝내도록 했다. 실제로 수락 버튼을 누르자 무승부 안내가 나왔고, 무르기를 누르면 수락 전으로 돌아갔다.
화면을 확인하며 처음 넣었던 이동 안내 문구를 고쳤고, 잡힌 말과 차례가 무르기 후 돌아오는지도 확인했다. 규칙 테스트는 마·상의 길막, 포의 제한, 궁성 대각선, 장군·빅장·외통 등을 합쳐 18개를 통과했다. 화면에서 확인한 장면과 별도로 외통 상황은 테스트용 배치로 검사했다.
이번 버전은 가볍게 두는 로컬 2인용이다. 시작 전에 마와 상의 순서를 고를 수 있고, 대국 중에는 한 수씩 무를 수 있다. 대회 점수 계산이나 제한 시간, 반복 수 자동 판정은 넣지 않았다. 두 번 연속 쉬면 무승부로 끝나는 자체 규칙을 쓰며, 서로 합의해서 끝내는 버튼도 있다.
장기를 고른 덕분에 이번에는 ‘움직일 수 없는 이유’를 화면에 적는 일을 해봤다. 처음 눌렀을 때 포는 가만히 있었지만, 마를 옮기고 다시 누르니 길이 보였다. 다음에는 처음 이 판을 보는 사람도 그 차이를 안내만 보고 이해할 수 있는지 확인해 보고 싶다.
장기 한 판 실행하기
저장소에서 janggi.html 파일을 내려받아 브라우저로 열면 된다. 설치나 로그인 없이 같은 기기에서 초와 한이 번갈아 둔다.