Revision: 3806
          http://vexi.svn.sourceforge.net/vexi/?rev=3806&view=rev
Author:   clrg
Date:     2010-02-18 00:08:38 +0000 (Thu, 18 Feb 2010)

Log Message:
-----------
Fix board generation process (now delivers valid boards)

Modified Paths:
--------------
    trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t
    trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t
    trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t
    trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t

Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t
===================================================================
--- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t  
2010-02-17 18:50:41 UTC (rev 3805)
+++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/board.t  
2010-02-18 00:08:38 UTC (rev 3806)
@@ -17,9 +17,14 @@
         thisbox.completed = 0;
         
         var complFunc = function(v) {
-            if (v > 9) throw "More than 9 completed numbers not possible";
-            if (v == 9) completed ++;
-            else if (trapee.completed == 9) completed --;
+            if (v > 9) {
+                throw "More than 9 completed numbers not possible";
+            }
+            if (v == 9) {
+                completed ++;
+            } else if (trapee.completed == 9) {
+                completed --;
+            }
             cascade = v;
         }
         
@@ -27,20 +32,36 @@
             var i = $sectors.indexof(s);
             switch(v) {
             case "up":
-                if (3 > i) true; // do nothing
-                else $sectors[i-3][ni].focused = true;
+                if (3 > i) {
+                    // do nothing
+                    true;
+                } else {
+                    $sectors[i-3][ni].focused = true;
+                }
                 break;
             case "down":
-                if (i > 5) true; // do nothing
-                else $sectors[i+3][ni].focused = true;
+                if (i > 5) {
+                    // do nothing
+                    true;
+                } else {
+                    $sectors[i+3][ni].focused = true;
+                }
                 break;
             case "left":
-                if (i%3 == 0) true; // do nothing
-                else $sectors[i-1][ni].focused = true;
+                if (i%3 == 0) {
+                    // do nothing
+                    true;
+                } else {
+                    $sectors[i-1][ni].focused = true;
+                }
                 break;
             case "right":
-                if (i%3 == 2) true; // do nothing
-                else $sectors[i+1][ni].focused = true;
+                if (i%3 == 2) {
+                    // do nothing
+                    true;
+                } else {
+                    $sectors[i+1][ni].focused = true;
+                }
                 break;
             }
         }
@@ -48,23 +69,33 @@
         var numberCheck = function(s, ni, n) {
             var si = $sectors.indexof(s);
             
-            // clear number
             if (n == "") {
+                // clear number
                 if ($sectors[si][ni].value == null) return false;
                 $sectors[si][ni].value = null;
                 return true;
             }
             
-            // already filled in with this number
-            if ($sectors[si][ni].value == n) return false;
+            if ($sectors[si][ni].value == n) {
+                // already filled in with this number
+                return false;
+            }
             
             // check row for number
             for (var i=0; 9>i; i++) {
-                if (i-(i%3) != si-(si%3)) continue;
+                if (i-(i%3) != si-(si%3)) {
+                    continue;
+                }
                 for (var j=0; 9>j; j++) {
-                    if (si == i and ni == j) continue;
-                    if (j-(j%3) != ni-(ni%3)) continue;
-                    if ($sectors[i][j].value != n) continue;
+                    if (si == i and ni == j) {
+                        continue;
+                    }
+                    if (j-(j%3) != ni-(ni%3)) {
+                        continue;
+                    }
+                    if ($sectors[i][j].value != n) {
+                        continue;
+                    }
                     $sectors[i][j].highlight();
                     return false;
                 }
@@ -72,11 +103,19 @@
             
             // check column for number
             for (var i=0; 9>i; i++) {
-                if (i%3 != si%3) continue;
+                if (i%3 != si%3) {
+                    continue;
+                }
                 for (var j=0; 9>j; j++) {
-                    if (j%3 != ni%3) continue;
-                    if (si == i and ni == j) continue;
-                    if ($sectors[i][j].value != n) continue;
+                    if (j%3 != ni%3) {
+                        continue;
+                    }
+                    if (si == i and ni == j) {
+                        continue;
+                    }
+                    if ($sectors[i][j].value != n) {
+                        continue;
+                    }
                     $sectors[i][j].highlight();
                     return false;
                 }
@@ -84,9 +123,15 @@
           
             // check sector for number
             for (var i=0; 9>i; i++) {
-                if (i == ni) continue;
-                if ($sectors[si][i].value == null) continue;
-                if ($sectors[si][i].value != n) continue;
+                if (i == ni) {
+                    continue;
+                }
+                if ($sectors[si][i].value == null) {
+                    continue;
+                }
+                if ($sectors[si][i].value != n) {
+                    continue;
+                }
                 $sectors[si][i].highlight();
                 return false;
             }
@@ -104,22 +149,36 @@
         }
         
         // only clear player-entered values
-        thisbox.clear = function() {
-            for (var i=0; 9>i; i++) $sectors[i].clear();
+        thisbox.clearValues = function() {
+            for (var i=0; 9>i; i++) {
+                $sectors[i].clearValues();
+            }
         }
         
         // reset entire board
         thisbox.reset = function() {
-            for (var i=0; 9>i; i++) $sectors[i].reset();
+            for (var i=0; 9>i; i++) {
+                $sectors[i].reset();
+            }
         }
         
+        /** okay I implemented board generation and board
+         *  layout differently, so sue me, bad programmer
+         */
+        var getSq = function(row, col) {
+            var i = 3*vexi.math.floor(row/3) + vexi.math.floor(col/3);
+            var j = 3*(row%3) + col%3;
+            return $sectors[i][j];
+        }
+        
         thisbox.setupBoard = function(level) {
             var grid = new .simple();
             for (var i=0; 9>i; i++) {
                 for (var j=0; 9>j; j++) {
+                    var sq = getSq(i,j);
                     //if (board[i][j] > -1) {
-                        $sectors[i][j].value = grid.get(i, j);
-                        $sectors[i][j].numset = true;
+                        sq.value = grid.get(i, j);
+                        sq.numset = true;
                     //}
                 }
             }

Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t
===================================================================
--- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t   
2010-02-17 18:50:41 UTC (rev 3805)
+++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/main.t   
2010-02-18 00:08:38 UTC (rev 3806)
@@ -48,8 +48,9 @@
         
         $start.action ++= function(v) {
             $sudoku.reset();
-            if ($gametype.text != "Empty Board")
+            if ($gametype.text != "Empty Board") {
                 $sudoku.setupBoard($gametype.text.toLowerCase());
+            }
             show = $board;
             return;
         }

Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t
===================================================================
--- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t 
2010-02-17 18:50:41 UTC (rev 3805)
+++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/sector.t 
2010-02-18 00:08:38 UTC (rev 3806)
@@ -22,31 +22,49 @@
         
         var numberMove = function(n, v) {
             var i = $numbers.indexof(n);
-            if (i == -1) throw "Illegal number index";
+            if (i == -1) {
+                throw "Illegal number index";
+            }
             switch(v) {
             case "up":
-                if (3 > i) move(thisbox, v, i+6);
-                else $numbers[i-3].focused = true;
+                if (3 > i) {
+                    move(thisbox, v, i+6);
+                } else {
+                    $numbers[i-3].focused = true;
+                }
                 break;
             case "down":
-                if (i > 5) move(thisbox, v, i-6);
-                else $numbers[i+3].focused = true;
+                if (i > 5) {
+                    move(thisbox, v, i-6);
+                } else {
+                    $numbers[i+3].focused = true;
+                }
                 break;
             case "left":
-                if (i%3 == 0) move(thisbox, v, i+2);
-                else $numbers[i-1].focused = true;
+                if (i%3 == 0) {
+                    move(thisbox, v, i+2);
+                } else {
+                    $numbers[i-1].focused = true;
+                }
                 break;
             case "right":
-                if (i%3 == 2) move(thisbox, v, i-2);
-                else $numbers[i+1].focused = true;
+                if (i%3 == 2) {
+                    move(thisbox, v, i-2);
+                } else {
+                    $numbers[i+1].focused = true;
+                }
                 break;
             }
         }
         
         var numberCheck = function(n, v) {
             var ret = check(thisbox, $numbers.indexof(n), v);
-            if (ret and v != "" and $numbers.value == "") completed++;
-            if (ret and v == "") completed--;
+            if (ret and v != "" and $numbers.value == "") {
+                completed++;
+            }
+            if (ret and v == "") {
+                completed--;
+            }
             return ret;
         }
         
@@ -55,9 +73,12 @@
             $numbers[i].check = numberCheck;
         }
         
-        thisbox.clear = function() {
-            for (var i=0; 9>i; i++)
-            if (!$numbers[i].numset) $numbers[i].value = "";
+        thisbox.clearValues = function() {
+            for (var i=0; 9>i; i++) {
+                if (!$numbers[i].numset) {
+                    $numbers[i].value = "";
+                }
+            }
         }
         
         thisbox.reset = function() {

Modified: trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t
===================================================================
--- trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t 
2010-02-17 18:50:41 UTC (rev 3805)
+++ trunk/xtra/org.vexi.simplysudoku/src/org/vexi/simplysudoku/simple.t 
2010-02-18 00:08:38 UTC (rev 3806)
@@ -55,7 +55,7 @@
         var swapCols = function(c1, c2) {
             // have to do it 1 cell at a time since
             // grid is specified by row, not by col
-            for (var i=0; 8>i; i++) {
+            for (var i=0; 9>i; i++) {
                 var cell1 = grid[i][c1];
                 var cell2 = grid[i][c2];
                 grid[i][c1] = cell2;
@@ -64,6 +64,8 @@
         }
         
         var swapRowSet = function(rs1, rs2) {
+            rs1 = rs1%3;
+            rs2 = rs2%3;
             // swap two sets of 3 rows
             for (var i=0; 3>i; i++) {
                 var row1 = grid[3*rs1+i];
@@ -74,9 +76,11 @@
         }
         
         var swapColSet = function(cs1, cs2) {
+            cs1 = cs1%3;
+            cs2 = cs2%3;
             // swap two sets of 3 cols
             for (var i=0; 3>i; i++) {
-                for (var j=0; 8>j; j++) {
+                for (var j=0; 9>j; j++) {
                     var cell1 = grid[j][3*cs1+i];
                     var cell2 = grid[j][3*cs2+i];
                     grid[j][3*cs1+i] = cell2;
@@ -85,6 +89,13 @@
             }
         }
         
+        var printgrid = function() {
+            for (var i=0; 9>i; i++) { 
+                vexi.trace(grid[i]);
+            }
+            vexi.trace("===========================");
+        }
+        
         var generate = function() {
             for (var i=0; 8>i; i++) {
                 var off = 6>i ? 3*(i%3) : 0;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs 
proactively, and fine-tune applications for parallel performance. 
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to