From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/othello/boards.tex | 570 ++++++++++++++++++++++++ macros/latex/contrib/othello/ot.bat | 1 + macros/latex/contrib/othello/ot.mf | 1 + macros/latex/contrib/othello/ot1.bat.bat | 1 + macros/latex/contrib/othello/ot10.mf | 1 + macros/latex/contrib/othello/ot15.mf | 1 + macros/latex/contrib/othello/ot1bla10.mf | 1 + macros/latex/contrib/othello/ot1bla15.mf | 1 + macros/latex/contrib/othello/ot1bla20.mf | 1 + macros/latex/contrib/othello/ot1black.mf | 735 +++++++++++++++++++++++++++++++ macros/latex/contrib/othello/ot1neu.mf | 702 +++++++++++++++++++++++++++++ macros/latex/contrib/othello/ot1neu10.mf | 1 + macros/latex/contrib/othello/ot1neu15.mf | 1 + macros/latex/contrib/othello/ot1neu20.mf | 1 + macros/latex/contrib/othello/ot1whi10.mf | 1 + macros/latex/contrib/othello/ot1whi15.mf | 1 + macros/latex/contrib/othello/ot1whi20.mf | 1 + macros/latex/contrib/othello/ot1white.mf | 735 +++++++++++++++++++++++++++++++ macros/latex/contrib/othello/othello.sty | 211 +++++++++ macros/latex/contrib/othello/othello.tex | 635 ++++++++++++++++++++++++++ 20 files changed, 3602 insertions(+) create mode 100644 macros/latex/contrib/othello/boards.tex create mode 100644 macros/latex/contrib/othello/ot.bat create mode 100644 macros/latex/contrib/othello/ot.mf create mode 100644 macros/latex/contrib/othello/ot1.bat.bat create mode 100644 macros/latex/contrib/othello/ot10.mf create mode 100644 macros/latex/contrib/othello/ot15.mf create mode 100644 macros/latex/contrib/othello/ot1bla10.mf create mode 100644 macros/latex/contrib/othello/ot1bla15.mf create mode 100644 macros/latex/contrib/othello/ot1bla20.mf create mode 100644 macros/latex/contrib/othello/ot1black.mf create mode 100644 macros/latex/contrib/othello/ot1neu.mf create mode 100644 macros/latex/contrib/othello/ot1neu10.mf create mode 100644 macros/latex/contrib/othello/ot1neu15.mf create mode 100644 macros/latex/contrib/othello/ot1neu20.mf create mode 100644 macros/latex/contrib/othello/ot1whi10.mf create mode 100644 macros/latex/contrib/othello/ot1whi15.mf create mode 100644 macros/latex/contrib/othello/ot1whi20.mf create mode 100644 macros/latex/contrib/othello/ot1white.mf create mode 100644 macros/latex/contrib/othello/othello.sty create mode 100644 macros/latex/contrib/othello/othello.tex (limited to 'macros/latex/contrib/othello') diff --git a/macros/latex/contrib/othello/boards.tex b/macros/latex/contrib/othello/boards.tex new file mode 100644 index 0000000000..4103226d49 --- /dev/null +++ b/macros/latex/contrib/othello/boards.tex @@ -0,0 +1,570 @@ +\def\startposition{ +\inifulldiagram +\gofontsize{10} +\pos{d}{5}=\black{.} +\pos{d}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{4}=\black{.} +\centerline{\showfulldiagram}\caption{Othello start position} +} + +\def\cornerpositions{ +\inifulldiagram +\gofontsize{10} +\pos{b}{2}=\neutral{65} +\pos{b}{7}=\neutral{65} +\pos{g}{2}=\neutral{65} +\pos{g}{7}=\neutral{65} +\pos{a}{2}=\neutral{66} +\pos{a}{7}=\neutral{66} +\pos{b}{1}=\neutral{66} +\pos{b}{8}=\neutral{66} +\pos{g}{8}=\neutral{66} +\pos{g}{1}=\neutral{66} +\pos{h}{7}=\neutral{66} +\pos{h}{2}=\neutral{66} +\centerline{\showfulldiagram}\caption{Special positions around the corners} \label{cornerpositions} +} + +\def\makingamove{ +\inifulldiagram +\gofontsize{10} +\pos{d}{5}=\black{.} +\pos{d}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{4}=\black{.} +\pos{c}{4}=\neutral{65} +\pos{d}{3}=\neutral{65} +\pos{e}{6}=\neutral{65} +\pos{f}{5}=\neutral{65} +\centerline{\showfulldiagram}\caption{Black can place his first stone at these +places}\label{makingamove} +} + +\def\validmoves{ +\inifulldiagram +\gofontsize{10} +\pos{d}{5}=\black{.} +\pos{d}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{4}=\black{.} +\pos{d}{3}=\black{.} +\pos{c}{3}=\white{.} +\centerline{\showfulldiagram}\label{validmoves}\caption{Opening +c4,c3} +} + +\def\fliponlyonce{ +\inifulldiagram \gofontsize{10} \pos{c}{3}=\white{.} +\pos{d}{3}=\white{.} \pos{e}{3}=\white{.} \pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} \pos{f}{5}=\white{.} \pos{f}{6}=\white{.} +\pos{e}{6}=\white{.} \pos{d}{6}=\white{.} \pos{c}{6}=\white{.} +\pos{d}{4}=\black{.} \pos{e}{4}=\black{.} \pos{d}{5}=\black{.} +\pos{e}{5}=\black{.} +\centerline{\showfulldiagram}\caption{Stones do not flip recursively}\label{fliponlyonce} } + +\def\stablestones{ +\inifulldiagram \gofontsize{10} \pos{a}{1}=\black{.} +\pos{b}{1}=\black{.} \pos{a}{2}=\black{.} \pos{a}{3}=\black{.} +\pos{b}{2}=\black{.} \pos{a}{4}=\black{.} \pos{h}{1}=\white{.} +\pos{h}{2}=\white{.} \pos{g}{1}=\white{.} \pos{g}{2}=\white{.} +\pos{g}{3}=\white{.} \pos{h}{3}=\white{.} \pos{f}{1}=\white{.} +\centerline{\showfulldiagram}\caption{Example of stable +stones}\label{stablestones} } + +\def\maximumdisk{ +\inifulldiagram +\gofontsize{10} +\pos{a}{3}=\white{.} +\pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} +\pos{a}{6}=\white{.} +\pos{b}{3}=\white{.} +\pos{b}{4}=\white{.} +\pos{b}{5}=\white{.} +\pos{b}{6}=\white{.} +\pos{c}{1}=\white{.} +\pos{c}{2}=\white{.} +\pos{c}{3}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{c}{6}=\white{.} +\pos{c}{7}=\white{.} +\pos{c}{8}=\white{.} +\pos{d}{1}=\white{.} +\pos{d}{2}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{4}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\white{.} +\pos{d}{7}=\white{.} +\pos{d}{8}=\white{.} +\pos{e}{1}=\white{.} +\pos{e}{2}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} +\pos{e}{8}=\white{.} +\pos{f}{1}=\white{.} +\pos{f}{2}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\pos{f}{6}=\white{.} +\pos{f}{7}=\white{.} +\pos{f}{8}=\white{.} +\pos{g}{3}=\white{.} +\pos{g}{4}=\white{.} +\pos{g}{5}=\white{.} +\pos{g}{6}=\white{.} +\pos{h}{3}=\white{.} +\pos{h}{4}=\white{.} +\pos{h}{5}=\white{.} +\pos{h}{6}=\white{.} +\centerline{\showfulldiagram}\caption{Maximum disk strategy: black to play and win (46-18)}\label{maximumdisk} +} + +\def\stabledisks{ +\inifulldiagram \gofontsize{10} \pos{a}{1}=\white{.} +\pos{a}{2}=\white{.} \pos{a}{3}=\white{.} \pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} \pos{a}{6}=\white{.} \pos{b}{1}=\white{.} +\pos{b}{2}=\white{.} \pos{b}{3}=\white{.} \pos{b}{4}=\white{.} +\pos{b}{5}=\white{.} \pos{b}{6}=\white{.} \pos{c}{1}=\white{.} +\pos{c}{2}=\white{.} \pos{c}{3}=\white{.} \pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} \pos{c}{6}=\white{.} \pos{c}{7}=\white{.} +\pos{c}{8}=\white{.} \pos{d}{1}=\white{.} \pos{d}{2}=\white{.} +\pos{d}{3}=\white{.} \pos{d}{4}=\black{.} \pos{d}{5}=\black{.} +\pos{d}{6}=\white{.} \pos{d}{7}=\white{.} \pos{d}{8}=\white{.} +\pos{e}{1}=\white{.} \pos{e}{2}=\white{.} \pos{e}{3}=\white{.} +\pos{e}{4}=\white{.} \pos{e}{5}=\white{.} \pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} \pos{e}{8}=\white{.} \pos{f}{1}=\white{.} +\pos{f}{2}=\white{.} \pos{f}{3}=\white{.} \pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} \pos{f}{6}=\white{.} \pos{f}{7}=\white{.} +\pos{f}{8}=\white{.} \pos{g}{3}=\white{.} \pos{g}{4}=\white{.} +\pos{g}{5}=\white{.} \pos{g}{6}=\white{.} \pos{h}{3}=\white{.} +\pos{h}{4}=\white{.} \pos{h}{5}=\white{.} \pos{h}{6}=\white{.} +\centerline{\showfulldiagram}\caption{Examples of stable disks in an end game}\label{stabledisks} } + + + +\def\quietmove{\inifulldiagram +\gofontsize{10} +\pos{b}{5}=\black{.} +\pos{c}{2}=\black{.} +\pos{d}{2}=\black{.} +\pos{e}{2}=\black{.} +\pos{f}{2}=\black{.} +\pos{f}{3}=\black{.} +\pos{g}{3}=\black{.} +\pos{g}{4}=\black{.} +\pos{b}{3}=\white{.} +\pos{b}{4}=\white{.} +\pos{c}{3}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{4}=\white{.} +\pos{d}{5}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{5}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\pos{g}{5}=\white{.} +\centerline{\showfulldiagram}\caption{Example of a quiet move}\label{quietmove}} + +\def\frontiermovetwo{\inifulldiagram +\gofontsize{10} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{c}{2}=\black{.} +\pos{c}{3}=\black{.} +\pos{d}{2}=\black{.} +\pos{d}{3}=\black{.} +\pos{e}{2}=\black{.} +\pos{e}{3}=\black{.} +\pos{f}{3}=\black{.} +\pos{f}{4}=\black{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{d}{4}=\white{.} +\pos{d}{5}=\white{.} +\pos{e}{4}=\white{.} +\pos{e}{5}=\white{.} +\centerline{\showfulldiagram}\caption{}\label{frontiermovetwo}} + +\def\frontierstones{\inifulldiagram +\gofontsize{10} +\pos{b}{3}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{4}=\black{.} +\pos{d}{3}=\black{.} +\pos{d}{4}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{d}{7}=\black{.} +\pos{e}{3}=\black{.} +\pos{e}{4}=\black{.} +\pos{e}{5}=\black{.} +\pos{f}{3}=\black{.} +\pos{f}{4}=\black{.} +\pos{f}{5}=\black{.} +\pos{b}{4}=\white{.} +\pos{b}{5}=\white{.} +\pos{c}{5}=\white{.} +\pos{c}{6}=\white{.} +\pos{c}{7}=\white{.} +\pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} +\pos{f}{6}=\white{.} +\centerline{\showfulldiagram}\caption{Frontiers in the beginning of the game}\label{frontierstones}} + +\def\mobilityexampletwo{\inifulldiagram +\gofontsize{10} +\pos{a}{4}=\black{.} +\pos{b}{3}=\black{.} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{6}=\black{.} +\pos{d}{3}=\black{.} +\pos{d}{4}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{3}=\black{.} +\pos{e}{4}=\black{.} +\pos{e}{5}=\black{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\centerline{\showfulldiagram}\caption{White to play and win a corner}\label{mobilityexampletwo}} + +\def\mobiuitween{\inifulldiagram +\gofontsize{10} +\pos{a}{4}=\white{.} +\pos{b}{3}=\black{.} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{6}=\black{.} +\pos{d}{3}=\black{.} +\pos{d}{4}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{3}=\black{.} +\pos{e}{4}=\black{.} +\pos{e}{5}=\black{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{b}{7}=\black{.} +\pos{a}{2}=\white{.} +\pos{a}{3}=\white{.} +\pos{a}{7}=\white{.} +\pos{a}{5}=\white{.} +\pos{a}{6}=\white{.} +\centerline{\showfulldiagram}\caption{}\label{mobiuitween}} + +\def\frontiermoveone{\inifulldiagram +\gofontsize{10} +\pos{a}{2}=\black{.} +\pos{b}{3}=\black{.} +\pos{c}{1}=\black{.} +\pos{c}{2}=\black{.} +\pos{d}{1}=\black{.} +\pos{d}{2}=\black{.} +\pos{e}{1}=\black{.} +\pos{e}{2}=\black{.} +\pos{f}{1}=\black{.} +\pos{f}{2}=\black{.} +\pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} +\pos{a}{6}=\white{.} +\pos{a}{7}=\white{.} +\pos{b}{4}=\white{.} +\pos{b}{5}=\white{.} +\pos{b}{6}=\white{.} +\pos{b}{8}=\white{.} +\pos{c}{3}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{c}{6}=\white{.} +\pos{c}{7}=\white{.} +\pos{c}{8}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{4}=\white{.} +\pos{d}{5}=\white{.} +\pos{d}{6}=\white{.} +\pos{d}{7}=\white{.} +\pos{d}{8}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\pos{f}{6}=\white{.} +\pos{f}{7}=\white{.} +\centerline{\showfulldiagram}\caption{Frontier moves: h6 is devastating for black}\label{frontiermoveone} +} + +\def\wedge{ +\inifulldiagram +\gofontsize{10} +\pos{a}{2}=\black{.} +\pos{a}{3}=\black{.} +\pos{a}{4}=\black{.} +\pos{a}{5}=\black{.} +\pos{a}{6}=\black{.} +\pos{b}{1}=\black{.} +\pos{b}{3}=\black{.} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{c}{1}=\black{.} +\pos{c}{2}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{6}=\black{.} +\pos{d}{2}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{1}=\black{.} +\pos{e}{2}=\black{.} +\pos{e}{4}=\black{.} +\pos{f}{1}=\black{.} +\pos{g}{1}=\black{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{4}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{6}=\white{.} +\pos{f}{2}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\centerline{\showfulldiagram}\caption{White plays a4, wedging the first column}\label{wedge}} + +\def\wedgetwo{\inifulldiagram +\gofontsize{10} +\pos{a}{3}=\black{.} +\pos{a}{4}=\black{.} +\pos{a}{5}=\black{.} +\pos{a}{6}=\black{.} +\pos{a}{7}=\black{.} +\pos{b}{1}=\black{.} +\pos{b}{3}=\black{.} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{c}{1}=\black{.} +\pos{c}{2}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{6}=\black{.} +\pos{d}{1}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{1}=\black{.} +\pos{e}{4}=\black{.} +\pos{f}{1}=\black{.} +\pos{f}{2}=\black{.} +\pos{g}{1}=\black{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{d}{2}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{4}=\white{.} +\pos{e}{2}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{6}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\centerline{\showfulldiagram}\caption{Wedging by sacrificing a corner}\label{wedgetwo} +} + +\def\tempo{ +\inifulldiagram +\gofontsize{10} +\pos{b}{3}=\black{.} +\pos{b}{4}=\black{.} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{c}{2}=\black{.} +\pos{c}{3}=\black{.} +\pos{c}{6}=\black{.} +\pos{d}{2}=\black{.} +\pos{d}{4}=\black{.} +\pos{d}{5}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{2}=\black{.} +\pos{e}{4}=\black{.} +\pos{e}{5}=\black{.} +\pos{e}{6}=\black{.} +\pos{f}{2}=\black{.} +\pos{f}{6}=\black{.} +\pos{a}{3}=\white{.} +\pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{d}{3}=\white{.} +\pos{e}{3}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\centerline{\showfulldiagram}\caption{White to move: gaining tempo}\label{tempo} +} + +\def\parity{ +\inifulldiagram +\gofontsize{10} +\pos{b}{5}=\black{.} +\pos{b}{6}=\black{.} +\pos{d}{4}=\black{.} +\pos{d}{6}=\black{.} +\pos{e}{3}=\black{.} +\pos{e}{5}=\black{.} +\pos{f}{2}=\black{.} +\pos{f}{4}=\black{.} +\pos{g}{1}=\black{.} +\pos{g}{6}=\black{.} +\pos{a}{3}=\white{.} +\pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} +\pos{a}{6}=\white{.} +\pos{a}{7}=\white{.} +\pos{b}{1}=\white{.} +\pos{b}{3}=\white{.} +\pos{b}{4}=\white{.} +\pos{c}{1}=\white{.} +\pos{c}{2}=\white{.} +\pos{c}{3}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{5}=\white{.} +\pos{c}{6}=\white{.} +\pos{c}{7}=\white{.} +\pos{c}{8}=\white{.} +\pos{d}{1}=\white{.} +\pos{d}{2}=\white{.} +\pos{d}{3}=\white{.} +\pos{d}{5}=\white{.} +\pos{d}{7}=\white{.} +\pos{d}{8}=\white{.} +\pos{e}{1}=\white{.} +\pos{e}{2}=\white{.} +\pos{e}{4}=\white{.} +\pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} +\pos{e}{8}=\white{.} +\pos{f}{1}=\white{.} +\pos{f}{3}=\white{.} +\pos{f}{5}=\white{.} +\pos{f}{6}=\white{.} +\pos{f}{7}=\white{.} +\pos{f}{8}=\white{.} +\pos{g}{2}=\white{.} +\pos{g}{3}=\white{.} +\pos{g}{4}=\white{.} +\pos{g}{5}=\white{.} +\pos{g}{8}=\white{.} +\pos{h}{1}=\white{.} +\pos{h}{2}=\white{.} +\pos{h}{3}=\white{.} +\pos{h}{4}=\white{.} +\pos{h}{5}=\white{.} +\pos{h}{6}=\white{.} +\pos{h}{7}=\white{.} +\centerline{\showfulldiagram}\caption{Black to play and win}\label{parity}} + +\def\paritytwo{ +\inifulldiagram +\gofontsize{10} +\pos{c}{5}=\black{.} +\pos{c}{7}=\black{.} +\pos{d}{1}=\black{.} +\pos{d}{2}=\black{.} +\pos{d}{3}=\black{.} +\pos{d}{4}=\black{.} +\pos{e}{1}=\black{.} +\pos{e}{2}=\black{.} +\pos{f}{2}=\black{.} +\pos{f}{3}=\black{.} +\pos{f}{6}=\black{.} +\pos{f}{8}=\black{.} +\pos{g}{3}=\black{.} +\pos{g}{4}=\black{.} +\pos{g}{5}=\black{.} +\pos{g}{8}=\black{.} +\pos{h}{3}=\black{.} +\pos{h}{4}=\black{.} +\pos{h}{5}=\black{.} +\pos{h}{6}=\black{.} +\pos{h}{7}=\black{.} +\pos{h}{8}=\black{.} +\pos{a}{2}=\white{.} +\pos{a}{3}=\white{.} +\pos{a}{4}=\white{.} +\pos{a}{5}=\white{.} +\pos{a}{6}=\white{.} +\pos{a}{7}=\white{.} +\pos{a}{8}=\white{.} +\pos{b}{3}=\white{.} +\pos{b}{4}=\white{.} +\pos{b}{5}=\white{.} +\pos{b}{6}=\white{.} +\pos{b}{7}=\white{.} +\pos{b}{8}=\white{.} +\pos{c}{1}=\white{.} +\pos{c}{2}=\white{.} +\pos{c}{3}=\white{.} +\pos{c}{4}=\white{.} +\pos{c}{6}=\white{.} +\pos{c}{8}=\white{.} +\pos{d}{5}=\white{.} +\pos{d}{6}=\white{.} +\pos{d}{7}=\white{.} +\pos{d}{8}=\white{.} +\pos{e}{3}=\white{.} +\pos{e}{4}=\white{.} +\pos{e}{5}=\white{.} +\pos{e}{6}=\white{.} +\pos{e}{7}=\white{.} +\pos{e}{8}=\white{.} +\pos{f}{1}=\white{.} +\pos{f}{4}=\white{.} +\pos{f}{5}=\white{.} +\pos{f}{7}=\white{.} +\pos{g}{6}=\white{.} +\centerline{\showfulldiagram}\caption{Black to play and draw}\label{paritytwo}} + +\def\overviewboard{ +\inifulldiagram +\gofontsize{10} +\pos{d}{5}=\black{.} +\pos{d}{4}=\white{.} +\pos{e}{5}=\white{23} +\pos{e}{4}=\black{62} +\pos{d}{3}=\neutral{43} +\pos{b}{2}=\neutral{65} +\pos{b}{1}=\neutral{66} +\centerline{\showfulldiagram}\caption{All possible characters using the Othello package} +} + +\def\overviewboardcorner{ +\inifulldiagram +\gofontsize{10} +\pos{d}{5}=\black{.} +\pos{d}{4}=\white{.} +\pos{e}{5}=\white{23} +\pos{e}{4}=\black{62} +\pos{d}{3}=\neutral{43} +\pos{b}{2}=\neutral{65} +\pos{b}{1}=\neutral{66} +\centerline{\showdiagram a-d:1-4 }\caption{The northwest corner of the overview board} +} diff --git a/macros/latex/contrib/othello/ot.bat b/macros/latex/contrib/othello/ot.bat new file mode 100644 index 0000000000..05901d34ee --- /dev/null +++ b/macros/latex/contrib/othello/ot.bat @@ -0,0 +1 @@ +mf286 &plain \mode=hplaser; input ot1bla15 gftopk ot1bla15.300 mf286 &plain \mode=hplaser; input ot2bla15 gftopk ot2bla15.300 mf286 &plain \mode=hplaser; input ot1whi15 gftopk ot1whi15.300 mf286 &plain \mode=hplaser; input ot2whi15 gftopk ot2whi15.300 mf286 &plain \mode=hplaser; input ot15 gftopk ot15.300 \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot.mf b/macros/latex/contrib/othello/ot.mf new file mode 100644 index 0000000000..c4947c124e --- /dev/null +++ b/macros/latex/contrib/othello/ot.mf @@ -0,0 +1 @@ +mode_setup; define_pixels(size); define_pixels(line_thickness,border_line_thickness); picture black_circle; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def set_black_circle = currentpicture := nullpicture; pickup pencircle scaled line_thickness; lft x1=1/22size; y1=1/2size; rt x2=23/22size; y2=1/2size; filldraw z1..z2..cycle; black_circle := currentpicture; clearxy; clearit; clearpen; enddef; set_black_circle; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beginchar(0,24/22size#,23/22size#,1/22size#); "punkt hoshi"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; z5=(.5w-.1size,11/24w); z6=(.5w+.1size,11/24w); filldraw z5..z6..cycle; showit; endchar; % stop""; beginchar(1,24/22size#,23/22size#,1/22size#); "pelny krzyz"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; showit; endchar; % stop""; beginchar(2,24/22size#,23/22size#,1/22size#); "lewy brzeg"; pickup pencircle scaled line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(3,24/22size#,23/22size#,1/22size#); "prawy brzeg"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(4,24/22size#,23/22size#,1/22size#); "gorny brzeg"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(5,24/22size#,23/22size#,1/22size#); "dolny brzeg"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; showit; endchar; % stop""; beginchar(6,24/22size#,23/22size#,1/22size#); "lewy gorny rog"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(7,24/22size#,23/22size#,1/22size#); "prawy gorny rog"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(8,24/22size#,23/22size#,1/22size#); "lewy dolny rog"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(9,24/22size#,23/22size#,1/22size#); "prawy dolny rog"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; showit; endchar; % stop""; beginchar(10,24/22size#,23/22size#,1/22size#); "pelny krzyz - pion"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(11,24/22size#,23/22size#,1/22size#); "lewy brzeg - pion"; pickup pencircle scaled line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(12,24/22size#,23/22size#,1/22size#); "prawy brzeg - pion"; pickup pencircle scaled line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; pickup pencircle scaled border_line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(13,24/22size#,23/22size#,1/22size#); "gorny brzeg - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(14,24/22size#,23/22size#,1/22size#); "dolny brzeg - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; pickup pencircle scaled line_thickness; draw z2..z4; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(15,24/22size#,23/22size#,1/22size#); "lewy gorny rog - pion"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; x2=.5w; top y2=11/24w; z3=(w,11/24w); z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(16,24/22size#,23/22size#,1/22size#); "prawy gorny rog - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); x2=.5w; top y2=11/24w; rt x3=.5w; y3=11/24w; z4=(.5w,-d); draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(17,24/22size#,23/22size#,1/22size#); "lewy dolny rog - pion"; pickup pencircle scaled border_line_thickness; lft x1=.5w; y1=11/24w; z2=(.5w,h); z3=(w,11/24w); x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; beginchar(18,24/22size#,23/22size#,1/22size#); "prawy dolny rog - pion"; pickup pencircle scaled border_line_thickness; z1=(0,11/24w); z2=(.5w,h); rt x3=.5w; y3=11/24w; x4=.5w; bot y4=11/24w; draw z1..z3; draw z2..z4; pickup penrazor scaled border_line_thickness; z5=(.5w,11/24w+.5border_line_thickness); z6=(.5w,11/24w-.5border_line_thickness); draw z5..z6; cullit; addto currentpicture also -black_circle; showit; endchar; % stop""; end; \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1.bat.bat b/macros/latex/contrib/othello/ot1.bat.bat new file mode 100644 index 0000000000..05901d34ee --- /dev/null +++ b/macros/latex/contrib/othello/ot1.bat.bat @@ -0,0 +1 @@ +mf286 &plain \mode=hplaser; input ot1bla15 gftopk ot1bla15.300 mf286 &plain \mode=hplaser; input ot2bla15 gftopk ot2bla15.300 mf286 &plain \mode=hplaser; input ot1whi15 gftopk ot1whi15.300 mf286 &plain \mode=hplaser; input ot2whi15 gftopk ot2whi15.300 mf286 &plain \mode=hplaser; input ot15 gftopk ot15.300 \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot10.mf b/macros/latex/contrib/othello/ot10.mf new file mode 100644 index 0000000000..68b420cc46 --- /dev/null +++ b/macros/latex/contrib/othello/ot10.mf @@ -0,0 +1 @@ +font_identifier:="OT"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=7/10size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot15.mf b/macros/latex/contrib/othello/ot15.mf new file mode 100644 index 0000000000..30fdb409f9 --- /dev/null +++ b/macros/latex/contrib/othello/ot15.mf @@ -0,0 +1 @@ +font_identifier:="OT"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=7/10size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1bla10.mf b/macros/latex/contrib/othello/ot1bla10.mf new file mode 100644 index 0000000000..98817cd917 --- /dev/null +++ b/macros/latex/contrib/othello/ot1bla10.mf @@ -0,0 +1 @@ +font_identifier:="OT1BLACK"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1bla15.mf b/macros/latex/contrib/othello/ot1bla15.mf new file mode 100644 index 0000000000..e05a02e3a5 --- /dev/null +++ b/macros/latex/contrib/othello/ot1bla15.mf @@ -0,0 +1 @@ +font_identifier:="OT1BLACK"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1bla20.mf b/macros/latex/contrib/othello/ot1bla20.mf new file mode 100644 index 0000000000..f2156ced2b --- /dev/null +++ b/macros/latex/contrib/othello/ot1bla20.mf @@ -0,0 +1 @@ +font_identifier:="OT1BLACK"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1black \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1black.mf b/macros/latex/contrib/othello/ot1black.mf new file mode 100644 index 0000000000..a6c44c89bf --- /dev/null +++ b/macros/latex/contrib/othello/ot1black.mf @@ -0,0 +1,735 @@ +\mode_setup; + +define_pixels(size); +define_pixels(line_thickness,border_line_thickness); +define_pixels(dig_h,dig_w,dig_pen); + +picture digit[]; +picture black_circle; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +def digit_zero = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.5dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=dig_w; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + draw z1...z2...z3...z4...cycle; + digit[0] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_one = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.5dig_w; bot y1=0; + x2=.5dig_w; top y2=dig_h; + draw z1--z2; + digit[1] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_two = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.8dig_w; y3=.9dig_h; + lft x4=0; bot y4=0; + draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4; + z5=z4; + rt x6=dig_w; bot y6=0; + draw z5--z6; + digit[2] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_three = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.8dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.52dig_h); + rt x5=dig_w; y5=.2dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7; + digit[3] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_four = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.75dig_w; bot y1=0; + x2=x1; top y2=dig_h; + lft x3=0; y3=.3dig_h; + rt x4=dig_w; y4=y3; + draw z1--z2--z3--z4; + digit[4] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_five = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=.95dig_w; top y1=dig_h; + lft x2=.05dig_w; y2=y1; + lft x3=0; y3=.45dig_h; + z4=(.5dig_w,.6dig_h); + rt x5=dig_w; y5=.3dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=.15dig_h; + draw z1--z2--z3{up}..z4..z5..z6...{up}z7; + digit[5] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_six = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=dig_w; y1=.8dig_h; + x2=.45dig_w; top y2=dig_h; + lft x3=0; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + rt x5=dig_w; y5=.3dig_h; + z6=(.53dig_w,.55dig_h); + z7=(.03dig_w+.6dig_pen,.25dig_h); + draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7; + digit[6] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_seven = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; top y1=dig_h; + rt x2=dig_w; y2=y1; + lft x3=.2dig_w; bot y3=0; + draw z1--z2--z3; + digit[7] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_eight = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.55dig_h); + rt x5=dig_w; y5=.25dig_h; + x6=.5dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1...z2...z3...z4...cycle; + draw z4...z5...z6...z7...cycle; + digit[8] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_nine = + currentpicture := nullpicture; + currentpicture := digit[6] rotated 180; + digit[9] := currentpicture shifted (dig_w,dig_h); + clearxy; clearit; clearpen; +enddef; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight; digit_nine; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(0,24/22size#,23/22size#,1/22size#); "pion czarny"; + pickup pencircle scaled line_thickness; + lft x1=13/24w; y1=-1/24w; + rt x2=35/24w; y2=-1/24w; + filldraw z1..z2..cycle; + black_circle := currentpicture; +showit; +endchar; + +% stop""; + +beginchar(1,24/22size#,23/22size#,1/22size#); "pion czarny z 1"; + currentpicture :=black_circle + - digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(2,24/22size#,23/22size#,1/22size#); "pion czarny z 2"; + currentpicture := black_circle + - digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(3,24/22size#,23/22size#,1/22size#); "pion czarny z 3"; + currentpicture := black_circle + - digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(4,24/22size#,23/22size#,1/22size#); "pion czarny z 4"; + currentpicture := black_circle + - digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(5,24/22size#,23/22size#,1/22size#); "pion czarny z 5"; + currentpicture := black_circle + - digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(6,24/22size#,23/22size#,1/22size#); "pion czarny z 6"; + currentpicture := black_circle + - digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(7,24/22size#,23/22size#,1/22size#); "pion czarny z 7"; + currentpicture := black_circle + - digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(8,24/22size#,23/22size#,1/22size#); "pion czarny z 8"; + currentpicture := black_circle + - digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(9,24/22size#,23/22size#,1/22size#); "pion czarny z 9"; + currentpicture := black_circle + - digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +dig_w := .7dig_w; +%%%dig_pen := .7dig_pen; + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight; digit_nine; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(10,24/22size#,23/22size#,1/22size#); "pion czarny z 10"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(11,24/22size#,23/22size#,1/22size#); "pion czarny z 11"; + currentpicture := black_circle + - digit[1] shifted (1w-dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(12,24/22size#,23/22size#,1/22size#); "pion czarny z 12"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(14,24/22size#,23/22size#,1/22size#); "pion czarny z 14"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[5] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(16,24/22size#,23/22size#,1/22size#); "pion czarny z 16"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[6] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17"; + currentpicture := black_circle + - digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(18,24/22size#,23/22size#,1/22size#); "pion czarny z 18"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[8] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19"; + currentpicture := black_circle + - digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + - digit[9] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(20,24/22size#,23/22size#,1/22size#); "pion czarny z 20"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21"; + currentpicture := black_circle + - digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(22,24/22size#,23/22size#,1/22size#); "pion czarny z 22"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(24,24/22size#,23/22size#,1/22size#); "pion czarny z 24"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(26,24/22size#,23/22size#,1/22size#); "pion czarny z 26"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(28,24/22size#,23/22size#,1/22size#); "pion czarny z 28"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(30,24/22size#,23/22size#,1/22size#); "pion czarny z 30"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31"; + currentpicture := black_circle + - digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(32,24/22size#,23/22size#,1/22size#); "pion czarny z 32"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(34,24/22size#,23/22size#,1/22size#); "pion czarny z 34"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(36,24/22size#,23/22size#,1/22size#); "pion czarny z 36"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(38,24/22size#,23/22size#,1/22size#); "pion czarny z 38"; + currentpicture := black_circle + - digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39"; + currentpicture := black_circle + - digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(40,24/22size#,23/22size#,1/22size#); "pion czarny z 40"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(42,24/22size#,23/22size#,1/22size#); "pion czarny z 42"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(44,24/22size#,23/22size#,1/22size#); "pion czarny z 44"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(46,24/22size#,23/22size#,1/22size#); "pion czarny z 46"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(48,24/22size#,23/22size#,1/22size#); "pion czarny z 48"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49"; + currentpicture := black_circle + - digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(50,24/22size#,23/22size#,1/22size#); "pion czarny z 50"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51"; + currentpicture := black_circle + - digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(52,24/22size#,23/22size#,1/22size#); "pion czarny z 52"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(54,24/22size#,23/22size#,1/22size#); "pion czarny z 54"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(56,24/22size#,23/22size#,1/22size#); "pion czarny z 56"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(58,24/22size#,23/22size#,1/22size#); "pion czarny z 58"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59"; + currentpicture := black_circle + - digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(60,24/22size#,23/22size#,1/22size#); "pion czarny z 60"; + currentpicture := black_circle + - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61"; + currentpicture := black_circle + - digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h) + - digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(62,24/22size#,23/22size#,1/22size#); "pion czarny z 62"; + currentpicture := black_circle + - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63"; + currentpicture := black_circle + - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(64,24/22size#,23/22size#,1/22size#); "pion czarny z 64"; + currentpicture := black_circle + - digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + - digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +end; diff --git a/macros/latex/contrib/othello/ot1neu.mf b/macros/latex/contrib/othello/ot1neu.mf new file mode 100644 index 0000000000..0592ef5598 --- /dev/null +++ b/macros/latex/contrib/othello/ot1neu.mf @@ -0,0 +1,702 @@ +mode_setup; + +define_pixels(size); +define_pixels(line_thickness,border_line_thickness); +define_pixels(dig_h,dig_w,dig_pen); + +picture digit[]; +picture white_circle; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +def digit_zero = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.5dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=dig_w; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + draw z1...z2...z3...z4...cycle; + digit[0] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_one = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.5dig_w; bot y1=0; + x2=.5dig_w; top y2=dig_h; + draw z1--z2; + digit[1] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_two = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.8dig_w; y3=.9dig_h; + lft x4=0; bot y4=0; + draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4; + z5=z4; + rt x6=dig_w; bot y6=0; + draw z5--z6; + digit[2] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_three = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.8dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.52dig_h); + rt x5=dig_w; y5=.2dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7; + digit[3] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_four = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.75dig_w; bot y1=0; + x2=x1; top y2=dig_h; + lft x3=0; y3=.3dig_h; + rt x4=dig_w; y4=y3; + draw z1--z2--z3--z4; + digit[4] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_five = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=.95dig_w; top y1=dig_h; + lft x2=.05dig_w; y2=y1; + lft x3=0; y3=.45dig_h; + z4=(.5dig_w,.6dig_h); + rt x5=dig_w; y5=.3dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=.15dig_h; + draw z1--z2--z3{up}..z4..z5..z6...{up}z7; + digit[5] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_six = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=dig_w; y1=.8dig_h; + x2=.45dig_w; top y2=dig_h; + lft x3=0; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + rt x5=dig_w; y5=.3dig_h; + z6=(.53dig_w,.55dig_h); + z7=(.03dig_w+.6dig_pen,.25dig_h); + draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7; + digit[6] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_seven = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; top y1=dig_h; + rt x2=dig_w; y2=y1; + lft x3=.2dig_w; bot y3=0; + draw z1--z2--z3; + digit[7] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_eight = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.55dig_h); + rt x5=dig_w; y5=.25dig_h; + x6=.5dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1...z2...z3...z4...cycle; + draw z4...z5...z6...z7...cycle; + digit[8] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_nine = + currentpicture := nullpicture; + currentpicture := digit[6] rotated 180; + digit[9] := currentpicture shifted (dig_w,dig_h); + clearxy; clearit; clearpen; +enddef; + +def letter_x = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + draw (0.4dig_w,0.1dig_h)--(1.2dig_w,0.9dig_h); + draw (0.4dig_w,0.9dig_h)--(1.2dig_w,0.1dig_h); + digit[10] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def letter_c = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + draw (dig_w,0.3dig_h)..(0.85dig_w,0.1dig_h)..(0.3dig_w,0.5dig_h)..(0.85dig_w,0.9dig_h)..(dig_w,0.7dig_h); + digit[11] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight;digit_nine; +letter_x;letter_c; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(0,24/22size#,23/22size#,1/22size#); "pion bialy"; + pickup pencircle scaled line_thickness; + lft x1=13/24w; y1=-1/24w; + rt x2=35/24w; y2=-1/24w; + draw z1..z2..cycle; + white_circle := currentpicture; +showit; +endchar; + +% stop""; + +beginchar(1,24/22size#,23/22size#,1/22size#); "pion bialy z 1"; + currentpicture := digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(2,24/22size#,23/22size#,1/22size#); "pion bialy z 2"; + currentpicture := digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(3,24/22size#,23/22size#,1/22size#); "pion bialy z 3"; + currentpicture := digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(4,24/22size#,23/22size#,1/22size#); "pion bialy z 4"; + currentpicture := digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(5,24/22size#,23/22size#,1/22size#); "pion bialy z 5"; + currentpicture := digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(6,24/22size#,23/22size#,1/22size#); "pion bialy z 6"; + currentpicture := digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(7,24/22size#,23/22size#,1/22size#); "pion bialy z 7"; + currentpicture := digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(8,24/22size#,23/22size#,1/22size#); "pion bialy z 8"; + currentpicture := digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(9,24/22size#,23/22size#,1/22size#); "pion bialy z 9"; + currentpicture := digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +dig_w := .7dig_w; +dig_pen := .7dig_pen; + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight; digit_nine; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(10,24/22size#,23/22size#,1/22size#); "pion bialy z 10"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(11,24/22size#,23/22size#,1/22size#); "pion bialy z 11"; + currentpicture := digit[1] shifted (1w-dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(12,24/22size#,23/22size#,1/22size#); "pion bialy z 12"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(14,24/22size#,23/22size#,1/22size#); "pion bialy z 14"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(16,24/22size#,23/22size#,1/22size#); "pion bialy z 16"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17"; + currentpicture := digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(18,24/22size#,23/22size#,1/22size#); "pion bialy z 18"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19"; + currentpicture := digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(20,24/22size#,23/22size#,1/22size#); "pion bialy z 20"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21"; + currentpicture := digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(22,24/22size#,23/22size#,1/22size#); "pion bialy z 22"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(24,24/22size#,23/22size#,1/22size#); "pion bialy z 24"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(26,24/22size#,23/22size#,1/22size#); "pion bialy z 26"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(28,24/22size#,23/22size#,1/22size#); "pion bialy z 28"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(30,24/22size#,23/22size#,1/22size#); "pion bialy z 30"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31"; + currentpicture := digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(32,24/22size#,23/22size#,1/22size#); "pion bialy z 32"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(34,24/22size#,23/22size#,1/22size#); "pion bialy z 34"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(36,24/22size#,23/22size#,1/22size#); "pion bialy z 36"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(38,24/22size#,23/22size#,1/22size#); "pion bialy z 38"; + currentpicture := digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39"; + currentpicture := digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(40,24/22size#,23/22size#,1/22size#); "pion bialy z 40"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[1] shifted (.5w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(42,24/22size#,23/22size#,1/22size#); "pion bialy z 42"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(44,24/22size#,23/22size#,1/22size#); "pion bialy z 44"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(46,24/22size#,23/22size#,1/22size#); "pion bialy z 46"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(48,24/22size#,23/22size#,1/22size#); "pion bialy z 48"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49"; + currentpicture := digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(50,24/22size#,23/22size#,1/22size#); "pion bialy z 50"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51"; + currentpicture := digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(52,24/22size#,23/22size#,1/22size#); "pion bialy z 52"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(54,24/22size#,23/22size#,1/22size#); "pion bialy z 54"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(56,24/22size#,23/22size#,1/22size#); "pion bialy z 56"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(58,24/22size#,23/22size#,1/22size#); "pion bialy z 58"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59"; + currentpicture := digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(60,24/22size#,23/22size#,1/22size#); "pion bialy z 60"; + currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61"; + currentpicture := digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(62,24/22size#,23/22size#,1/22size#); "pion bialy z 62"; + currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63"; + currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(64,24/22size#,23/22size#,1/22size#); "pion bialy z 64"; + currentpicture := digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(65,24/22size#,23/22size#,1/22size#); "pion bialy z X"; + currentpicture := digit[10] shifted (1w-1.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(66,24/22size#,23/22size#,1/22size#); "pion bialy z C"; + currentpicture := digit[11] shifted (1w-1.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; +end; diff --git a/macros/latex/contrib/othello/ot1neu10.mf b/macros/latex/contrib/othello/ot1neu10.mf new file mode 100644 index 0000000000..876bfe794e --- /dev/null +++ b/macros/latex/contrib/othello/ot1neu10.mf @@ -0,0 +1 @@ +font_identifier:="OT1NEUTRAL"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1neu15.mf b/macros/latex/contrib/othello/ot1neu15.mf new file mode 100644 index 0000000000..636e21ca74 --- /dev/null +++ b/macros/latex/contrib/othello/ot1neu15.mf @@ -0,0 +1 @@ +font_identifier:="OT1NEUTRAL"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1neu20.mf b/macros/latex/contrib/othello/ot1neu20.mf new file mode 100644 index 0000000000..e22ab3ca14 --- /dev/null +++ b/macros/latex/contrib/othello/ot1neu20.mf @@ -0,0 +1 @@ +font_identifier:="OT1NEUTRAL"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1neu \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1whi10.mf b/macros/latex/contrib/othello/ot1whi10.mf new file mode 100644 index 0000000000..b86a9c4cda --- /dev/null +++ b/macros/latex/contrib/othello/ot1whi10.mf @@ -0,0 +1 @@ +font_identifier:="OT1WHITE"; font_size 10pt#; size#:=10pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1whi15.mf b/macros/latex/contrib/othello/ot1whi15.mf new file mode 100644 index 0000000000..fd3279a680 --- /dev/null +++ b/macros/latex/contrib/othello/ot1whi15.mf @@ -0,0 +1 @@ +font_identifier:="OT1WHITE"; font_size 15pt#; size#:=15pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1whi20.mf b/macros/latex/contrib/othello/ot1whi20.mf new file mode 100644 index 0000000000..da42e694da --- /dev/null +++ b/macros/latex/contrib/othello/ot1whi20.mf @@ -0,0 +1 @@ +font_identifier:="OT1WHITE"; font_size 20pt#; size#:=20pt#; line_thickness#:=.04size#; border_line_thickness#:=.1size#; %%% dig_h#:=63/100size#; dig_w#:=4/10size#; dig_pen#:=1/10size#; input ot1white \ No newline at end of file diff --git a/macros/latex/contrib/othello/ot1white.mf b/macros/latex/contrib/othello/ot1white.mf new file mode 100644 index 0000000000..a1d0947b9a --- /dev/null +++ b/macros/latex/contrib/othello/ot1white.mf @@ -0,0 +1,735 @@ +mode_setup; + +define_pixels(size); +define_pixels(line_thickness,border_line_thickness); +define_pixels(dig_h,dig_w,dig_pen); + +picture digit[]; +picture white_circle; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +def digit_zero = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.5dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=dig_w; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + draw z1...z2...z3...z4...cycle; + digit[0] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_one = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.5dig_w; bot y1=0; + x2=.5dig_w; top y2=dig_h; + draw z1--z2; + digit[1] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_two = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.8dig_w; y3=.9dig_h; + lft x4=0; bot y4=0; + draw z1{up}...z2...z3..{(-.8dig_w,-dig_h)}z4; + z5=z4; + rt x6=dig_w; bot y6=0; + draw z5--z6; + digit[2] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_three = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.8dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.52dig_h); + rt x5=dig_w; y5=.2dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1{up}..z2..z3..{left}z4{right}..z5..z6...{up}z7; + digit[3] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_four = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + x1=.75dig_w; bot y1=0; + x2=x1; top y2=dig_h; + lft x3=0; y3=.3dig_h; + rt x4=dig_w; y4=y3; + draw z1--z2--z3--z4; + digit[4] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_five = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=.95dig_w; top y1=dig_h; + lft x2=.05dig_w; y2=y1; + lft x3=0; y3=.45dig_h; + z4=(.5dig_w,.6dig_h); + rt x5=dig_w; y5=.3dig_h; + x6=.65dig_w; bot y6=0; + lft x7=0; y7=.15dig_h; + draw z1--z2--z3{up}..z4..z5..z6...{up}z7; + digit[5] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_six = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + rt x1=dig_w; y1=.8dig_h; + x2=.45dig_w; top y2=dig_h; + lft x3=0; y3=.5dig_h; + x4=.5dig_w; bot y4=0; + rt x5=dig_w; y5=.3dig_h; + z6=(.53dig_w,.55dig_h); + z7=(.03dig_w+.6dig_pen,.25dig_h); + draw z1{up}...z2...z3...z4...z5...{left}z6{left}...{(1,-10)}z7; + digit[6] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_seven = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=0; top y1=dig_h; + rt x2=dig_w; y2=y1; + lft x3=.2dig_w; bot y3=0; + draw z1--z2--z3; + digit[7] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_eight = + currentpicture := nullpicture; + pickup pencircle scaled dig_pen; + lft x1=.08dig_w; y1=.75dig_h; + x2=.5dig_w; top y2=dig_h; + rt x3=.92dig_w; y3=y1; + z4=(.5dig_w,.55dig_h); + rt x5=dig_w; y5=.25dig_h; + x6=.5dig_w; bot y6=0; + lft x7=0; y7=y5; + draw z1...z2...z3...z4...cycle; + draw z4...z5...z6...z7...cycle; + digit[8] := currentpicture; + clearxy; clearit; clearpen; +enddef; + +def digit_nine = + currentpicture := nullpicture; + currentpicture := digit[6] rotated 180; + digit[9] := currentpicture shifted (dig_w,dig_h); + clearxy; clearit; clearpen; +enddef; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight; digit_nine; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(0,24/22size#,23/22size#,1/22size#); "pion bialy"; + pickup pencircle scaled line_thickness; + lft x1=13/24w; y1=-1/24w; + rt x2=35/24w; y2=-1/24w; + draw z1..z2..cycle; + white_circle := currentpicture; +showit; +endchar; + +% stop""; + +beginchar(1,24/22size#,23/22size#,1/22size#); "pion bialy z 1"; + currentpicture := white_circle + + digit[1] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(2,24/22size#,23/22size#,1/22size#); "pion bialy z 2"; + currentpicture := white_circle + + digit[2] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(3,24/22size#,23/22size#,1/22size#); "pion bialy z 3"; + currentpicture := white_circle + + digit[3] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(4,24/22size#,23/22size#,1/22size#); "pion bialy z 4"; + currentpicture := white_circle + + digit[4] shifted (1w-.6dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(5,24/22size#,23/22size#,1/22size#); "pion bialy z 5"; + currentpicture := white_circle + + digit[5] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(6,24/22size#,23/22size#,1/22size#); "pion bialy z 6"; + currentpicture := white_circle + + digit[6] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(7,24/22size#,23/22size#,1/22size#); "pion bialy z 7"; + currentpicture := white_circle + + digit[7] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(8,24/22size#,23/22size#,1/22size#); "pion bialy z 8"; + currentpicture := white_circle + + digit[8] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(9,24/22size#,23/22size#,1/22size#); "pion bialy z 9"; + currentpicture := white_circle + + digit[9] shifted (1w-.5dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +dig_w := .7dig_w; +dig_pen := .7dig_pen; + +digit_zero; digit_one; digit_two; digit_three; digit_four; +digit_five; digit_six; digit_seven; digit_eight; digit_nine; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +beginchar(10,24/22size#,23/22size#,1/22size#); "pion bialy z 10"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(11,24/22size#,23/22size#,1/22size#); "pion bialy z 11"; + currentpicture := white_circle + + digit[1] shifted (1w-dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(12,24/22size#,23/22size#,1/22size#); "pion bialy z 12"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(13,24/22size#,23/22size#,1/22size#); "pion czarny z 13"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(14,24/22size#,23/22size#,1/22size#); "pion bialy z 14"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(15,24/22size#,23/22size#,1/22size#); "pion czarny z 15"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(16,24/22size#,23/22size#,1/22size#); "pion bialy z 16"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(17,24/22size#,23/22size#,1/22size#); "pion czarny z 17"; + currentpicture := white_circle + + digit[1] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(18,24/22size#,23/22size#,1/22size#); "pion bialy z 18"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(19,24/22size#,23/22size#,1/22size#); "pion czarny z 19"; + currentpicture := white_circle + + digit[1] shifted (1w-1.2dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(20,24/22size#,23/22size#,1/22size#); "pion bialy z 20"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(21,24/22size#,23/22size#,1/22size#); "pion czarny z 21"; + currentpicture := white_circle + + digit[2] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(22,24/22size#,23/22size#,1/22size#); "pion bialy z 22"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(23,24/22size#,23/22size#,1/22size#); "pion czarny z 23"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(24,24/22size#,23/22size#,1/22size#); "pion bialy z 24"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(25,24/22size#,23/22size#,1/22size#); "pion czarny z 25"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(26,24/22size#,23/22size#,1/22size#); "pion bialy z 26"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(27,24/22size#,23/22size#,1/22size#); "pion czarny z 27"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(28,24/22size#,23/22size#,1/22size#); "pion bialy z 28"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(29,24/22size#,23/22size#,1/22size#); "pion czarny z 29"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(30,24/22size#,23/22size#,1/22size#); "pion bialy z 30"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(31,24/22size#,23/22size#,1/22size#); "pion czarny z 31"; + currentpicture := white_circle + + digit[3] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(32,24/22size#,23/22size#,1/22size#); "pion bialy z 32"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(33,24/22size#,23/22size#,1/22size#); "pion czarny z 33"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(34,24/22size#,23/22size#,1/22size#); "pion bialy z 34"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(35,24/22size#,23/22size#,1/22size#); "pion czarny z 35"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(36,24/22size#,23/22size#,1/22size#); "pion bialy z 36"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(37,24/22size#,23/22size#,1/22size#); "pion czarny z 37"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(38,24/22size#,23/22size#,1/22size#); "pion bialy z 38"; + currentpicture := white_circle + + digit[3] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(39,24/22size#,23/22size#,1/22size#); "pion czarny z 39"; + currentpicture := white_circle + + digit[2] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(40,24/22size#,23/22size#,1/22size#); "pion bialy z 40"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(41,24/22size#,23/22size#,1/22size#); "pion czarny z 41"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[1] shifted (.5w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(42,24/22size#,23/22size#,1/22size#); "pion bialy z 42"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(43,24/22size#,23/22size#,1/22size#); "pion czarny z 43"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(44,24/22size#,23/22size#,1/22size#); "pion bialy z 44"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(45,24/22size#,23/22size#,1/22size#); "pion czarny z 45"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(46,24/22size#,23/22size#,1/22size#); "pion bialy z 46"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(47,24/22size#,23/22size#,1/22size#); "pion czarny z 47"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(48,24/22size#,23/22size#,1/22size#); "pion bialy z 48"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(49,24/22size#,23/22size#,1/22size#); "pion czarny z 49"; + currentpicture := white_circle + + digit[4] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(50,24/22size#,23/22size#,1/22size#); "pion bialy z 50"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(51,24/22size#,23/22size#,1/22size#); "pion czarny z 51"; + currentpicture := white_circle + + digit[5] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(52,24/22size#,23/22size#,1/22size#); "pion bialy z 52"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(53,24/22size#,23/22size#,1/22size#); "pion czarny z 53"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(54,24/22size#,23/22size#,1/22size#); "pion bialy z 54"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(55,24/22size#,23/22size#,1/22size#); "pion czarny z 55"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[5] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(56,24/22size#,23/22size#,1/22size#); "pion bialy z 56"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[6] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(57,24/22size#,23/22size#,1/22size#); "pion czarny z 57"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[7] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(58,24/22size#,23/22size#,1/22size#); "pion bialy z 58"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[8] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(59,24/22size#,23/22size#,1/22size#); "pion czarny z 59"; + currentpicture := white_circle + + digit[5] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[9] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(60,24/22size#,23/22size#,1/22size#); "pion bialy z 60"; + currentpicture := white_circle + + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[0] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(61,24/22size#,23/22size#,1/22size#); "pion czarny z 61"; + currentpicture := white_circle + + digit[6] shifted (1w-.9dig_w,-1/24w-.5dig_h) + + digit[1] shifted (1w+.2dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(62,24/22size#,23/22size#,1/22size#); "pion bialy z 62"; + currentpicture := white_circle + + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[2] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(63,24/22size#,23/22size#,1/22size#); "pion czarny z 63"; + currentpicture := white_circle + + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[3] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +beginchar(64,24/22size#,23/22size#,1/22size#); "pion bialy z 64"; + currentpicture := white_circle + + digit[6] shifted (1w-1.1dig_w,-1/24w-.5dig_h) + + digit[4] shifted (1w+.1dig_w,-1/24w-.5dig_h); +showit; +endchar; + +% stop""; + +end; diff --git a/macros/latex/contrib/othello/othello.sty b/macros/latex/contrib/othello/othello.sty new file mode 100644 index 0000000000..d223608952 --- /dev/null +++ b/macros/latex/contrib/othello/othello.sty @@ -0,0 +1,211 @@ +%%%%%%%%%%%%%%%%%%%%%%%% othello.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +% Othello package written by Michiel le Comte michiel.le.comte@zonnet.nl +% This package has been created using (mutilating?) the Go package written by +% Hanna Kolodziejska (version 0.05 : November 1991) as basis + + +% Remark: if someone can fix a switch in the pos thingie, please notify me. +% A nicer metafont definition for the letter X and C (ot1neu.mf, digit[10] and +% digit[11]) is also welcome. +% +% For a short introduction how to use this package, look at the othello.tex file, +% it contains a short manual at the end. +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\catcode`@=11 + +\newbox\@gobox \newdimen\@godimen + + +\def\gofontsize#1{ + \font\gofont=ot#1 at #1truept + \font\blackfontOne=ot1bla#1 at #1truept + \font\whitefontOne=ot1whi#1 at #1truept + \font\neutralfontOne=ot1neu#1 at #1truept + \ifnum #1=10 \font\letterfont=cmr10 at 10truept\else + \ifnum #1=15 \font\letterfont=cmr10 at 14.4truept\else + \ifnum #1=20 \font\letterfont=cmr10 at 17.28truept\fi\fi\fi + \setbox\@gobox=\hbox{\gofont\char0} + \@godimen=\wd\@gobox + } + +\gofontsize{10} % initialization <--- + +\def\newgoline{\hfill\break} +\def\empty{\gofont\char1} +\def\lftborder{\gofont\char2} +\def\rtborder{\gofont\char3} +\def\topborder{\gofont\char4} +\def\botborder{\gofont\char5} +\def\lfttopcorner{\gofont\char6} +\def\rttopcorner{\gofont\char7} +\def\lftbotcorner{\gofont\char8} +\def\rtbotcorner{\gofont\char9} + +\newcount\n +\newcount\@beglet \newcount\@endlet +\newcount\@lettercount + +\def\@letternumber#1{\relax + \ifx #1a\@lettercount=1\else + \ifx #1b\@lettercount=2\else + \ifx #1c\@lettercount=3\else + \ifx #1d\@lettercount=4\else + \ifx #1e\@lettercount=5\else + \ifx #1f\@lettercount=6\else + \ifx #1g\@lettercount=7\else + \ifx #1h\@lettercount=8\else + \ifx #1i\@lettercount=9\else + \errmessage{Row label must be letter!} + \fi\fi\fi\fi\fi\fi\fi\fi\fi + } + +\def\inidiagram#1-#2:#3-#4 {\relax + \ifnum #3>#4 \errmessage{Invalid column numbers!} \fi + \@letternumber{#1} \@beglet=\@lettercount + \@letternumber{#2} \@endlet=\@lettercount + \def\@inirow##1##2{{\n=#3 + \loop + \expandafter\let\csname @##1\romannumeral\n \endcsname=0\relax + \edef\@@inirow{\global + \def\csname @##1\romannumeral\n \endcsname{##2}}\@@inirow + \ifnum \n<#4 \advance \n by 1 + \repeat + }}\relax + \loop + \ifcase\@beglet\relax\or + \@inirow{a}{\topborder}\relax + \ifnum #3=1 \global\def\@ai{\lfttopcorner}\fi + \ifnum #4=9 \global\def\@aix{\rttopcorner}\fi \or + \@inirow{b}{\empty}\relax + \ifnum #3=1 \global\def\@bi{\lftborder}\fi + \ifnum #4=9 \global\def\@bix{\rtborder}\fi \or + \@inirow{c}{\empty}\relax + \ifnum #3=1 \global\def\@ci{\lftborder}\fi + \ifnum #4=9 \global\def\@cix{\rtborder}\fi \or + \@inirow{d}{\empty}\relax + \ifnum #3=1 \global\def\@di{\lftborder}\fi + \ifnum #4=9 \global\def\@dix{\rtborder}\fi \or + \@inirow{e}{\empty} + \ifnum #3=1 \global\def\@ei{\lftborder}\fi + \ifnum #4=9 \global\def\@eix{\rtborder}\fi \or + \@inirow{f}{\empty} + \ifnum #3=1 \global\def\@fi{\lftborder}\fi + \ifnum #4=9 \global\def\@fix{\rtborder}\fi \or + \@inirow{g}{\empty} + \ifnum #3=1 \global\def\@gi{\lftborder}\fi + \ifnum #4=9 \global\def\@gix{\rtborder}\fi \or + \@inirow{h}{\empty} + \ifnum #3=1 \global\def\@hi{\lftborder}\fi + \ifnum #4=9 \global\def\@hix{\rtborder}\fi \or + \@inirow{i}{\botborder} + \ifnum #3=1 \global\def\@ii{\lftbotcorner}\fi + \ifnum #4=9 \global\def\@iix{\rtbotcorner}\fi + \fi + \ifnum \@beglet<\@endlet \advance \@beglet by 1 + \repeat + } + +\def\inifulldiagram{\inidiagram a-i:1-9 } + +\inifulldiagram % initialization + + +\def\showdiagram#1-#2:#3-#4 {\vbox{\offinterlineskip\noindent + \ifnum #3>#4 \errmessage{Invalid column numbers!} \fi + \hsize=\@godimen + \n=#4\advance\n by-#3\advance\n by1 + \multiply\hsize by\n + \@letternumber{#1} \@beglet=\@lettercount + \@letternumber{#2} \@endlet=\@lettercount + \def\@showrow##1{{\n=#3 + \loop + \edef\@@showrow{\csname @##1\romannumeral\n \endcsname}\@@showrow + \ifnum \n<#4 \advance \n by 1 + \repeat + }}\relax + \loop + \ifcase\@beglet\relax\or + \@showrow{a}\or + \@showrow{b}\or + \@showrow{c}\or + \@showrow{d}\or + \@showrow{e}\or + \@showrow{f}\or + \@showrow{g}\or + \@showrow{h}\or + \@showrow{i} + \fi + \ifnum \@beglet<\@endlet + \newgoline \advance \@beglet by 1 + \repeat + }} + +\def\showfulldiagram{\showdiagram a-i:1-9 } + +\def\pos#1#2=#3#4{\relax + \ifcat #1a\relax \else \errmessage{Row label must be a letter!}\fi + \ifnum #2<1 \errmessage{Column number less than 1?}\fi + \ifnum #2>9 \errmessage{Column number greater than 9?}\fi + \edef\@fourth{#4}\relax + \ifx .#4\ifx #3\empty\edef\@fourth{}\else \edef\@fourth{0}\fi\fi + \edef\@borders{\relax + \ifx #1a \ifnum #2=1 \gofont\char6 \else + \ifnum #2=9 \gofont\char7 \else + \gofont\topborder + \fi\fi + \else + \ifx #1i \ifnum #2=1 \gofont\char17 \else + \ifnum #2=9 \gofont\char18 \else + \gofont\char14 \fi\fi + \else + \ifnum #2=1 \lftborder + \else + \ifnum #2=9 \gofont\char12 + \else + \gofont\char1 + \fi\fi\fi\fi + }\relax + \expandafter\let\csname @#1\romannumeral#2\endcsname=0\relax + \edef\@pos{\def\csname @#1\romannumeral#2\endcsname{#3{\@fourth}}}\@pos + \ignorespaces + } + +\newcount\nr + +\def\black#1{\relax + \ifx \triangle#1{\rlap{\triangle}\@borders}\else + \ifx \square#1{\rlap{\square}\@borders}\else + \ifnum #1<0 \errmessage{Negative White's move?}\else + \ifnum #1>64 \errmessage{White's move too big!}\else + \ifnum #1<65 {\blackfontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi} + +\def\white#1{\relax + \ifx \triangle#1{\rlap{\triangle}\@borders}\else + \ifx \square#1{\rlap{\square}\@borders}\else + \ifnum #1<0 \errmessage{Negative White's move?}\else + \ifnum #1>64 \errmessage{White's move too big!}\else + \ifnum #1<65 {\whitefontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi} + +\def\neutral#1{\relax + \ifx \triangle#1{\rlap{\triangle}\@borders}\else + \ifx \square#1{\rlap{\square}\@borders}\else + \ifnum #1<0 \errmessage{A negative move?}\else + \ifnum #1>66 \errmessage{There are only 64 moves to make!}\else + \ifnum #1<67 {\neutralfontOne\rlap{\char#1}\@borders}\fi\fi\fi\fi\fi} + +\def\textblack#1{\def\@borders{\hskip\wd\@gobox}\relax + \ifx .#1\lower.2\wd\@gobox\hbox{\black{0}}\else + \lower.2\wd\@gobox\hbox{\black{#1}}\fi} + +\def\textwhite#1{\def\@borders{\hskip\wd\@gobox}\relax + \ifx .#1\lower.2\wd\@gobox\hbox{\white{0}}\else + \lower.2\wd\@gobox\hbox{\white{#1}}\fi} + +\newbox\@letterbox \newdimen\@letterdim + +\catcode`@=12 + diff --git a/macros/latex/contrib/othello/othello.tex b/macros/latex/contrib/othello/othello.tex new file mode 100644 index 0000000000..4b25873a05 --- /dev/null +++ b/macros/latex/contrib/othello/othello.tex @@ -0,0 +1,635 @@ +\documentclass[12pt,twoside]{report} + +\usepackage{othello} +\usepackage{graphicx} +\usepackage{makeidx} +\usepackage{floatfig} + +\include{boards} + +\makeindex + +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} +\begin{document} +\initfloatingfigs + +\title{Introduction to Othello} +\author{M. le Comte} +\maketitle + +\clearemptydoublepage +\chapter{preface} +This manual is intended as an introduction to the game Othello. It +has been written using Latex, using a package called othello.sty. +This package is used to create all Othello pictures in this +manual. For more information, see the last chapter. If anyone has +any suggestions or remarks on either the package or the content of +this manual, please mail me at michiel.le.comte@zonnet.nl +\clearemptydoublepage +\tableofcontents +\chapter{A short introduction to Othello} +\section{The history of Othello} +\section{The rules of Othello} + +\subsection{Starting the game} +\begin{figure}[h] +\startposition +\end{figure} + + +Othello is a game that is played on a $8\times 8$\ board using +stones that are black on one side, and white on the other. +One player uses the black side of the stones, the other the white sides. +The starting position is as follows: four stones are placed in the middle, two +white and two black, each color getting a diagonal. Thus the +starting position is as in figure 2.1. The player using the black +stones always makes the first move. The players take +turns placing a stone. Following standard Othello notation, we will number +the rows by $1\ldots 8$\ and the columns by a$\ldots$h. For +example, the begin positions for black are d5 and e4, and for +white d4 and e5. In addition, we will also use ``compass'' +directions, i.e. west when we mean the left side of the board, +north for the upper side etc. There are a few places on the Othello +board that are important enough to deserve a special name. The +squares a1,a8,h1 and h8 are called the \index{corners}corners. There are 3 squares +adjacent to a1, two of which are on the edge of the board (a2 and +b1). These two stones are called C squares\index{C square}. The third square, +situated on the diagonal, i.e. square b2, is called an \index{X square}X square. +The same notation also applies for the other corners, so there are +4 X squares and 8 C squares. (A mnemonic: the two diagonals form +an X) Figure \ref{cornerpositions} shows these special stones. + +The four squares already occupied in the starting +position are called the center squares, for obvious +reasons.\index{center squares} + +\begin{figure}[ht] +\cornerpositions +\end{figure} + + +\subsection{Making a move} +At his turn, a player must place one of his stones on the board. He may +place a stone on one of the empty squares of the board, adjacent to +a disk of the opponent. In addition, the stone also must flank one or more of +his opponent's disks between his new stone and one or more of his +other stones which already are on the board. He then changes the stones +of the opponent which were flanked to his color, by flipping the stones. + +\begin{figure}[h] +\makingamove +\end{figure} +As mentioned, the black player is the first to move. His valid moves are +c4,d3,e6,f5. These squares are shown in figure \ref{makingamove}, +where X marks the spot. +Suppose that he chooses c4, then the white disk d4 is flipped to black, and then it is +white's turn to move. White now has 3 different spots to place his disk, c3, e3 +and c5. If he chooses c3, the situation then becomes as figure \ref{validmoves}. + +\begin{floatingfigure}{4cm} +\validmoves +\end{floatingfigure} +Note that disks which are flipped may not be used to flip even +more disks in the same turn. For example: if we have the board +from figure \ref{fliponlyonce}, and suppose that white has to make +a move. The choices for white are d3 and e3. Both moves will flip +3 of the black stones, and the fourth one will be completely +surrounded by white stones, but it will not be flipped. +\begin{figure} [ht] +\fliponlyonce +\end{figure} + +\subsection{Passing} If a player can not make a move that flips at least one of his +opponents disks, then he has to pass. If he is able to make a valid move however, then +passing is not allowed. It is possible that a player has to pass several times +before he can make a move again. + +\subsection{The end of Othello} +The game ends when neither player can make a valid move. This usually happens +when all 64 squares are filled, but +sometimes it ends earlier. The stones then are counted. The winner is the player who has more discs +then his opponent. If both players have 32 stones, then it is a draw. + +Looking at figure \ref{fliponlyonce}, you can see that the white +player can easily win. After either of his moves, the black player +has only remaining stone. It does not matter which move black +makes, the white player can always flank all the stones in the +next turn. This is an example where the game ends before the board +is completely filled. + +\clearemptydoublepage +\chapter{The strategy of Othello} +\section{The maximum disk strategy}\index{maximum disk strategy} +Playing Othello is like every game that is not based entirely on luck, if you want +to win, you need a strategy. The most obvious strategy is not always the best +though. When people first learn to play Othello, they are usually tempted to get +as many stones they can, whenever they can. +This strategy is known as the maximum disk strategy. +\begin{floatingfigure}{4cm} +\maximumdisk +\end{floatingfigure} +Having many stones in the beginning is +not at all a guarantee that you will win in the end however! Consider for example +the position in figure \ref{maximumdisk}. +White has 46 stones and black only 2, with 16 remaining moves. +White however is very limited in its moves, which allows black to +force white into making less then perfect moves. If black plays +all moves right, and white plays the best possible moves too, then +white will end up with all the corners, but black will have 46 +stones. You may want to try to find the best play yourself, a +solution in which black wins is not that hard, but 46 stones is a +little +puzzle\footnote{Solution:b2,a1,b1,-,a2,-,b7,a8,a7,-,g2,h1,g1,-,g8,h8,b8,g7,h2,-,h7} +(the answer is given at the bottom of the page). + +There are several reasons why the maximum disk strategy usually fails. The two most +important reasons are stable disks and mobility. The next sections will deal with these +notions. +\subsection{Stable disks}\index{stable disks} +Let's start with stable disks. Stable disks are disks that can not +be flipped by the opponent. Good examples of stable disks are +corner stones. There is no way that an opponent can flip one of +your cornerstones, so acquiring a corner stone in the beginning of +the game, or in the middle part even, usually means that you will +be able to use that corner to gain a lot of stable disks and thus +win the game. Examples of stable stones are given in figure \ref{stablestones} + +\begin{figure}[h] +\stablestones +\end{figure} + +Looking back at the example in figure \ref{maximumdisk}, we see that +white has 46 stones, but not one of these disks is stable. Thus black is able to turn a lot of +the disks into black disks. + +To see an example of the opposite situation: suppose that white also was able to completely +capture one of the corners, leading to the situation \ref{stabledisks} . +\begin{figure}[ht] +\stabledisks +\end{figure} +Now the white stones in the north-west corner are completely safe, +white has 21 stable stones in this situation. Black can still gain +more stones then one would expect, but the dramatic change to 46 +stones is gone. In fact, assuming perfect play, the end result +will be 35 stones for white, and 29 for black. Once more, it is a +nice puzzle to find the best way to play\footnote{Solution: +b7,a8,a7,-,b8,-,g7,h8,g8,-,h7,-,g2,h1,h2,-,g1}. + +\section{Mobility} +Besides the lack of stable disks, white has another problem in our +maximum disk problem. Looking at the maximum disk figure once +more, we see that white can't make a move. It is this fact that +allows black to force white into making bad moves. This brings us +to the notion of \index{mobility}mobility. One could say that mobility is the +amount of moves that a player can make. Thus, someone with a low +mobility only has a few options to choose from, while someone with +high mobility can place a stone in a lot of different places. +Before refining the definition, let's look at another example of +why mobility is important. +\begin{floatingfigure}{4cm} +\mobilityexampletwo +\end{floatingfigure} +In figure \ref{mobilityexampletwo} we +see a position in which black has enclosed white. Again, this is +an extreme example of mobility difference, since black can make no +valid moves and white a lot. This situation can be used by white +to force black into making one or more bad moves. As an exercise, +loot at the position now and try to find sequence of moves that +will give white a corner. I hope you have done your ``homework'' +by now, so lets look at the position together. + +\noindent\textbf{Analysis:} White in total +has 13 squares to place his stones. We want to force black however +so we cant place our stone somewhere where it gives black multiple +options. Basically this only leaves us the north side, since all +the other options offer black at least two moves. So now we only +have to consider the five possible moves on the north side. We can +scratch one move immediately, namely g1. + +Suppose we did play g1, +then black would play f1 and would thus have gained a corner in +the next round instead of white. + +Another move that does not lead +to our objective is e1. Black then plays f1, and then white either +moves to b1, which opens the move c2 to black, or to one of the +squares towards the east, west or south side and we already know +that this gives black more options. Thus e1 does not lead to a +good way of forcing black. + +Starting with either b1 or f1 basically leads to the same end +pattern, but a different corner. Lets look at b1 first. This leads +to the sequence b1,c1,e1,f1,g1,g2. The situation has changed to +figure \ref{mobiuitween}. +\begin{figure} +\mobiuitween +\end{figure} +Technically we do not have a corner yet, +but black was forced to place a stone at the X square g2, and this +enables white to take the h1 corner for sure in this case. g4 for +example provides a place on the diagonal. Of course, sometimes +white wants to wait before actually taking the corner, to make +things even more profitable, but this was a good example of using +black's limited capability to move to get a corner. + +If we place f1 first, then the sequence becomes f1,e1,c1,b1,b2 and +again black is forced to take an X square. + +The last possibility, and the most effective one, starts at c1. +Black has to take b1, and white can answer with f1. Black's only +option is to take e1, and white now directly can take a1. + +We have seen how white can gain a corner from this situation. This +does not mean that c1 is the best move overall though. Try this +position out against a computer to try out several options and you +will find that f5 is the best choice. After all, we're out to have +the most stones in the end, and corners are a possible way to +obtain that goal, but capturing corners is not always the best +way. Playing f5 and subsequent moves will cause black to worsen +its position even further before white will actually grab a +corner. + +\subsection{Frontiers}\index{frontiers} +Mobility is al about gaining many possible moves while reducing +the possible moves of the opponent. Our previous examples gave +extreme positions in which one color was completely surrounded by +corners of the opponent. In general, both colors will have stones +adjacent to one or more empty squares. These stones are called +frontier stones. If several frontier discs adjacent to each other +are of the same color, then we call it a frontier. +\begin{figure} +\frontierstones +\end{figure} +Figure \ref{frontierstones} +shows one large black frontier, and two smaller white frontiers. +A large frontier can be very limiting for a player, since he can +not make moves along his entire frontier. If white would play +h3,h4 or h5 in figure \ref{frontierstones}, then that move would +basically limit white to moves on the south and east side of the +board. Similarly, black can only make moves in the north and east +side of the board. + +The basic idea of mobility was to gain as +many possible moves while limiting the opponent's moves. Since +frontiers block your moves, a general rule for placing stones is +that you try to place stones in such a way that you have as little +frontier disks as possible. We'll look at two examples to see how +the notion of frontiers works in regular games. + +\begin{floatingfigure}{4cm} +\frontiermoveone +\end{floatingfigure} +\textbf{Example 1: }The first example is the situation given by +figure \ref{frontiermoveone}. In this case, white has quite a +large frontier (from c6 to h4) while black hardly has a frontier. +Black would like to make a move which keeps its own frontier small +and, if possible, white's frontier even larger. One move that +would \textbf{not} accomplish this is h6. In this case, black +almost completely takes over the frontier by flipping 5 of the white +frontier stones. In contrast, the move c7 also flips 5 white +stones, but only adds on frontier stone. Even more important, +this frontier stone c7 does not offer white any good +possibilities, since it only opens the option to either an X or a +C square. +\newpage +\begin{figure}[h] +\frontiermovetwo +\end{figure} +\textbf{Example 2: } +Figure \ref{frontiermovetwo} shows a game in an earlier stage of +the game. Lets assume that black is the one to move. He already +has a larger frontier then white has, so it is important that the +frontier does not grow any further. The move e6 is a disastrous as +h6 was in the previous example, so the possible moves are f2 until +f6. The moves f3,f4 and f5 also lead to a large black frontier, so the only real options are to +play either f2 or f6. + +There are moves that do not add to the frontier. These moves are +quiet moves. They usually are the best options to play when +possible. One example is figure \ref{quietmove},\index{quiet moves} where black can +play d4. This move does not open any new options for white to +play, whereas white has no official quiet move after that. White +does have one unofficial quiet move, a3. It is unofficial since it +opens two new moves for black, but both options are so bad that +black has gained no real options. +\begin{figure}[h] +\quietmove +\end{figure} + +\subsection{Tempo}\index{tempo} +Mobility is about reducing the opponents amount of possible +squares while not running out of your own options, and this leads +to the notion of tempo. Basically, if you can make a move which +does not create a new possibility for your opponent and your opponent can't, then you have +lowered his mobility. This is called: gaining a tempo. Quiet moves +are nice examples of this notion. Gaining tempo's is a good thing +since your opponent is forced to increase his frontier, thus +lowering mobility. A nice example is figure \ref{tempo}. +\begin{figure}[ht] +\tempo +\end{figure} + +White can play b1,f1,g1 and black has to make 3 moves as well. The +only option created by whites moves is b2 or g2, both X squares. Black does +not want to play there, so he is forced to flip the three white +stones c6,d6 and e6 in the three turn. After these three moves, +white has no frontier except for c2 and f2, and black is in +serious trouble. + +Moves that allow tempo gaining are very strong, but that does not +mean that you have to play them right away. Most of the time, +saving these moves until you really need them tends to make them +even stronger. + +\section{Wedges}\index{wedges} +A wedge is a situation where a player places a stone between two +stones of his opponent, in such a way that he ``wedges'' those two +stones. For example, if white plays a4 in figure \ref{wedge}, then +he places a wedge between the black stones on the first column. +\begin{figure}[h] +\wedge +\end{figure} + +Wedges are powerful stones when it comes to capturing corners. In +the example, white can take both corners. Another situation in +which wedging often occurs is the one in figure \ref{wedgetwo}. +White can play b2 in this case, thus sacrificing the a1 corner. +However, if black plays a1, then white can make a wedge by playing +a2, and after that a8. In this case, black has gained a corner, +and secured the first column, but white has gained a corner too +and also the first row. This particular type of wedging is often +used when sacrificing a corner. An edge that permits this kind of +wedging is also known as an unbalanced edge.\index{unbalanced edge} When playing Othello +in the begin stage of the game, it is usually wise not to try and +grab edges because they usually end becoming unbalanced edges and pose a +threat in the middle and end stage. +\begin{figure} +\wedgetwo +\end{figure} + +\section{Unbalanced edges and stoner traps} + +\section{Parity and passing}\index{parity} +In general, if a game is played without either of the players +passing, white places the last stone on the board. This offers a +slight advantage. If white has to pass once however, then parity +changes to black's advantage. In the end game, usually certain +holes on the board remain, consisting out of 1 to 4 empty squares. +For example, look at figure \ref{parity}. +\begin{figure}[ht] +\parity +\end{figure} + +Black has to play and there is only one way to win, assuming +perfect play from white of course. Try to find the solution before +reading on. The solution is a1,g2,b1,g7,h8,b2,h1,h2. The finishing +blow of this solution lies in the fact that white has to pass +after the h1 move. Although white has 46 stones with only +two moves left, black still wins, mainly because of the parity +change. + +In general, if there is an odd number of empty spaces, parity can +change, while even number of empty squares usually preserve +parity. + +One more example: the end position of a game between J. Lysons and +E. Lazard at the Cambridge tournament in 1984 is given in figure +\ref{paritytwo}. Black has to play and draw. Once more, try to +find the solution before looking at the analysis. +\begin{figure} +\paritytwo +\end{figure} + +\noindent\textbf{Analysis:} Black has to move first, 8 squares are +empty, so at this moment white gets to make the last move. There +is one empty place with an even amount of squares, and 2 odd. Of +course, we're not only focusing on parity alone, all the other +ideas we have seen so far are in place. White cant play inside the +north-west corner, so we'll stay away from that place. Why? There +are 5 other empty squares. Regardless of what player makes the 5th +move, black can always start in the north-west corner and also +gets the last move. This guarantees our parity advantage, which is +what we want. So lets look at the remaining 5 empty squares. G7 is +a very good winner, since black then immediately gains 8 stable +stones. White has to move, basically has to choose between b7 and +b8. White will play b8, otherwise black can win 33-31 by playing +b2,b8,a8,a1,a7,a2. Black can now take the corner a8. White has to +play a7, otherwise we can win 35-29. And we're done. B7 creates a +few more stables disks. White has to pass, so we can make the +final move. Counting stones shows that the next move is b2. White +has no choice but to play a1 (otherwise black wins with 34-30), +and a2 brings the score to 32-32. + +Once more: this example, like the others, has been chosen to illustrate the +definitions that we have discussed, and not every end game works +according +to these rules. It is up to you to determine what plan works best. +There are games where you can gain parity, but it will cause you +to lose the game. In these cases, forget parity. You're in it for +the stones, not for your knowledge of funny concepts :) + +\section{Beginning Othello games} +Keeping the idea of mobility as standard strategy in mind, we can +give the following rules of thumb for openings in Othello: + +\begin{itemize} +\item Try to have fewer discs than your opponent. +\item Try to occupy the center of the position (the 4 center-squares in the first few moves). +\item Avoid flipping too many frontier discs (those located on the outside boundaries of the position, i.e. avoid + building walls). +\item Try to group your discs into one connected cluster rather than having several scattered isolated discs. +\item Avoid taking edges too soon (before the mid-game). +\end{itemize} + +Mind that these rules are not carved in stone, but they apply very +well for most of the games. In fact, they do not only apply to +openings, but also to the middle section of the game. + +The first and third rule immediately follow from mobility +arguments. The fourth rule, combined with the second, is partially fixed on the +idea that if your stones are scattered, then keeping a small +frontier is hard. Why? If you place a stone, then you have other +stones all over the board, causing lots of stones to flip. The +fifth rule has already been mentioned. If you take edges too soon, +then you usually end up with an end game in which you have several +unbalanced edges, and you opponent is playing with a wide smile on +his or her face. + +Using these general rules, one nice description of how to play is +``to try to get enclosed''. This also is known as: ``curling into +a ball''. + +\subsection{Creeping along the edges} +As with every rule, how flexible they may be, there are always +exceptions. One strategy, that can be wonderful or disastrous +(really, really disastrous), is the ``creeping along edges'' +strategy. What is this strategy about? Instead of trying to have +the opponent enclose you while you are a small cluster of stones +in the middle of the board, you try to gain control of one or two +edges. You try to gain a lot of tempi while doing so, to leave +the opponent in a position where he has no free moves when you +have the edges. After that you force the opponent to sacrifice a +good corner and you are set. The one problem with this strategy is +that if the opponent is able to have one move left after you have +the edges, then you basically can just give up. So either you win +by using a daring short term strategy, or you lose big time because +your position offers no long term prospects. + + +\section{Standard openings of Othello} +Once you have grasped all the ideas presented in this manual, and +are quite familiar with them, you will find that Othello games +generally move into certain stages. There is an opening stage of +about roughly 20-26 moves, a middle stage and and end stage +(starting somewhere between 16 to 10 moves before the end). The +end game is a matter of good calculating using the concepts given +and also practice (the freeware program Icare is \textbf{great} +for practicing Othello games). The middle game is also about +rules, directed more at how to attack edges and gaining tempi. + +The opening of Othello roughly obeys the rules mentioned before, +but this may not be enough against really experienced players. For +example: there are positions in which all the rules can not help +you determine what move to make. Your opponent may know what move +is better simply because he has played both options several times +and found out that one move simply works out better in the long +run. Fortunately you can tap into the common Othello openings +source of the last decade. Almost any Othello game played on +tournaments is collected in the Thor database. + +Furthermore, Robert Gatliff +has made a huge list containing standard openings and the +percentage in which each is played. This knowledge is collected in +a Java programme, so that you can easily learn standard openings. +The occurrence percentage allows you to learn the openings that +are played most first, and after that to continue into the more +obscure ones. A small tip: try to learn like 3 openings at first, +and learn them well (like 20 moves deep, with several variances), +before going on. + +So, to sum it all up, there are three programs that can help you +advance in Othello (besides playing humans of course). Luckily +they are all free to download, so do not hesitate and get hooked. +\begin{itemize} +\item For openings, get the java applet based on Robert Gatliff's list. +\item For end games, use Icare. You can vary from 6 until 12 empty +squares, starting from positions that really have occurred. +\item For games in general, practicing mid game and analyzing +games you played vs someone else, use Wzebra. You can also use it +to import Thor databases and study other games. +\end{itemize} + +Also, playing human adversaries is a world apart. There are +several places where you can meet other people. Common places are: +\begin{itemize} +\item +IOS (the Internet Othello Server) which has a very strong player +base +\item Vog (www.vog.ru) which has a very nice graphical layer for +$\$24$ a year. +\item The Zone (www.zone.com/reversi), microsoft's server, for +free. The Zone has several rooms, for beginners and more advanced players. +\item Yahoo +\end{itemize} + + +\chapter{\LaTeX\ and Othello} +The pictures in this manual have been created using the +\textbf{Othello} package for \LaTeX. I have created this package +by modifying the \textbf{go} package by Hanna Kolodziejska. Thus, +the commands to use are quite similar as for go. A short list of +possible commands: +\begin{itemize} +\item {\verb|\gofontsize{size}|} This command determines the font for +the board. Standard values are 10,15,20. +\item +{\verb|\inifulldiagram|} This creates a board, you use this to +start. When including the Othello package, a first board is +initialized immediately, so this command is only needed when you +want to make more then one board. +\item +{\verb|\inidiagram{let1}{let2}{num1}{num2}|} This cleans the +current board specified by rows let1 to let2 and columns num1 to +num2. This can be used to make small modifications to a filled +board for example. + +\item{\verb|\pos|}\{letter\}\{number\}={\verb|\color|}\{marking\} This command places a +stone onto the position denoted by (letter, number), where letter +denotes the row, and number denotes the column , color is either +black,white or neutral. If the color is either black or white, +then the argument is a dot or a number ranging between 1 and 64. A +dot represents a regular stone, while a number shows a stone that +is numbered. The color neutral is meant to insert a character onto +the board without drawing a stone. Besides the numbers 1 to 64, +neutral also recognizes the arguments 65 and 66 to draw an X or a +C respectively. These options have been added for the example of +special stones (chapter 2). + +Example: {\verb|\pos|}\{b\}\{5\}=\hbox{\verb|\black|}\{.\} +gives a plain black stone on row b, column 5. + +Example: {\verb|\pos|}\{b\}\{5\}=\hbox{\verb|\white|}\{21\} gives +a white stone on b5, with the number 21 inside. + +\textbf{Warning:} Othello moves usually are described in +letter/number combinations where the letter denotes the column and +the number the row, i.e. reversed from Othello package. This is +because I modified an existing package, and do not have enough +\TeX\ knowledge yet to make a clean switch. Thus, + if you want to make a picture of a written +transcription and it says : black puts a stone on e2, you'd have +to define the position as b5. If anyone with sufficient knowledge +and time wants to look at othello.sty, I'd be more then happy (if +you do not want to translate all positions, just follow the +original transcription since the position will only come out +reflected in the diagonal from the left upper corner to the right +bottom corner. The idea of the game is the same though.) + +\item{\verb|\showfulldiagram|} This shows the full diagram made so +far. You can add more moves after this and reuse this command to +show the latest version of the board. +\end{itemize} + +\noindent A short example to illustrate the commands, the commands to create +the opening position for Othello: +{\obeylines +{\verb|\inifulldiagram|} +{\verb|\gofontsize{10}|} +{\verb|\pos{d}{4}=\black{.}}|} +{\verb|\pos{e}{5}=\black{.}|} +{\verb|\pos{d}{5}=\white{.}|} +{\verb|\pos{e}{4}=\white{.}|} +{\verb|\showfulldiagram|}} + +A last example will show all different kind of characters for an +Othello board. + +\begin{figure} +\overviewboard +\end{figure} + +In the go package, a feature has been added to show only parts of +the board, since go boards are rather large. Since Othello boards +are only 8x8, this is not necessary in general, but the option +still exists. To use this option, use the command +{\verb|\showdiagram|}row1-row2:column1-column2, instead of +{\verb|\showfulldiagram|}. For example: the northwest corner of +the overview board is given by: + +\begin{figure} +\overviewboardcorner +\end{figure} + +As mentioned: this package has been created using the go package +as a basis. There still are 2 things to improve, but unfortunately +I am not a \TeX\ or metafont guru (yet). If anyone knows how to +either: +\begin{itemize} +\item make prettier metafont definitions for the X and C +\item change the position definition in such a way that the position +command uses the same co\"ordinates as the standard Othello +notation +\end{itemize} +then I would be more then happy to hear from you. +\printindex +\end{document} -- cgit v1.2.3