summary refs log tree commit diff
path: root/bin/freecell.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-04-19 17:56:04 -0400
committerJune McEnroe <june@causal.agency>2021-04-26 17:33:20 -0400
commit405aaeb546b6ef2ae25a024c3e2cdc0c73b7d525 (patch)
tree3c57363bd980a6e5a243da6c3e5b66e81f0fda07 /bin/freecell.c
parentRemove samba_mdns rc script (diff)
downloadsrc-405aaeb546b6ef2ae25a024c3e2cdc0c73b7d525.tar.gz
src-405aaeb546b6ef2ae25a024c3e2cdc0c73b7d525.zip
Only use cells for moveColumn
So long as the move queuer doesn't use empty tableau stacks correctly,
it shouldn't use them at all. This way it's easier to do the correct
moves manually.
Diffstat (limited to 'bin/freecell.c')
-rw-r--r--bin/freecell.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/bin/freecell.c b/bin/freecell.c
index d544590e..7c0f9ee6 100644
--- a/bin/freecell.c
+++ b/bin/freecell.c
@@ -173,10 +173,9 @@ static void moveSingle(uint dst, uint src) {
 	enq(dst, src);
 }
 
-static uint freeCells(uint cells[static Stacks], uint dst) {
+static uint freeCells(uint cells[static 4]) {
 	uint len = 0;
-	for (uint i = Cell; i < Stacks; ++i) {
-		if (i == dst) continue;
+	for (uint i = Cell; i < Tableau; ++i) {
 		if (!stacks[i].len) cells[len++] = i;
 	}
 	return len;
@@ -195,8 +194,8 @@ static uint moveDepth(uint src) {
 
 static void moveColumn(uint dst, uint src) {
 	uint depth;
-	uint cells[Stacks];
-	uint free = freeCells(cells, dst);
+	uint cells[4];
+	uint free = freeCells(cells);
 	for (depth = moveDepth(src); depth; --depth) {
 		if (free < depth-1) continue;
 		if (valid(dst, stacks[src].cards[stacks[src].len-depth])) break;