使用 LaTeX/TikZ 创建不带表格的井字游戏棋盘

使用 LaTeX/TikZ 创建不带表格的井字游戏棋盘

我目前正在写论文,需要包含井字游戏/井字游戏的图形。到目前为止,我使用 PowerPoint 创建图形(见图片1, 和2)。

我查找了类似的问题并发现了以下问题:

  1. Beamer:井字游戏
  2. 如何在 Latex 中表示井字游戏桌?

但是他们要么使用表格来表示游戏,要么使用宏来将 X 或 O 字符放置在板上。因为我还需要虚线符号(见图片5) 来表示最佳移动,我无法使用他们的方法。因此,棋盘的各个位置要么是空白的,要么包含其索引或符号。此外,我想在图表下方放置一行文本,或者在其右侧放置多行文本。

有人可以指出我可以用来创建下图的其他问题或资源吗?

井字游戏,索引从零开始,下方有文字 井字游戏,索引从零开始,下方有文字

井字游戏,右侧有空位和文字 井字游戏,右侧有空位和文字

井字游戏的最佳动作以虚线符号突出显示

井字游戏的最佳动作以虚线符号突出显示

答案1

编辑

我认为抛出一个矩阵将您想要的内容放入单元格并获得结果,因此这是一个改进的版本:

\documentclass{article}
\usepackage{tikz}

\newcounter{num}
\newcommand{\tictactoe}[1]
    {
    \begin{tikzpicture}[line width=2pt]
        \def\r{3mm}
            \tikzset{
                    circ/.pic={\draw circle (\r);},
                    cross/.pic={\draw (-\r,-\r) -- (\r,\r) (-\r,\r) -- (\r,-\r);},
                    opt/.pic={\draw[opacity=0.2] (-\r,-\r) -- (\r,\r) (-\r,\r) -- (\r,-\r);}
                    }
            
            % The grid
            \foreach \i in {1,2} \draw (\i,0) -- (\i,3) (0,\i) -- (3,\i);
            
            % Numbering the cells
            \setcounter{num}{0}
            \foreach \y in {0,...,2}
                \foreach \x in {0,...,2}
                    {
                    \coordinate (\thenum) at (\x+0.5,2-\y+0.5);
                    %\node[opacity=0.5] at (\thenum) {\sffamily\thenum}; % Uncomment to see numbers in the cells
                    \addtocounter{num}{1}
                    }
                    
                    
        \def\X{X} \def\x{x} \def\O{O} \def\n{n}
        
        \foreach \l [count = \i from 0] in {#1}
            {
            \if\l\X \path (\i) pic{cross};
            \else
                \if\l\O \path (\i) pic{circ};
                \else
                    \if\l\x \path (\i) pic{opt};
                    \else
                        \if\l\n \node[opacity=0.5] at (\i) {\sffamily\i};
                        \fi
                    \fi
                \fi
            \fi
            }
    \end{tikzpicture}
    }
    

\begin{document}
    
    \tictactoe{O,x,n,
               x,X,x,
               n,x,O}
    
    \vspace*{1cm}
           
    \tictactoe{ ,O,X,
               O,X, ,
               X, ,O}           
                    
\end{document}

井字游戏

另一个

相关内容