diff options
author | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-20 20:30:25 -0800 |
---|---|---|
committer | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-20 20:30:25 -0800 |
commit | d5bce3bba23a5ba4c296f1783ba277bcc206736c (patch) | |
tree | 64835daf9aeb54fa779e06426a777861d68195e4 /Source/Puzzle.cpp | |
parent | 6f0a34bfb761d965bd961dc1f880b84e35f9959f (diff) | |
download | witness-tutorializer-d5bce3bba23a5ba4c296f1783ba277bcc206736c.tar.gz witness-tutorializer-d5bce3bba23a5ba4c296f1783ba277bcc206736c.tar.bz2 witness-tutorializer-d5bce3bba23a5ba4c296f1783ba277bcc206736c.zip |
Some progress on symmetry.
Diffstat (limited to 'Source/Puzzle.cpp')
-rw-r--r-- | Source/Puzzle.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/Puzzle.cpp b/Source/Puzzle.cpp index d0ede27..2f399a7 100644 --- a/Source/Puzzle.cpp +++ b/Source/Puzzle.cpp | |||
@@ -27,6 +27,25 @@ void Puzzle::NewGrid(int newWidth, int newHeight) { | |||
27 | for (int x=0; x<width; x++) grid[x].resize(height); | 27 | for (int x=0; x<width; x++) grid[x].resize(height); |
28 | } | 28 | } |
29 | 29 | ||
30 | Pos Puzzle::GetSymmetricalPos(int x, int y) const { | ||
31 | if (symmetry != Symmetry::NONE) { | ||
32 | if (pillar) { | ||
33 | x += width/2; | ||
34 | if (symmetry & Symmetry::X) { | ||
35 | x = width - x; | ||
36 | } | ||
37 | } else { | ||
38 | if (symmetry & Symmetry::X) { | ||
39 | x = (width-1) - x; | ||
40 | } | ||
41 | } | ||
42 | if (symmetry & Symmetry::Y) { | ||
43 | y = (height-1) - y; | ||
44 | } | ||
45 | } | ||
46 | return Pos{x, y}; | ||
47 | } | ||
48 | |||
30 | int Puzzle::Mod(int x) const { | 49 | int Puzzle::Mod(int x) const { |
31 | if (!pillar) return x; | 50 | if (!pillar) return x; |
32 | return (x + width * height * 2) % width; | 51 | return (x + width * height * 2) % width; |