Board
Board
Representation of Board
Representation of Board
In[]:=
bd={11686282922941415355493027,7253554917687775048237045,7218924300030925557375733,7253554197100839384907765,16490244781409523165428135,16504485596616872653356199,7253370450247037952065525,7218856061489371493999349,7253554917676779931959285,15312936325352857506785958,109891396237601865728,109887830907940044800,10477288603294946054417058,17295229965476823040,10477233045576447273052834,109891244367558279168,109887830907940044800,11686215114307112556866211,7253554125059738289831925,7223522828427531474543605,7237745196890807252854517,7253554917687775048237045,7223523160079093336744949,7201718775884924390278645,7237745816781541426898677,7253554917676779931959285,15313060381789700926122662};
In[]:=
decode[bd_]:=Module[{board,bead,all},all=Map[IntegerDigits[#,16,21]&,bd];board=all;bead=all;board=board/.{150};bead=bead/.{1515,_Integer0};{board,bead}];{board,beads}=decode[bd];
In[]:=
board//Grid
Out[]=
9 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 3 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
5 | 0 | 8 | 10 | 10 | 10 | 11 | 10 | 2 | 0 | 1 | 0 | 8 | 10 | 11 | 10 | 10 | 10 | 2 | 0 | 5 |
5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 5 |
13 | 10 | 3 | 0 | 1 | 0 | 5 | 0 | 9 | 10 | 14 | 10 | 3 | 0 | 5 | 0 | 1 | 0 | 9 | 10 | 7 |
13 | 10 | 6 | 0 | 5 | 0 | 4 | 0 | 12 | 10 | 10 | 10 | 6 | 0 | 4 | 0 | 5 | 0 | 12 | 10 | 7 |
5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 |
5 | 0 | 8 | 10 | 6 | 0 | 8 | 10 | 2 | 0 | 1 | 0 | 8 | 10 | 2 | 0 | 12 | 10 | 2 | 0 | 5 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
12 | 10 | 10 | 10 | 3 | 0 | 1 | 0 | 9 | 10 | 14 | 10 | 3 | 0 | 1 | 0 | 9 | 10 | 10 | 10 | 6 |
0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 12 | 10 | 10 | 10 | 6 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 |
8 | 10 | 10 | 10 | 6 | 0 | 4 | 0 | 9 | 10 | 10 | 10 | 3 | 0 | 4 | 0 | 12 | 10 | 10 | 10 | 2 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
8 | 10 | 10 | 10 | 3 | 0 | 1 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 1 | 0 | 9 | 10 | 10 | 10 | 2 |
0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 12 | 2 | 0 | 8 | 6 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 |
9 | 10 | 10 | 10 | 6 | 0 | 13 | 10 | 2 | 0 | 1 | 0 | 8 | 10 | 7 | 0 | 12 | 10 | 10 | 10 | 3 |
5 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 5 |
5 | 0 | 9 | 10 | 3 | 0 | 5 | 0 | 9 | 10 | 14 | 10 | 3 | 0 | 5 | 0 | 9 | 10 | 3 | 0 | 5 |
5 | 0 | 12 | 10 | 6 | 0 | 4 | 0 | 12 | 10 | 10 | 10 | 6 | 0 | 4 | 0 | 12 | 10 | 6 | 0 | 5 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
5 | 0 | 9 | 10 | 3 | 0 | 9 | 10 | 3 | 0 | 1 | 0 | 9 | 10 | 3 | 0 | 9 | 10 | 3 | 0 | 5 |
5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 | 0 | 5 |
5 | 0 | 12 | 10 | 6 | 0 | 12 | 10 | 6 | 0 | 5 | 0 | 12 | 10 | 6 | 0 | 12 | 10 | 6 | 0 | 5 |
5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 5 |
12 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 14 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 6 |
Beads on the board
Beads on the board
In[]:=
beads//Grid
Out[]=
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 0 | 0 | 15 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 15 | 0 | 0 | 0 |
0 | 0 | 0 | 15 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 15 | 0 | 0 | 0 |
0 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 15 | 0 | 0 | 0 | 15 | 0 | 0 | 0 | 15 | 0 |
0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 15 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Modular boards
Modular boards
In[]:=
gX[x_]:=Mod[x,21]+1;gY[y_]:=Mod[y,27]+1;
Objects on Board:
Objects on Board:
In[]:=
drawCell[k_,{y_,x_}]:=If[k==15,Disk[{x,y},0.2],{If[BitAnd[k,1]1,Line[{{x,y},{x,y+1/2}}],Nothing],If[BitAnd[k,2]2,Line[{{x,y},{x-1/2,y}}],Nothing],If[BitAnd[k,4]4,Line[{{x,y},{x,y-1/2}}],Nothing],If[BitAnd[k,8]8,Line[{{x,y},{x+1/2,y}}],Nothing]}]
In[]:=
Table[Graphics[{Blue,Thick,drawCell[i,{1,1}]},PlotRange{{0,2},{0,2}}],{i,1,14}]
Out[]=
,
,
,
,
,
,
,
,
,
,
,
,
,
In[]:=
drawBead[bd_]:={Green,Flatten@MapIndexed[drawCell,bd,{2}]}
In[]:=
drawBoard[bd_]:={Blue,Thick,Flatten@MapIndexed[drawCell,bd,{2}]}
In[]:=
Graphics[{drawBoard[board],drawBead[beads]}]
Out[]=
Draw 4 ghosts
Draw 4 ghosts
Draw pacman, pacman is represented as {x,y,s,d}, position {x,y} move in direction d and width of mouth s.
Draw pacman, pacman is represented as {x,y,s,d}, position {x,y} move in direction d and width of mouth s.
Movement
Movement
give next move coordinates {x, y} move delta in direction d:
give next move coordinates {x, y} move delta in direction d:
test if objects at {x,y} could move delta position in direction d on board bd.
test if objects at {x,y} could move delta position in direction d on board bd.
Ghost movement, ghost is represented as {x, y, d}, position {x, y} and current move direction d.
Ghost movement, ghost is represented as {x, y, d}, position {x, y} and current move direction d.
Pacman {x,y,s,d} and 4 ghosts {x1,y1,d1},{x2,y2,d2}, {x3,x3,d3},{x4,y4,d4}:
Pacman {x,y,s,d} and 4 ghosts {x1,y1,d1},{x2,y2,d2}, {x3,x3,d3},{x4,y4,d4}: