Cách vẽ một bàn cờ thế bằng LaTeX

1. Phần khai báo: Không sửa  gì hết. Đây là file mẫu được soạn trong LaTeX 2.09 (hồi đó chỉ có documentstyle/không như bây giờ documentclass), biên dịch vẫn như bình thường.

\documentstyle{article}
\hoffset=-1.545cm
\setlength{\textwidth}{20cm}\setlength{\textheight}{22cm}
\setlength{\oddsidemargin}{0cm}\setlength{\evensidemargin}{0cm}
\setlength{\topmargin}{0cm}\setlength{\headheight}{0cm}
\newfont{\EchecsChinois}{cchess46}
\newcounter{piecex}\newcounter{piecey}

\newcommand{\piece}[3]{% macro pour afficher une piece
\setcounter{piecex}{#1}\addtocounter{piecex}{-1}%
\setcounter{piecey}{#2}\addtocounter{piecey}{-1}%
\put(\value{piecex},\value{piecey}){\special{" grestore WhiteMask gsave}}%
\put(\value{piecex},\value{piecey})%
{\setbox0=\hbox{\EchecsChinois #3}\kern-0.5\wd0\box0}%
}

\begin{document}
\thispagestyle{empty}
\begin{center}
\setlength{\unitlength}{2.2cm}%
\begin{picture}(8.1,9.1)%
\put(0,0){\framebox(8,9){}}%
\put(-0.05,-0.05){\framebox(8.1,9.1){}}%

%
\newsavebox{\Something}%
\savebox{\Something}(8,1)[bl]{\multiput(0,0)(1,0){8}{\framebox(1,1){}}}%

% vẽ carô ngang và dọc bàn cờ
\multiput(0,0)(0,1){4}{\usebox{\Something}}% tất cả đường ngang và dọc   bên đen
\multiput(0,5)(0,1){4}{\usebox{\Something}}% tất cả đường ngang và dọc   bên trắng
%
\newsavebox{\SW}\newsavebox{\SE}\newsavebox{\NE}\newsavebox{\NW}%
\savebox{\SW}(1,1)[bl]{%
\put(0.1,0.1){\line(1,0){0.2}}\put(0.1,0.1){\line(0,1){0.2}}}%
\savebox{\SE}(1,1)[bl]{%
\put(0.9,0.1){\line(-1,0){0.2}}\put(0.9,0.1){\line(0,1){0.2}}}%
\savebox{\NE}(1,1)[bl]{%
\put(0.9,0.9){\line(-1,0){0.2}}\put(0.9,0.9){\line(0,-1){0.2}}}%
\savebox{\NW}(1,1)[bl]{%
\put(0.1,0.9){\line(1,0){0.2}}\put(0.1,0.9){\line(0,-1){0.2}}}%
% On va commencer par faire les "croix" completes
\savebox{\Something}(2,2)[bl]{%
\put(0,0){\usebox{\NE}}\put(1,0){\usebox{\NW}}\put(1,1){\usebox{\SW}}\put(0,1){\usebox{\SE}}}%

% Ký hiệu đứng của con  đen
\put(0,1){\usebox{\Something}}% pháo đen trái
\put(6,1){\usebox{\Something}}% pháo đen phải
\put(1,2){\usebox{\Something}}% tốt đen trái
\put(3,2){\usebox{\Something}}% tốt đen giữa
\put(5,2){\usebox{\Something}}% tốt đen phải 

% Ký hiệu đứng của con  trắng
\put(0,6){\usebox{\Something}}% pháo trắng phải
\put(6,6){\usebox{\Something}}%  pháo trắng trái
\put(1,5){\usebox{\Something}}% tốt đen phải
\put(3,5){\usebox{\Something}}% tốt trắng giữa
\put(5,5){\usebox{\Something}}% tốt trắng trái 

% Maintenant les demi-croix gauches tốt trắng biên phải
\savebox{\Something}(1,2)[bl]{%
\put(0,0){\usebox{\NW}}\put(0,1){\usebox{\SW}}}%
\put(0,2){\usebox{\Something}}%
\put(0,5){\usebox{\Something}}%

% ...les demi-croix droites tốt trắng biên trái
\savebox{\Something}(1,2)[bl]{%
\put(0,0){\usebox{\NE}}\put(0,1){\usebox{\SE}}}%
\put(7,2){\usebox{\Something}}%
\put(7,5){\usebox{\Something}}%
%
% et pour finir, les camps des generaux:
\savebox{\Something}(2,2)[bl]{%
\put(0,0){\line(1,1){2}}% La "longueur" a fournir est celle de la projection horizontale
\put(2,0){\line(-1,1){2}}}%
\put(3,0){\usebox{\Something}}%
\put(3,7){\usebox{\Something}}%

% Bàn cờ thế
viết bàn cờ thế vào đây
% Hết bàn cờ thế 

\end{picture}
\end{center}
\end{document}

2. Cách đặt một quân cờ vào bàn cờ.

Bàn cờ có hai quân: quân đen và quân trắng.
Mỗi bên có Xe (R), Pháo (C), Mã (B)  Tướng (K), Sĩ (G), tượng (B), tốt (P). Chữ in hoa chỉ quân trắng, chữ thường chỉ quân đen.

Bàn cờ được định vị bởi một hệ trục toạ độ Đê-các vuông góc. Với gốc toạ độ nằm ở góc trái dưới. Hoành độ từ 1 đến 9. Tung độ từ 1 đến 10.

Ví dụ, ta muốn đặt quân xe đen lên án ngữ quân tướng trắng ở trong thành:

  1. Bàn cờ
    % Bàn cờ 
    
    %  quân đen 
    \piece{1}{1}{r} % xe đen trái 
    \piece{9}{1}{r} %  xe đen phải 
    \piece{2}{1}{n} % ngựa đen trái 
    \piece{8}{1}{n} % ngựa đen phải 
    \piece{3}{1}{b}  % tượng đen trái 
    \piece{7}{1}{b} % tượng đen phải 
    \piece{4}{1}{g} % sĩ đen trái 
    \piece{6}{1}{g} % sĩ đen phải 
    \piece{2}{3}{c} % pháo đen trái 
    \piece{8}{3}{c} % pháo đen phải 
    \piece{1}{4}{p}  % tốt đen biên trái 
    \piece{3}{4}{p}  % tốt đen trái 
    \piece{5}{4}{p}  % tốt đen giữa 
    \piece{7}{4}{p}  % tốt đen phải 
    \piece{9}{4}{p} %  tốt đen biên phải  
    \piece{5}{1}{k} % tướng đen 
    
    % quân trắng 
    \piece{1}{10}{R}  % xe trắng phải (bên phải  của ngừoi chơi bên trắng )
    \piece{9}{10}{R}  % xe trắng trái 
    \piece{2}{10}{N}  % ngựa trắng phải 
    \piece{8}{10}{N}  % ngựa trắng trái 
    \piece{3}{10}{B}  % tượng trắng phải 
    \piece{7}{10}{B}  %  tượng trắng trái 
    \piece{4}{10}{G}  % sĩ trắng phải 
    \piece{6}{10}{G}  %  sĩ trắng trái 
    \piece{2}{8}{C}   % pháo trắng trái 
    \piece{8}{8}{C}   % pháo trắng phải 
    \piece{1}{7}{P}    % tốt trắng biên phải 
    \piece{3}{7}{P}    % tốt trắng phải 
    \piece{5}{7}{P}    % tốt trắng giữa 
    \piece{7}{7}{P}    % tốt trắng trái 
    \piece{9}{7}{P}    %  tốt trắng  biên trái 
    \piece{5}{10}{K}  % tướng trắng 
    
    % Hết bàn cờ 
    

    tuong1

  2.   Bên đen ra pháo đầu.
    \piece{5}{3}{c}
    

    tuong2

  3. bên trắng sẽ triển khai 1 thường cũng pháo đầu.
    \piece{5}{8}{C}
    

    tuong3

  4. bên đen lên Mã (phải).
    \piece{7}{3}{n}
    

    tuong4

  5. Bên trắng sẽ triển khai 2 thường cũng lên Mã.
    \piece{7}{8}{N}
    

    tuong4

  6. Bên đen ra Xe phải
    \piece{8}{1}{r}
    

    tuong5

  7. Bên trắng  sẽ lên tốt giữa.
    \piece{3}{7}{P}
    

    tuong6

  8. Tranh thủ cơ hội đó, bên đen lên Xe.
    \piece{8}{9}{r}
    

    tuong7

Trên đây chỉ là ví dụ về việc đặt quân cờ lên bàn cờ, không liên quan gì đến việc đánh cờ tướng.

Cuối cùng là một bàn cờ thế, mời bạn giải:

% Bàn cờ
% quân đen
\piece{5}{4}{r}
\piece{5}{1}{k} 

% quân trắng
\piece{3}{10}{B}
\piece{5}{8}{B}
\piece{3}{6}{N}
\piece{5}{10}{K}
% Hết bàn cờ

cothe1

8 responses to “Cách vẽ một bàn cờ thế bằng LaTeX

  1. Gói lệnh cchess thật ưu việt, cám ơn Thầy rất nhiều.

  2. Thầy đánh cờ tướng giỏi không Thầy?

  3. Các quân cờ chưa che khuất các đường kẻ bên dưới, em đang nghĩ cách khắc phục Thầy ơi.

    • tạm thời em làm mờ ô ca rô

      \documentclass{article}
      \usepackage[width=18cm,paperheight=23cm,top=1.5cm,bottom=0cm]{geometry} 
      \usepackage{xcolor} 
      
      \newfont{\EchecsChinois}{cchess46}
      \newcounter{piecex}
      \newcounter{piecey}
      
      \newcommand{\piece}[3]{% macro pour afficher une piece
      \setcounter{piecex}{#1}\addtocounter{piecex}{-1}%
      \setcounter{piecey}{#2}\addtocounter{piecey}{-1}%
      \put(\value{piecex},\value{piecey}){\special{" grestore WhiteMask gsave}}%
      \put(\value{piecex},\value{piecey})%
      {\setbox0=\hbox{\color{black}\EchecsChinois 
      #3}\kern-0.5\wd0\box0}%
      }
      
      
       
      
      
      
      \begin{document}
      \thispagestyle{empty}
      \begin{center}
      \setlength{\unitlength}{2.2cm}%
      \begin{picture}(8.1,9.1)%
      \put(0,0){\framebox(8,9){}}%
      \put(-0.05,-0.05){\color{black!50}\framebox(8.1,9.1){}}%
      
      %
      \newsavebox{\Something}%
      \savebox{\Something}(8,1)[bl]{\color{black!50}\multiput(0,0)(1,0){8}{\framebox(1,1){}}}%
      
      % vẽ ngang và dọc bàn cờ 
      \multiput(0,0)(0,1){4}{\usebox{\Something}}% tất cả đường ngang và dọc   bên đen 
      \multiput(0,5)(0,1){4}{\usebox{\Something}}% tất cả đường ngang và dọc   bên trắng 
      %
      \newsavebox{\SW}\newsavebox{\SE}\newsavebox{\NE}\newsavebox{\NW}%
      \savebox{\SW}(1,1)[bl]{%
      \color{black!50}\put(0.1,0.1){\line(1,0){0.2}}\put(0.1,0.1){\line(0,1){0.2}}}%
      \savebox{\SE}(1,1)[bl]{%
      \color{black!50}\put(0.9,0.1){\line(-1,0){0.2}}\put(0.9,0.1){\line(0,1){0.2}}}%
      \savebox{\NE}(1,1)[bl]{%
      \color{black!50}\put(0.9,0.9){\line(-1,0){0.2}}\put(0.9,0.9){\line(0,-1){0.2}}}%
      \savebox{\NW}(1,1)[bl]{%
      \color{black!50}\put(0.1,0.9){\line(1,0){0.2}}\put(0.1,0.9){\line(0,-1){0.2}}}%
      % On va commencer par faire les "croix" completes
      \savebox{\Something}(2,2)[bl]{%
      \color{black!50}\put(0,0){\usebox{\NE}}\put(1,0){\usebox{\NW}}\put(1,1){\usebox{\SW}}\put(0,1){\usebox{\SE}}}%
      
      % Ký hiệu đứng của con  đen 
      \put(0,1){\usebox{\Something}}% pháo đen trái 
      \put(6,1){\usebox{\Something}}% pháo đen phải 
      \put(1,2){\usebox{\Something}}% tốt đen trái 
      \put(3,2){\usebox{\Something}}% tốt đen giữa 
      \put(5,2){\usebox{\Something}}% tốt đen phải 
      
      % Ký hiệu đứng của con  trắng
      \put(0,6){\usebox{\Something}}% pháo trắng phải 
      \put(6,6){\usebox{\Something}}%  pháo trắng trái 
      \put(1,5){\usebox{\Something}}% tốt đen phải 
      \put(3,5){\usebox{\Something}}% tốt trắng giữa 
      \put(5,5){\usebox{\Something}}% tốt trắng trái 
      
      % Maintenant les demi-croix gauches tốt trắng biên phải  
      \savebox{\Something}(1,2)[bl]{%
      \put(0,0){\usebox{\NW}}\put(0,1){\usebox{\SW}}}%
      \put(0,2){\usebox{\Something}}%
      \put(0,5){\usebox{\Something}}%
      
      % ...les demi-croix droites tốt trắng biên trái  
      \savebox{\Something}(1,2)[bl]{%
      \put(0,0){\usebox{\NE}}\put(0,1){\usebox{\SE}}}%
      \put(7,2){\usebox{\Something}}%
      \put(7,5){\usebox{\Something}}%
      %
      % et pour finir, les camps des generaux:
      \savebox{\Something}(2,2)[bl]{%
      \put(0,0){\line(1,1){2}}% La "longueur" a fournir est celle de la projection horizontale
      \put(2,0){\line(-1,1){2}}}%
      \put(3,0){\usebox{\Something}}%
      \put(3,7){\usebox{\Something}}%
      
      % Bàn cờ thế 
      
      %  quân đen 
      \piece{1}{1}{r} % xe đen trái 
      \piece{9}{1}{r} %  xe đen phải 
      \piece{2}{1}{n} % ngựa đen trái 
      \piece{8}{1}{n} % ngựa đen phải 
      \piece{3}{1}{b}  % tượng đen trái 
      \piece{7}{1}{b} % tượng đen phải 
      \piece{4}{1}{g} % sĩ đen trái 
      \piece{6}{1}{g} % sĩ đen phải 
      \piece{2}{3}{c} % pháo đen trái 
      \piece{8}{3}{c} % pháo đen phải 
      \piece{1}{4}{p}  % tốt đen biên trái 
      \piece{3}{4}{p}  % tốt đen trái 
      \piece{5}{4}{p}  % tốt đen giữa 
      \piece{7}{4}{p}  % tốt đen phải 
      \piece{9}{4}{p} %  tốt đen biên phải  
      \piece{5}{1}{k} % tướng đen 
      
      % quân trắng 
      \piece{1}{10}{R}  % xe trắng phải (bên phải  của ngừoi chơi bên trắng )
      \piece{9}{10}{R}  % xe trắng trái 
      \piece{2}{10}{N}  % ngựa trắng phải 
      \piece{8}{10}{N}  % ngựa trắng trái 
      \piece{3}{10}{B}  % tượng trắng phải 
      \piece{7}{10}{B}  %  tượng trắng trái 
      \piece{4}{10}{G}  % sĩ trắng phải 
      \piece{6}{10}{G}  %  sĩ trắng trái 
      \piece{2}{8}{C}   % pháo trắng trái 
      \piece{8}{8}{C}   % pháo trắng phải 
      \piece{1}{7}{P}    % tốt trắng biên phải 
      \piece{3}{7}{P}    % tốt trắng phải 
      \piece{5}{7}{P}    % tốt trắng giữa 
      \piece{7}{7}{P}    % tốt trắng trái 
      \piece{9}{7}{P}    %  tốt trắng  biên trái 
      \piece{5}{10}{K}  % tướng trắng 
      
      
      
      % Hết bàn cờ thế 
      
      \end{picture}
      \end{center}
      \end{document}
      

      bàn cờ

  4. Cám ơn Thầy rất nhiều.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s