aboutsummaryrefslogtreecommitdiff
path: root/engines/avalanche/nim.cpp
diff options
context:
space:
mode:
authoruruk2013-12-20 09:22:45 +0100
committeruruk2013-12-20 09:22:45 +0100
commitd3d2f6060e8e1fe4ca9c202cd7bef9717dc198d1 (patch)
treefd470da99cac65ded537cdc2a510b07b79265d30 /engines/avalanche/nim.cpp
parent876e225c33c0fed6f064b98e89cd8acc6881b080 (diff)
downloadscummvm-rg350-d3d2f6060e8e1fe4ca9c202cd7bef9717dc198d1.tar.gz
scummvm-rg350-d3d2f6060e8e1fe4ca9c202cd7bef9717dc198d1.tar.bz2
scummvm-rg350-d3d2f6060e8e1fe4ca9c202cd7bef9717dc198d1.zip
AVALANACHE: Minor bug fix and coding convention fix.
Diffstat (limited to 'engines/avalanche/nim.cpp')
-rw-r--r--engines/avalanche/nim.cpp93
1 files changed, 48 insertions, 45 deletions
diff --git a/engines/avalanche/nim.cpp b/engines/avalanche/nim.cpp
index c0ada304f8..7e3382a3e3 100644
--- a/engines/avalanche/nim.cpp
+++ b/engines/avalanche/nim.cpp
@@ -258,7 +258,10 @@ void Nim::takeSome() {
do {
sr = _stones[_row];
if (sr == 0) {
- _row = _row % 2 + 1;
+ if (_row == 2)
+ _row = 0;
+ else
+ _row++;
_number = 1;
}
} while (sr == 0);
@@ -393,53 +396,53 @@ void Nim::dogFood() {
}
return;
case 3: {
- // Ho hum... this'll be difficult!
- // There are three possible courses of action when we have 3 lines left:
- // 1) Look for 2 equal lines, then take the odd one out.
- // 2) Look for A.P.s, and capitalise on them.
- // 3) Go any old where.
- const byte other[3][2] = { { 2, 3 }, { 1, 3 }, { 1, 2 } };
-
- for (int i = 0; i < 3; i++) { // Look for 2 equal lines.
- if (_stones[other[i][0]] == _stones[other[i][1]]) {
- _row = i; // This row.
- _number = _stones[i]; // All of 'em.
- return;
- }
- }
+ // Ho hum... this'll be difficult!
+ // There are three possible courses of action when we have 3 lines left:
+ // 1) Look for 2 equal lines, then take the odd one out.
+ // 2) Look for A.P.s, and capitalise on them.
+ // 3) Go any old where.
+ const byte other[3][2] = { { 2, 3 }, { 1, 3 }, { 1, 2 } };
+
+ for (int i = 0; i < 3; i++) { // Look for 2 equal lines.
+ if (_stones[other[i][0]] == _stones[other[i][1]]) {
+ _row = i; // This row.
+ _number = _stones[i]; // All of 'em.
+ return;
+ }
+ }
- bool sorted;
- do {
- sorted = true;
- for (int i = 0; i < 2; i++) {
- if (sr[i] > sr[i + 1]) {
- byte temp = sr[i + 1];
- sr[i + 1] = sr[i];
- sr[i] = temp;
-
- temp = _r[i + 1];
- _r[i + 1] = _r[i];
- _r[i] = temp;
-
- sorted = false;
- }
- }
- } while (!sorted);
-
- // Now we look for A.P.s...
- for (int i = 0; i < 3; i++) {
- findAp(i, 1); // There are 3 "1"s.
- if (_lmo)
- return; // Cut - out.
+ bool sorted;
+ do {
+ sorted = true;
+ for (int i = 0; i < 2; i++) {
+ if (sr[i] > sr[i + 1]) {
+ byte temp = sr[i + 1];
+ sr[i + 1] = sr[i];
+ sr[i] = temp;
+
+ temp = _r[i + 1];
+ _r[i + 1] = _r[i];
+ _r[i] = temp;
+
+ sorted = false;
}
- findAp(1, 2); // Only "2" possible.
- if (_lmo)
- return;
+ }
+ } while (!sorted);
- // A.P.search must have failed - use the default move.
- _row = _r[2];
- _number = 1;
- return;
+ // Now we look for A.P.s...
+ for (int i = 0; i < 3; i++) {
+ findAp(i, 1); // There are 3 "1"s.
+ if (_lmo)
+ return; // Cut - out.
+ }
+ findAp(1, 2); // Only "2" possible.
+ if (_lmo)
+ return;
+
+ // A.P.search must have failed - use the default move.
+ _row = _r[2];
+ _number = 1;
+ return;
}
default:
break;