summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hexgame/hexgame.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/hexgame/hexgame.sty')
-rw-r--r--macros/latex/contrib/hexgame/hexgame.sty97
1 files changed, 97 insertions, 0 deletions
diff --git a/macros/latex/contrib/hexgame/hexgame.sty b/macros/latex/contrib/hexgame/hexgame.sty
new file mode 100644
index 0000000000..97a7d71e5d
--- /dev/null
+++ b/macros/latex/contrib/hexgame/hexgame.sty
@@ -0,0 +1,97 @@
+%%
+%% This is file `hexgame.sty',
+%%
+%% --------------------------------------------------------------------------
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% File: hexgame.sty Copyright (C) 2006 Meron Brouwer (meron.brouwer@gmail.com)
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{hexgame}
+ [2006/08/01 v1.0 `hexgame' package]
+\RequirePackage{pstcol}
+\RequirePackage{pst-poly}
+\RequirePackage{calc}
+\RequirePackage{ifthen}
+\newlength\halfhexheight
+\setlength\halfhexheight{0.866025404cm}
+\newlength\halfhexwidth
+\setlength\halfhexwidth{1cm}
+\newlength\hexgameboxwidth
+\setlength\hexgameboxwidth{0.45\textwidth}
+\newlength\hexgameheight
+\newlength\halfhexgameheight
+\newlength\hexgamewidth
+\newlength\halfhexgamewidth
+\newlength\startpointx
+\newlength\startpointy
+\newsavebox\hexgamebox
+\definecolor{playerone}{rgb}{0,0, .8}
+\definecolor{playertwo}{rgb}{0.8,0,0}
+\newcounter{hexboardsize}
+\newenvironment{hexgame}[1]
+ {\psset{unit=1cm,PstPicture=false}
+ \setcounter{hexboardsize}{#1}
+ \setlength\hexgamewidth{(#1\halfhexwidth*2)+(#1\halfhexwidth)+(\halfhexwidth)}
+ \setlength\hexgameheight{(#1\halfhexheight*2)+(\halfhexheight)}
+ \setlength\halfhexgameheight{0.5\hexgameheight}
+ \setlength\halfhexgamewidth{0.5\hexgamewidth}
+ \setlength\startpointx{0.5\hexgamewidth}
+ \setlength\startpointy{1.5\halfhexheight}
+ \begin{lrbox}{\hexgamebox}
+ \begin{pspicture}(\the\hexgamewidth,\the\hexgameheight)%
+ \psframe[fillstyle=solid,fillcolor=playerone,linewidth=0.8pt](0,0)(\the\halfhexgamewidth,\the\halfhexgameheight)
+ \psframe[fillstyle=solid,fillcolor=playerone,linewidth=0.8pt](\the\halfhexgamewidth,\the\halfhexgameheight)(\the\hexgamewidth,\the\hexgameheight)
+ \psframe[fillstyle=solid,fillcolor=playertwo,linewidth=0.8pt](0,\the\hexgameheight)(\the\halfhexgamewidth,\the\halfhexgameheight)
+ \psframe[fillstyle=solid,fillcolor=playertwo,linewidth=0.8pt](\the\halfhexgamewidth,\the\halfhexgameheight)(\the\hexgamewidth,0)
+ \psdiamond(\the\halfhexgamewidth,\the\halfhexgameheight)(\the\halfhexgamewidth,\the\halfhexgameheight)
+ \multirput(\the\startpointx,\the\startpointy)(1.5cm,\halfhexheight){#1}{
+ \multirput(0,0)(-1.5cm,\halfhexheight){#1}{\PstHexagon[linewidth=0.5pt,unit=1cm,fillstyle=solid,fillcolor=white]}}}
+ {\end{pspicture}
+ \end{lrbox}
+ \psscaleboxto(\the\hexgameboxwidth,0){\usebox{\hexgamebox}}}
+\newlength\refpointx
+\newlength\refpointy
+\newlength\nexthexx
+\newlength\nexthexy
+\newcounter{stepcounter}
+\newcounter{modulocounter}
+\newcounter{squaredboardsize}
+\newcommand\colorhex[2]{\setcounter{stepcounter}{\value{hexboardsize}}
+ \setcounter{modulocounter}{#1}
+ \setcounter{squaredboardsize}{\value{hexboardsize}*\value{hexboardsize}}
+ \ifthenelse{#1>\value{squaredboardsize}}{\PackageWarning{hexgame}{Number to big}}{
+ \setlength\refpointx{\startpointx}
+ \addtolength{\refpointx}{0.5mm}
+ \setlength\refpointy{\startpointy}
+ \whiledo{\value{stepcounter}<#1}{\addtocounter{stepcounter}{\value{hexboardsize}}
+ \addtolength{\refpointx}{-1.5\halfhexwidth}
+ \addtolength{\refpointy}{\halfhexheight}
+ \addtocounter{modulocounter}{-\value{hexboardsize}}}
+ \setlength\nexthexx{(\refpointx)+1.5\halfhexwidth*((\value{modulocounter})-1)}
+ \setlength\nexthexy{(\refpointy)+\halfhexheight*((\value{modulocounter})-1)}
+ \rput(\the\nexthexx,\the\nexthexy){\PstHexagon[linewidth=0.5pt,unit=1cm,fillstyle=solid,fillcolor=#2]}}}
+\newcommand\labelhex[2]{\setcounter{stepcounter}{\value{hexboardsize}}
+ \setcounter{modulocounter}{#1}
+ \setcounter{squaredboardsize}{\value{hexboardsize}*\value{hexboardsize}}
+ \ifthenelse{#1>\value{squaredboardsize}}{\PackageWarning{hexgame}{Number to big}}{
+ \setlength\refpointx{\startpointx}
+ \addtolength{\refpointx}{0.5mm}
+ \setlength\refpointy{\startpointy}
+ \whiledo{\value{stepcounter}<#1}{\addtocounter{stepcounter}{\value{hexboardsize}}
+ \addtolength{\refpointx}{-1.5\halfhexwidth}
+ \addtolength{\refpointy}{\halfhexheight}
+ \addtocounter{modulocounter}{-\value{hexboardsize}}}
+ \setlength\nexthexx{(\refpointx)+1.5\halfhexwidth*((\value{modulocounter})-1)}
+ \setlength\nexthexy{(\refpointy)+\halfhexheight*((\value{modulocounter})-1)}
+ \rput(\the\nexthexx,\the\nexthexy){\textbf{\large #2}}}}
+%%
+%% End of file `hexgame.sty'.
+
+